Guided Automation In Service Oriented Application Design


There are two major trends in enterprise development today. One is that the scenarios and environments are becoming more and more complex and the other is to align business capabilities with IT by implementing service oriented components and following service oriented patterns.


Microsoft is constantly looking for ways to support both trends and help enterprises to implement services that support business requirements and business capabilities quickly and flexible with highest quality possible respecting common architectural patterns and best practices.
Two results of these efforts are the standardized web services technology on the one hand where Microsoft has a leading role and the Software Factory paradigm on the other. One combination of both is the Web Service Software Factory (WSSF) freely available from Microsoft here.
The WSSF is build on top of the Guidance Automation Extensions and the Guidance Automation Toolkit and it enables architects and developers to easily design and build business components based on service oriented patterns and technologies. Easily means that the Software Factory itself introduces and generates a development project structure that represents a clean separation of the service, data access and business entity layers. Most of the production code is generated by walking through the various wizards of the factory called recipes. So it minimizes the raw coding effort to a minimum while providing enterprise class code, enterprise class structure and enterprise class architecture while still being customizable to the specific needs of a certain role or organization.
In order to ramp-up quickly with the service factory a Hands-On lab is available here in the downloads section.
It's quite easy to walk trough the lab and to understand what is happening under the covers of the factory so I recommend you try it out yourself.


There are a few minor flaws in the helper code and the documentation of the lab therefore I provide a version where I corrected some issues here. For example the sql-file that creates tables, views and stored procedures is now working as desired with the three letter prefixes of the table names and properties. The namespaces in the helper code was also corrected and some other minor things have been changed. Just merge the files in archive with the original lab folders. In order to keep the size of the archive down I only provided one final and complete solution in the "Complete" folder of exercise 10.


Now just three more things to mention:


- In Exercise 2 to 3 - You need to do a build in order to be able to choose the Types created from the XSD if you don't use the projects provided in the exercise folders but develop yours incrementally
- In Exercise 5 - ClubMember Class in ClubMember.custom.cs inherits from Members instead of Member
- There are issues with naming of *Details vs. Detail and *Preferences vs. Preference throughout the whole lab


 Finally if you want to know more about software factories and the approach Microsoft is taking and how this may be related to other industry trends like Model Drive Architecture (MDA) you can find more information on MSDN.


Comments (2)
  1. Kris says:

    I happened to come across WSSF and a webcast by Don Smith. I personally believe it adds a lot of value for .NET enterprise developers adopting an SOA based architecture. It is possible to create Business Entities using Db JOINS cause in our enterprise we have multiple databases and sometimes the data for Business Entities come from JOINS on tables across the DBs. Another question – Do the Data Types generated by compiling the XSD support any validation logic if the schema specifies it (for instance Enums in the schema)?

    Thanks.

  2. Alex Strauss says:

    Hi,

    from my observation and a simple test at least for enumerations in an XSD the answer is yes. When the data type is generated it 1. creates a enumeration with the restriction base in the data type as well and 2. The property relating to the enumeration type does obviously only return and accept valid enumeration values.

    For the DB Joins my guess would be also yes but I have to check on that, too when I find time.

    Regards

    Alex

Comments are closed.

Skip to main content