8. Implementation View
8.1 Overview
The implementation view depicts the physical composition of the implementation in terms of implementation artifacts such as source code, data, development frameworks, distributable files and executable files.
The implementation layer must be aligned and fit the layers defined in the architecture vision and the best practices to support this architecture. The ContosOnline system will be developed using the technologies described in the sub-section 3.1 Implementation Strategy.
The implementation strategy is to implement each logical layer inside an independent .NET assembly. Inside each assembly, you can find the modules logically separated by namespaces (For further details, see the following table).
Namespaces/
Packages
|
Description
|
Assembly
|
ContosOnline.
Presentation
|
It´s a Web application developed using ASP.NET MVC technology and contains the artifacts for the correct presentation. It also uses the following JavaScript libraries: jQuery and ExtJS to support the Rich Internet Application approach. |
ContosOnline.
Presentation.dll
|
ContosOnline.
Presentation.
Product
Management
|
It´s a package (a folder) inside the ContosOnline.Presentation to hold the artifacts for the module ProductManagement |
ContosOnline.
Presentation.dll
|
ContosOnline.
Service
|
It´s a Microsoft.NET library developed using C# language and contains the service artifacts. |
ContosOnline.
Service.dll
|
ContosOnline.
Service.
Contracts
|
It´s a package (a folder) inside the ContosOnline.Service to hold the contracts of the service. Inside this package, you should group the contracts by module (similar to the presentation structure). |
ContosOnline.
Service.dll
|
ContosOnline.
Service.DTO
|
It´s a package (a folder) inside the ContosOnline.Service to hold the messages of the service. Inside this package, you should group the messages by module (similar to the presentation structure). |
ContosOnline.
Service.dll
|
ContosOnline.BLL |
It´s a Microsoft.NET library developed using C# language and contains the business logic artifacts. |
ContosOnline.
BLL.dll
|
ContosOnline.BLL.
Service
Implementations
|
It´s a package (a folder) inside the ContosOnline.BLL to hold the service implementations. Inside this package, you should group the service implementations by module (similar to the presentation structure). |
ContosOnline.
BLL.dll
|
ContosOnline.BLL.
BusinessObjects
|
It´s a package (a folder) inside the ContosOnline.BLL to hold the business objects. Inside this package, you should group the business objects by module (similar to the presentation structure). |
ContosOnline.
BLL.dll
|
ContosOnline.BLL.
Mappers
|
It´s a package (a folder) inside the ContosOnline.BLL to hold the mappers (transformations from the entities to DTO). Inside this package, you should group the mappers by module (similar to the presentation structure). |
ContosOnline.
BLL.dll
|
ContosOnline.BLL.
Workflow
|
It´s a package (a folder) inside the ContosOnline.BLL to hold the workflows. Inside this package, you should group the workflows by module (similar to the presentation structure). |
ContosOnline.
BLL.dll
|
ContosOnline.BLL.
BusinessRules
|
It´s a package (a folder) inside the ContosOnline.BLL to hold the business rules. Inside this package, you should group the business rules by module (similar to the presentation structure). |
ContosOnline.
BLL.dll
|
ContosOnline.DAL |
It´s a Microsoft.NET library developed using C# language and contains the data access artifacts. |
ContosOnline.
DAL.dll
|
ContosOnline.DAL.
Entities
|
It´s a package (a folder) inside the ContosOnline.DAL to hold the business entities. Inside this package, you should group the business entities by module (similar to the presentation structure). |
ContosOnline.
DAL.dll
|
ContosOnline.DAL.
DAO
|
It´s a package (a folder) inside the ContosOnline.DAL to hold the data access objects. Inside this package, you should group the data access objects by module (similar to the presentation structure). |
ContosOnline.
DAL.dll
|
ContosOnline.DAL.
ServiceAgents
|
It´s a package (a folder) inside the ContosOnline.DAL to hold the service agents. Inside this package, you should group the service agents by module (similar to the presentation structure). |
ContosOnline.
DAL.dll
|
8.2 Layers
8.2.1 Presentation Layer
The Presentation layer contains all the components needed to allow interactions with an end-user. It encompasses the user interface and how to handle the user requests and responses.
The Presentation layer will be developed using the MVC architectural style and the technology ASP.NET MVC. In order to enrich the user interface, we´re going to use JavaScript libraries such as jQuery and ExtJS (a pack of controls) and latest trends in HTML and CSS for the content presentation. The iconography and graphical styles must be consistent with the corporate colors of Contoso.
In order to present a common layout in all the pages of the application, we´re going to use the approach Master Page of ASP.NET.
8.2.2 Service Layer
The Service layer contain all the definitions of the services that are exposed to external systems such as service contracts (operations, message format, message exchange pattern), the communication patterns (REST vs SOAP), url and the behavior of the service. The Service layer will be developed using Windows Communication Foundation (WCF) and the underlying programming model.
8.2.3 Business Logic layer
The Business Logic layer contains all the components that represent the concepts to support the business process. It contains business objects, entities, rules workflows, and so on. The Business Logic layer will be developed using C# and the underlying technologies provided by Microsoft.NET.
8.2.4 Data Access layer
The Data Access layer contains all the components that represent the entities mapped to the relational schema and the communication mechanisms with the database engine. It also contains the logic to access other data source as well as the definitions of Web services’ clients (service agents). The Data Access layer will be developed using C# and LINQ as the ORM technology.