a repost from my blog: http://www.charlesrcook.com/
First let me say that the code is in early state and publishing it is intended to gauge interest and recruit developers. What is the Unifico Framework (UF)? It’s an architecture that has evolved while addressing various concerns in several real world projects. Currently it’s nothing more than an example, and at that an example implementation of a simple example. In this example however many issues are addressed such as scalability, dependency injection, test driven development, and plug-in ability.
Written in C# against MVC Beta and ASP.NET 3.5.1 the code currently recreates the account ‘component’ of the MVC example template with a simple SQL Repository. The ASP.NET Membership Provider is completely replaced with a component written against the Unifico Framework’s pattern. In this example several things are achieved:
- A Service Oriented Architecture (SOA) ready to be remoted through Windows Communication Foundation while using StructureMap to provide dependency injection from WCF.
- A repository based data source also protected with dependency injection that is exposed through in a pipes and filters manor. LINQ to SQL is used within a particular repository implementation, but is in no way exposed to the service.
- A Model View Controller (MVC) pattern is also used. The only objects returned from a service are models, and all controller activity is within the service itself. Virtual Paths are used to store the views within the component’s assembly.
- Utility methods have been developed to provide paging across the service interfaces while leaving the ‘control’ in the hands of the service. The paging methods support multiple filters and multiple sorts within any paging method for a general service.
- The framework supports unit testing, however unit tests need to be added specifically for the account service. A project has been setup to show where this is done.
- ‘Form’ Models are used for requests to a service to allow all validation for a request to occur within the service. The responsibility of form validation is retained within a service in this manner, and prevents outside code from creating models.
There is a lot within the example, and this post will be followed with posts about specific areas. My hope in this early release is to incite interest from other developers in the community for two reasons. First, it would be nice to have the framework reviewed. Second, I hope a few developers would be interested in joining the project. It’s released under the MIT license and provides a nice foundation to develop components against.