EFx Factory
Encyclopedia
The EFx Factory is a pioneering Architectural Guidance Software Factory
Software factory
In software engineering and enterprise software architecture, a software factory is an organizational structure that specializes in producing computer software applications or software components according to specific, externally-defined end-user requirements through an assembly process...

 from Microsoft
Microsoft
Microsoft Corporation is an American public multinational corporation headquartered in Redmond, Washington, USA that develops, manufactures, licenses, and supports a wide range of products and services predominantly related to computing through its various product divisions...

, and one of the first implementations of a software factory
Software factory
In software engineering and enterprise software architecture, a software factory is an organizational structure that specializes in producing computer software applications or software components according to specific, externally-defined end-user requirements through an assembly process...

 to be built.

The ‘EFx Factory’ implements the .NET Distributed Architecture for Service-Oriented
Service-oriented architecture
In software engineering, a Service-Oriented Architecture is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components that can be reused for...

 applications and services.

The factory is based upon an Architectural Application Framework called Enterprise Framework that describes a physical Microsoft .NET architecture leveraging Microsoft Enterprise Library
Microsoft Enterprise Library
The Microsoft Enterprise Library is a set of tools and programming libraries for the Microsoft .NET Framework. It provides an API to facilitate proven practices in core areas of programming including data access, security, logging, exception handling and others...

 and other service-oriented patterns from Microsoft patterns & practices.
The EFX Factory was designed and built by development consultants within Microsoft Consulting Services in response to customer demand for an implementation of the .NET Architecture, best practices for .NET development, and guidance on best use of Enterprise Library
Microsoft Enterprise Library
The Microsoft Enterprise Library is a set of tools and programming libraries for the Microsoft .NET Framework. It provides an API to facilitate proven practices in core areas of programming including data access, security, logging, exception handling and others...

 and a number of other application blocks freely available from Microsoft
Microsoft
Microsoft Corporation is an American public multinational corporation headquartered in Redmond, Washington, USA that develops, manufactures, licenses, and supports a wide range of products and services predominantly related to computing through its various product divisions...

.

History

Initially, (circa 2003, .NET Framework 1.0-1.1, Visual Studio 2002–2003) ‘Enterprise Framework’ (EFx) was built to meet growing customer demand for an implementation of the .NET architecture. The framework was based upon implementation patterns harvested from several enterprise solution implementations, for various customers. This framework implemented the layered .NET architecture and leveraged, and extended Enterprise Library
Microsoft Enterprise Library
The Microsoft Enterprise Library is a set of tools and programming libraries for the Microsoft .NET Framework. It provides an API to facilitate proven practices in core areas of programming including data access, security, logging, exception handling and others...

 to provide a complete framework for authoring applications and services on the .NET platform.

This application framework evolved along with changes in the .NET platform, emerging Microsoft technologies and changes in industry service orientation
Service-orientation
Service-orientation is a design paradigm to build computer software in the form of services. Like other design paradigms , service-orientation provides a governing approach to automate business logic as distributed systems...

 patterns. The framework delivered a set of class libraries containing base implementations of the architectural layers prescribing certain technologies (such as ASMX), and ‘infrastructural services’ which developers used to address the cross-cutting concerns for the architectural layers: Exception handling
Exception handling
Exception handling is a programming language construct or computer hardware mechanism designed to handle the occurrence of exceptions, special conditions that change the normal flow of program execution....

, Authentication
Authentication
Authentication is the act of confirming the truth of an attribute of a datum or entity...

, Authorization
Authorization
Authorization is the function of specifying access rights to resources, which is related to information security and computer security in general and to access control in particular. More formally, "to authorize" is to define access policy...

, Logging etc. The framework extended Enterprise Library, and implemented several real-world security providers necessary for many customers of the time with heterogeneous technology environments. In addition, many best practice patterns, specifically concerning exception handling were built upon Enterprise Library to solve these requirements in an enterprise context. The framework also provided blocks that were not packaged in Enterprise Library, such as a validation block. It provided useful abstractions of Enterprise Library specific to this solution domain, that offered simplified APIs, and the framework unified the API with typing of string parameters.

The framework was delivered (in source form) as a set of framework assemblies, packaged with Enterprise Library. The framework included a suggested set of solutions, Reference Implementation (RI) and documentation. From this, the developers created their client side applications and server side ASP.NET
ASP.NET
ASP.NET is a Web application framework developed and marketed by Microsoft to allow programmers to build dynamic Web sites, Web applications and Web services. It was first released in January 2002 with version 1.0 of the .NET Framework, and is the successor to Microsoft's Active Server Pages ...

 web service
Web service
A Web service is a method of communication between two electronic devices over the web.The W3C defines a "Web service" as "a software system designed to support interoperable machine-to-machine interaction over a network". It has an interface described in a machine-processable format...

s. Development of an application or service required a developer to create a new solution and implement a set of assemblies (one for each layer), that referenced the framework assemblies. These were then deployed as an executable application or web service.

The primary challenge for developers was learning the patterns of the framework, and hand crafting the applications and services from blank solutions, without availability (at that time) of code templates. This resulted in prolific cut and pasting of code from the Reference Implementation code, itself highly vulnerable to manual error.

Circa 2005, several technologies emerged from Microsoft that enabled the use of templates, automation and modeling of these types of applications and services, including: Visual Studio 2005, Visual Studio Modeling (Distributed Application and System Designers), the Guidance Automation Toolkit GAT, and the Domain-Specific Language Toolkit (DSL). Using these new technologies, the framework was able to evolve systematically into an implementation of a software factory
Software factory
In software engineering and enterprise software architecture, a software factory is an organizational structure that specializes in producing computer software applications or software components according to specific, externally-defined end-user requirements through an assembly process...

. In that process, many of the constraints of the framework were lifted to enable further flexibility of the products which the factory could assemble. Primarily - the removal of the prescription of technology in the architectural layers, and the ability to deal effectively with change during the development of the applications and services. The factory introduced, through domain modeling
Domain-Specific Modeling
Domain-specific modeling is a software engineering methodology for designing and developing systems, such as computer software. It involves systematic use of a domain-specific language to represent the various facets of a system...

, several new abstractions and utilized automation that were previously not possible.

This factory was one of the first factories to combine DSL diagrams with GAT recipes, as well as extending the Distributed Application and System Designers of Visual Studio with GAT recipes. The factory makes extensive use of recipes: for automating changes to solution structure and property changes to that structure, providing wizards to configure the models the factory provides, generating project templates for work products and automating menial tasks for the factory user.

Circa 2006-2007, development on the EFx Factory was ceased as an offering from Microsoft Consulting Services, and many of the concepts it had pioneered are to be absorbed by the future software factory platform from Microsoft, and adopted by software factories from patterns & practices (such as the Web Service Software Factory).

Core features

The following list exemplifies the features of this factory from others of its period.

Architectural Product Model

The factory was one of the first factories to be designed on a factory 'Product Model' (part of the factory schema), and the factory provides a logical architectural view (and supporting runtime) for creating/modifying the work products of the factory, for the developer. This logical model separates the logical design of the factory product ‘Product Explorer’ from the physical implementation normally viewed and modified in ‘Solution Explorer’ of Visual Studio. In this way the physical structure of the solution artifacts could be separated from the logical architectural structure of the work products of the product. The factory user could now focus upon the architecture of the product, and author it using models and other abstractions, whilst the factory manages the creation, and placement of its source artifacts.

Distributed application and system designer integration

The factory integrates with, and extends, the Distributed Application and System Designers installed with Visual Studio Team Edition for Software Architects. The Visual Studio provided diagrams such as the Application Designer and System Designers provide a means to define the high-level application (and services) in an enterprise and compose those into black box systems, which themselves can be composed into larger systems. The factory extends these designers to add a number of new shapes representing the implementation of those applications and services. These new shapes can then be implemented to provide the specific projects and solution templates to represent their physical structure in the factory product. These templates added a new set of diagram files to represent the internal component parts of the application and service layers. These diagrams define the specification of the application or service layers, and give the user a navigation path (drill-down) from the high-level applications into the inner implementation details.

Composability and technology extensibility

The factory models (using DSL’s) the internal implementation of the applications and services based upon a logical, technology-independent architecture and SOA
Service-oriented architecture
In software engineering, a Service-Oriented Architecture is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components that can be reused for...

 patterns. This architecture is composed of several layers which are then extended and implemented by pluggable ‘Artefact Generators’ (or ‘technology providers’). The technology providers provide a technology specific implementation (and view) of each layer.
An example a such a layer would be the ‘Service Contract’ layer of a web service
Web service
A Web service is a method of communication between two electronic devices over the web.The W3C defines a "Web service" as "a software system designed to support interoperable machine-to-machine interaction over a network". It has an interface described in a machine-processable format...

, containing service interfaces, service operations and data contracts.
This factory was the first factory to provide an extensibility mechanism with which 3rd parties (such as Global SI's
System integrator
A systems integrator is a person or company that specializes in bringing together component subsystems into a whole and ensuring that those subsystems function together, a practice known as System Integration...

 and ISV's
Independent software vendor
Independent software vendor is a business term for companies specializing in making or selling software, designed for mass marketing or for niche markets...

 and community domain experts) would provide technology tailored implementations of the various layers. These technology providers would take the form of other external factories (or factorette
Factorette
A factorette is an informal term used to describe a unit of composability of a larger Software factory. A factorette is a Software factory.A factorette is used as a contextual term to describe a software factory that extends another software factory....

s), that would integrate into the EFx factory to enhance and expose technology specific views of the architectural models, and ultimately, transform those into source artefacts. This technology separation capability allowed a 'variant factory' to be packaged up and deployed to include: the technology-independent core factory (and its models) with several ‘Artefact Generators’ providing the technology implementations. The factory enabled the composability of variant factories that could build solutions to suit a multitude of real-world heterogeneous technology environments.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK