Help me with the plumbing - factories, application blocks and more

 

Happy New Year!  As we begin 2007 I thought I'd take the time to address a recurring question I hear on occassion as I meet with developers and architects throughout my community.  The question is, what does Microsoft offer regarding out-of-the-box frameworks to help companies standardize some of the plumbing needed to build applications so that development teams can remain focused on building solutions that address the business needs of the organization?  Not to dive into the particulars here or debate whether or not the customer was truly asking for a framework or did they really mean a facorty or application block, I elected to focus on providing high-level guidance on what our patterns and practices team provides on MSDN to empower our .NET development community with guidance to build highly scaleable, robust, perfomant and secure applications for their environment.  The following should help you better understand our efforts in this area.

The best place to get your arms around our approach to enterprise application development is at our patterns & practices on MSDN site.  Microsoft patterns & practices are Microsoft's recommendations for how to design, develop, deploy, and operate architecturally sound applications for the Microsoft application platform.  Microsoft patterns & practices contain deep technical guidance and tested source code based on real-world experience. The technical guidance is created, reviewed, and approved by Microsoft architects, product teams, consultants, product support engineers, and by Microsoft partners and customers. The result is a thoroughly engineered and tested set of recommendations that you can follow with confidence when building your applications.

We offer a free download called the Enterprise Library 2.0.  Enterprise Library is a library of application blocks designed to assist developers with common enterprise development challenges. Application blocks are a type of guidance, provided as source code that can be used "as is," extended, or modified by developers to use on enterprise development projects. This release of Enterprise Library provides similar functionality to the previous releases for the .NET Framework 1.1; however, Enterprise Library has been redesigned to use the new capabilities of the .NET Framework 2.0.  Recently, we released our first Community Technology Preview release of Enterprise Library 3.0 to our new CodePlex site.

Input from the architecture and developer community is important in the development of our application blocks and software factories.  Please refer to these sites for additional guidance from Microsoft and the community on a number of other fronts.

  • Web Client Software Factor Community The Web Client Software Factory is a guidance offering currently under development that will provide comprehensive architecture guidance to help customers build Composite Web Clients using the Microsoft platform (ASP.NET 2.0 and Workflow Foundation, etc).
  • Web Service Software Factory Community  The Service Factory is a cohesive set of guidance that will help you consistently build high quality Web services with less time and effort. In addition to written and executable guidance, the Service Factory helps you automate the application of proven practices while you are building the service in Visual Studio 2005. Join the community today and find out what all of the excitement is about.
  • Smart Client Software Factory Community This Software Factory extends Visual Studio 2005 with additional guidance that helps to demystify and automate designing and developing occasionally-connected smart client applications. The resulting application architecture is both extensible and fully customizable.
  • Mobile Client Software Factory Community This Software Factory extends Visual Studio 2005 with additional guidance for building occasionally-connected Mobile solutions, based upon proven desktop application patterns such as those implemented in the patterns & practices Composite UI Application Block.
  • Composite UI Application Block This application block is a reusable, source code–based component based on the Microsoft .NET Framework 2.0. It provides proven practices to build complex smart client user interfaces based on well known design patterns such as the Composite pattern, in which simple user interface parts can be combined to create complex solutions, but at the same time allowing these parts to be independently developed, tested, and deployed.
  • Object Builder Community Object Builder is a framework for building dependency injection systems.

For additional information on our factory offerings, application blocks, guides and reference implementations, see our patterns and practices documentation at MSDN https://msdn2.microsoft.com/en-us/library/ms998572.aspx.

Lastly, we just released our latest version of the Web Service Software Factory (WCF Release).  As mentioned above the Web Service Software Factory (also known as the Service Factory) is an integrated collection of tools, patterns, source code and prescriptive guidance that helps our customers quickly and consistently construct Web services that adhere to well known architecture and design patterns. The Service Factory provides guidance that addresses many of the challenges associated with building WCF and ASP.NET Web services and the components of a distributed application. These challenges include:

  • Designing WCF and ASMX messages and service interfaces.
  • Creating service contracts from existing WSDL and XSD files.
  • Applying exception shielding and exception handling.
  • Designing business entities in the domain model.
  • Translating messages to and from business entities.
  • Designing, building, and invoking the data access layer.
  • Validating many aspects of the service using code analysis.
  • Applying message-level security to WCF services.
  • Planning for the migration to WCF.
  • Applying message validation.

For more information on the Services Factory check out these resources

I hope you find this information useful.