我对架构非常陌生,我正在为我的下一个 .NET 项目设计一个应用程序。我提出的架构设计如下:
它是传统的三层应用程序,其中包含: DataLayer (LINQ + Partial Classes) BusinessLogicLayer (Entities + Validation Logic) (Optional) Service Layer (WCF) UI (Web site and Windows App)
数据层:数据层将包含我的 DataContext 类(即 LINQ)和部分类。这些部分类将具有基本的计算逻辑(例如 Calc. VAT)和其他数据库级别的验证逻辑。
业务层:这将具有类似于数据层的实体,但也将包含 UI 级别的验证逻辑。例如,如果用户尝试输入数据库中不存在的用户名,则需要告诉用户该用户不存在。(这是我苦苦挣扎的地方)。每当调用属性而不是创建对象时,都会延迟加载对象。
UI:这将是一个传统的 UI 层,将在其中调用业务实体。
即使在使用 LINQ 时,我也将业务层从 DataLayer 中分离出来的原因是,如果我希望为例如 WCF 服务添加更多中间层实体,那么我希望它与业务层而不是数据交谈。我相信当应用程序增长时,解耦会有所帮助。(我认为)
如果有人可以对上述内容发表评论,我会很高兴。我真正的问题是编写业务课程(显然)。例如,在延迟加载中,当我尝试加载对象并且数据库中没有数据时,我希望我的 UI 向用户显示该用户不存在(如果我正在搜索用户名)。您对此有何建议。对此的任何输入都非常受欢迎。
非常感谢, Preyash