到目前为止,我已经完成了这些项目
App.View – 所有GUI相关代码
App.Data – 只是数据结构和接口.没有其他实现代码
App.BusinessLogic – 没有GUI引用的所有业务逻辑代码
我有一些课程,我无法弄清楚他们属于哪里.请让我知道您对每个课程应该去哪个项目的想法,或者是否有另一个项目应该为此创建.
>从数据库中检索用户首选项的类
>一个从静态数据服务器检索静态数据并返回数据结果集的类.
>降低用户权利的类
>存储订单哈希表的模型类
>通过电子邮件发送有关用户操作的消息的类
解决方法
从这个角度来看,任何检索或带来的东西都必须位于您的数据层中 – 它正在访问持久存储中的数据.它检索的内容最终会转换为业务逻辑操作的业务层对象.事物是概念模型 – 如订单表 – 或业务操作属于业务层.我同意@Adron,也许同样对于(3)取决于它实际是什么的混淆.
进一步来说:
>用户首选项是业务
对象,检索的东西
它们是一个数据层对象.
>静态数据映射到业务
对象(表或视图或其他东西),
访问外部的东西
server是数据层对象.
>用户权利是业务对象,检索它的是数据层对象.
> Orders表是一个业务对象
>电子邮件是一种商业活动,因此邮寄人物的事物是一种商业对象
[编辑]我针对(简单)网络应用程序的通用3层体系结构
DataAccessLayer
这将包括我的TableAdapter和强类型的DataTables和Factories,它们将我的DataTables行转换为LINQ前项目中的业务对象.使用LINQ,这将包括我的DataContext和设计器生成的LINQ实体.
BusinessLayer
这将包括任何业务逻辑,包括验证和安全性.在LINQ之前,这些将是我的业务对象和实现应用程序逻辑的任何其他类.使用LINQ,这些是我的LINQ实体的部分类实现,用于实现安全性和验证以及任何其他类来实现业务逻辑.
介绍
这些是我的网络表单 – 基本上是应用程序的UI.我确实在表单中包含了一些验证逻辑作为优化,尽管这些也在BL中得到验证.这还包括任何用户控件.
注意:这是逻辑结构.项目结构通常反映了这一点,但是在某些情况下,例如与Web服务的连接,可能直接包含在Web项目中,即使逻辑上组件实际上在BL / DAL中.
注意:一旦ASP.NET MVC投入生产,我可能会转向3层MVC.我在Ruby / Rails中完成了一些个人项目,我非常喜欢用于Web应用程序的MVC范例.