Ale*_*lex 4 .net c# asp.net-mvc dependencies project-structure
在我的ASP.NET MVC Web应用程序中,我有:
域模型,由LINQ to SQL创建
存储库如
UserRepository 和 OrderRepository
IQueryable Fluents作为IQueryable扩展方法,如
public IQueryable<Order> GetNewOrders(this IQueryable<Order>)
服务如
UserService 和 OrderService
实用类和扩展方法,如
CryptoUtility (做Hashing等)和String等扩展
ViewModel对每个MVC视图都是特殊的
ASP.NET MVC项目本身(控制器,视图)
我正在为我的案例寻找最好的项目结构/组织,特别是分成不同的程序集以及这些层之间的依赖关系.遗憾的是,网络资源没有详细说明.
一个提示:目前Repository,Services,IQueryable Fluents等直接针对域模型实现,我没有它们的接口定义.我认为这是不必要的,但松散耦合可能需要这个吗?我的服务有一个接口(例如IOrderService),我的存储库实现了IRepository <T>.
感谢您以简洁的方式组织这一点,特别是哪个层应该依赖于什么和组装组织.谢谢!
我会看文章杰弗里巴勒莫的洋葱建筑在这里.这个基本架构适用于任何项目,并允许您将核心项目(域层,持久性等)与Web项目分开.
我们在MVC/StructureMap/FluentNHibernate中使用它并取得了巨大的成功.
我们最终得到的结构类似于下面的结构.
> trunk
+ build (build scripts)
+ lib (external libraries)
> src (source code)
>> Organization.App (solution name)
>> Organization.App.Core (code library)
+ Config
> Domain
> Model
> Persistence
> Queries
> Services
> Persistence
> Services
>> Organization.App.Web (mvc web app)
> Assets
+ Images
+ Scripts
+ Stylesheets
+ Controllers
+ Views
+ ViewModels
Run Code Online (Sandbox Code Playgroud)
这是基本的想法.Web应用程序引用域实体的核心应用程序我们的存储库/工作单元.在Google代码上查看这个较旧的项目以获得类似的示例.关于这一点的重要部分是我们能够在同一解决方案中添加新的"UI"项目类型,并按预期重新使用我们的核心项目.像控制台应用程序或第二个Web应用程序,或任何您需要的.