业务层设计

时间:2010-05-25 05:15:36

标签: c# asp.net domain-driven-design business-logic-layer

我们目前正在改进我们的架构和应用程序设计。我们刚刚完成了数据访问层的设计,它是通用的,因为它使用XML和反射来保存数据。

现在我们处于设计业务层的阶段。我们已经阅读了一些与企业架构和设计相关的书籍,因此我们发现可以在业务层上应用的模式很少。表格模式和域模型是此类模式的示例。我们也发现了域驱动设计。

之前我们决定针对表对象构建实体。但是我们发现实体和价值对象在DDD方面存在差异。对于那些经历过这种设计的人。请指导我关于模式,练习和样本。

提前谢谢!如果你没有得到我的任何观点,请随时讨论。

3 个答案:

答案 0 :(得分:3)

@Adil,这不是您原始问题的答案,但我建议您修改您推出自己的数据访问层的决定。你注意到你想去NHibernate:现在就去做吧。

IMO,写一个ORM是浪费时间,除非你有一些非常具体的限制。那里有很多选择,已经有数百小时的努力。利用它! LINQ2SQL,实体框架,NHibernate,Subsonic,LLBLGen都很好,还有更多。

另外请注意,如果你自己动手,你就不会花费很多精力来使用LINQ的优点。

就分层而言,尽量不要坚持:保持层数,并集中精力在它们之间建立一个有价值的界面,以防止你的抽象泄漏。

我已经看到了许多非常“模式化”,精美分层的项目,这些项目在使用中最终会出现逻辑,并且持久性抽象在整个地方泄露。保持简单!

答案 1 :(得分:0)

CSLA.NET非常适合作为业务层的基础。

答案 2 :(得分:0)

@Adil,

我不是很有经验的用户,无论如何,这是我正在使用的那种模型(也是NHibernate)。

GUI - 包含所有Web表单等 BLL - 负责创建新对象实例的目录 DAL - 实现负责与NHibernate交互的类的地方。 NHibernate映射文件在这里。

模型 - BLL和DAL用于数据传输对象的类库。

使用不同的模式。例如,BLL和DAL具有允许访问接口的Factory类。目录是Singleton类。可以使用表示我的业务逻辑顶级对象的主Singleton类来访问所有目录(例如“Enterprise”=>“Enterprise.PeopleCatalog”。

无论如何,希望它有所帮助...

@AngryHacker,感谢您的提示,您能举例说明CSLA.NET吗?