在我的 ASP.NET MVC Web 应用程序中,我有:
域模型,由 LINQ to SQL 创建
-
存储库如
UserRepository
and OrderRepository
-
IQueryable Fluents 作为 IQueryable 扩展方法,例如
public IQueryable<Order> GetNewOrders(this IQueryable<Order>)
-
服务如
UserService
and OrderService
-
实用程序类和扩展方法,例如
CryptoUtility
(进行哈希等)和字符串等扩展
每个 MVC 视图特有的 ViewModel
ASP.NET MVC 项目本身(控制器、视图)
我正在寻找适合我的案例的最佳项目结构/组织,特别是分成不同的程序集以及这些层之间的依赖关系应如何呈现。不幸的是,网络资源没有详细介绍这一点。
一个提示:当前存储库、服务、IQueryable Fluents 等直接针对域模型实现工作,我没有它们的接口定义。我认为这是不必要的,但也许这是松耦合所需要的?我的服务有一个接口(例如 IOrderService),我的存储库实现 IRepository。
感谢您以简洁的方式组织此内容的意见,特别是哪个层应取决于什么和装配组织。谢谢你!
我会看 Jeffrey Palermo 关于洋葱架构的文章here http://jeffreypalermo.com/blog/the-onion-architecture-part-1/。这种基本架构适用于任何项目,并且允许您将核心项目(域层、持久性等)与 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 应用程序引用了我们的存储库/工作单元的域实体的核心应用程序。查看谷歌代码上的这个旧项目 http://code.google.com/p/fsu-isys-489-spring-09-group-2/source/browse/trunk举一个类似的例子。最重要的是,我们能够将新的“UI”项目类型添加到同一解决方案中,并按预期重新使用我们的核心项目。比如控制台应用程序或第二个网络应用程序,或任何您需要的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)