在我的 ASP.NET MVC 网络应用程序中,我有:
域模型,由 LINQ to SQL 创建
库如
UserRepository
和OrderRepository
IQueryable Fluents 作为 IQueryable 扩展方法,例如
public IQueryable<Order> GetNewOrders(this IQueryable<Order>)
服务如
UserService
和OrderService
实用类和扩展方法如
CryptoUtility
(做散列等)和字符串等扩展每个 MVC View 的特殊 ViewModel
ASP.NET MVC 项目本身( Controller 、 View )
我正在为我的案例寻找最好的项目结构/组织,尤其是分成不同的程序集以及这些层之间的依赖关系应该是什么样子。不幸的是,Web 资源没有对此进行详细介绍。
一个提示:目前 Repository、Services、IQueryable Fluents 等直接针对域模型实现工作,我没有它们的接口(interface)定义。我认为这是不必要的,但也许这是松散耦合所需要的?我的服务有一个接口(interface)(例如 IOrderService),我的存储库实现了 IRepository
感谢您以简洁的方式组织这一点,尤其是哪一层应该取决于什么和装配组织。谢谢!
最佳答案
我会看看 Jeffrey Palermo 关于洋葱架构的文章 here .这种基本架构适用于任何项目,并允许您将核心项目(域层、持久性等)与 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
这是基本的想法。 Web 应用程序引用域实体的核心应用程序我们的存储库/工作单元。查看this older project on google code对于类似的例子。关于这一点的重要部分是我们已经能够将新的“UI”项目类型添加到同一解决方案并按预期重用我们的核心项目。比如控制台应用程序或第二个 Web 应用程序,或者您需要的任何东西。
关于c# - ASP.NET MVC(域模型、存储库、Fluent、服务——我项目的结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1349640/