Introduction
This article is the first of a series that discusses how to design and develop a WPF client using WCF for communication and NHibernate for persistence purposes.
Designing enterprise applications requires a comprehensive set of skills. In small and medium projects allocation of time and resources could be not feasible to the extent that is in larger projects, it is at this time where a source for best practices and patterns can become very beneficial. There are plenty articles, books and other materials covering specific aspects but it is almost impossible to find a single place where all the technologies and patterns are used in conjunction providing a comprehensive discussion of the why and how.
The intention of these articles is to provide an example of how a full enterprise application is developed from the early stages to a full functional stage. The articles build on top of each other where new aspects are covered or/and existing functionality is enhanced as a result of aligning the architect to the business non-functional requirements.
It is assumed in the series that Agile practices are followed so the solution's architect focuses in providing flexible mechanisms for RAD, DDD and TDD methodologies. One key aspect of the architect is the requirement to be able to deploy a full-functional client for business exploration purposes that requires a minimum infrastructure footprint; avoiding databases, deployment to IIS and so on.
Background
The architect requirements are as follow:
Rich client using WPF
Client connects to server using WCF services
NHibernate is used for persistence purposes
Client application can be run against in-memory repositories (Exploration Client)
Deployment of the exploration client must be kept simple
The application must be easily testable, tests can be run against in-memory or NHibernate repositories
Other assumptions:
We have full control over the client and server components
We are creating the database from scratch, we are not using some legacy database
We are deploying the server components using IIS7 and WAS; we will use TCP/IP
We have full design control over the PK in the database tables, we will using unique long fields for all our entities in this project
The eDirectory solution
We are going to start using a very simple business scenario in our series, the focus on the series is the architecture not the business domain. We may extend our domain in the future if we find that we want to explore some more complex architect concepts.
The business domain is based in a simple list of contacts, it is currently so simple that one single entity is only required: Customer. The solution name is eDirectory.
The source code can be found at codeplex: WCF by Example
The latest version can be found at the trunk branch, each chapter is located at its own tag branch. You may want to use the browse function within Codeplex to navigate among the branches.
Read more: Codeproject
This article is the first of a series that discusses how to design and develop a WPF client using WCF for communication and NHibernate for persistence purposes.
Designing enterprise applications requires a comprehensive set of skills. In small and medium projects allocation of time and resources could be not feasible to the extent that is in larger projects, it is at this time where a source for best practices and patterns can become very beneficial. There are plenty articles, books and other materials covering specific aspects but it is almost impossible to find a single place where all the technologies and patterns are used in conjunction providing a comprehensive discussion of the why and how.
The intention of these articles is to provide an example of how a full enterprise application is developed from the early stages to a full functional stage. The articles build on top of each other where new aspects are covered or/and existing functionality is enhanced as a result of aligning the architect to the business non-functional requirements.
It is assumed in the series that Agile practices are followed so the solution's architect focuses in providing flexible mechanisms for RAD, DDD and TDD methodologies. One key aspect of the architect is the requirement to be able to deploy a full-functional client for business exploration purposes that requires a minimum infrastructure footprint; avoiding databases, deployment to IIS and so on.
Background
The architect requirements are as follow:
Rich client using WPF
Client connects to server using WCF services
NHibernate is used for persistence purposes
Client application can be run against in-memory repositories (Exploration Client)
Deployment of the exploration client must be kept simple
The application must be easily testable, tests can be run against in-memory or NHibernate repositories
Other assumptions:
We have full control over the client and server components
We are creating the database from scratch, we are not using some legacy database
We are deploying the server components using IIS7 and WAS; we will use TCP/IP
We have full design control over the PK in the database tables, we will using unique long fields for all our entities in this project
The eDirectory solution
We are going to start using a very simple business scenario in our series, the focus on the series is the architecture not the business domain. We may extend our domain in the future if we find that we want to explore some more complex architect concepts.
The business domain is based in a simple list of contacts, it is currently so simple that one single entity is only required: Customer. The solution name is eDirectory.
The source code can be found at codeplex: WCF by Example
The latest version can be found at the trunk branch, each chapter is located at its own tag branch. You may want to use the browse function within Codeplex to navigate among the branches.
Read more: Codeproject