Halfpipe provides a foundation for building a testable domain layer for applications using the Entity Framework, with an emphasis on ASP.NET MVC applications. Halfpipe supplies a testable repository and all of the necessary plumbing to connect it to a presentation layer.
It is common to see ASP.NET MVC demos where controller actions directly reference an Entity Framework ObjectContext
. This makes for a fast and easy demo, but it's not a good design for a real-world application. Halfpipe is designed to preserve the ease-of-use and architectural flexibility of ASP.NET MVC while bringing more testability and flexibility to the "M" layer.Halfpipe is
Applications using Halfpipe can
- Brand new, and probably not ready for production use just yet. (Soon!)
- Designed based on years of real-world experience using MVC and the Entity Framework together.
- Built on LINQ from the ground up.
- Extensible: Any ORM with a decent LINQ implementation can be supported with minimal effort.
- Documented: XML documentation in the source
- Source which passes full Code Analysis
- Testable: Includes tests for its own source plus helpers for testing your own code
- Flexibly licensed. The MIT license allows use in commercial products. You may also use Halfpipe under the terms of the GPL if you need that.
Halfpipe will be
- Use LINQ to Objects data for fast tests.
- Separate Repository and Service Layer concerns
- Use any architecture that is appropriate. Halfpipe does not dictate anything beyond Services and Repositories.
- Easy. I love how Rails lets you add a basic set of template operations for an entity type in one step. MVC tries to do this, but it doesn't push back as far as the data access.
- Documented on the Wiki
- Integrated into Visual Studio