我是一名有经验的.NET开发人员,主要使用Webforms进行开发。我熟悉MVC,但还没有在商业项目中使用过。目前我正在进行一些自我教育,并对架构方面存在的差异感到有些困惑。请注意,在这个问题之前,我了解到并不存在正确或错误的答案,我只是在寻求一种优雅的解决方案。
首先,我想说的是,我不使用实体框架或任何类型的ORM - 我想直接实现自己的业务对象和数据访问代码(使用ADO、SPROCS等)以确保它们是最优的,这是我的个人喜好。这就是我在寻找一致信息时遇到困难的地方,因为大部分信息似乎都与LINQ to SQL或实体框架有关。
我的应用程序结构如下:
- Web(MVC 3 Web应用程序)
- Models(类库)
只有两个项目,因为我遇到了耦合问题,这也是我提出这个问题的根源。 我的模型类库包含以下内容...
- 经典的业务对象,包含字段和属性
- 每个业务对象的存储库类包含数据访问代码(使用ADO.NET直接SqlDataReaders等)
- 每个存储库类的接口
我的问题是所有这些层之间的依赖关系,感觉不太对劲!
1.业务对象应该包含实现业务逻辑的方法,所以除了字段和属性外,还有实现任何所需逻辑的方法吗?
2.存储库类执行数据访问代码但知道业务对象,这也不太对劲,数据访问代码应该位于其自己的类库中,并且不知道有关对象的任何信息。
3.控制器(在Web层中)利用存储库接口,但为什么呢?它们不应该包含业务逻辑,应该由“模型”或业务对象处理?控制器肯定不应包含业务逻辑,因此这也不对。我不希望将业务逻辑放在存储库中,因为它们正在访问数据库。
我正在苦苦寻找一种优雅的应用程序架构,只是一个实现自己的对象、自己的数据访问代码并确保应用程序松耦合的基本轮廓。是否有人可以给我提供任何指导呢?