我们目前正在改进我们的架构和应用程序设计。我们刚刚完成了数据访问层的设计,它是通用的,因为它使用XML和反射来保存数据。
现在我们处于设计业务层的阶段。我们已经阅读了一些与企业架构和设计相关的书籍,因此我们发现可以在业务层上应用的模式很少。表格模式和域模型是此类模式的示例。我们也发现了域驱动设计。
之前我们决定针对表对象构建实体。但是我们发现实体和价值对象在DDD方面存在差异。对于那些经历过这种设计的人。请指导我关于模式,练习和样本。
提前谢谢!如果你没有得到我的任何观点,请随时讨论。
答案 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吗?