1

在网上阅读了大量关于最佳实践应用程序设计和模式的文章后,我仍然无法将所有信息合并在一起并映射到我的真实应用程序......

我想要一个 3 层应用程序:

  • UI-Layer:
    托管在 ASP.net 中的 Silverlight 应用程序 - Webapp

  • BusinessLogicLayer:
    在不同服务器上运行的 WCF-Services / .NET RIA-Services

  • DataAccessLayer:使用像 nHibernate 或 Linq2Entities 这样的 ORM


问题是,我不知道将我的业务对象放在哪里,以及在哪里填充数据。

是否应该有另一个层,包含我所有的业务对象,以便它们可以在所有其他 3 层中使用?
或者我应该将它们放入我的 BLL 并在 DAL 中调用 nHibernate-Methods - 但是我会在 BLL 和 DAL 之间产生循环依赖关系?如果我在 DAL 中引入“DataAccessObjects”并将所有属性复制到 BLL 中的 BusinessObjects 中,这不是“过度架构”吗?

任何帮助表示赞赏!

最好的问候,丹尼尔·朗

4

4 回答 4

0

好吧,在审查了整个问题之后,我认为“最佳”解决方案是使用 DependencyInjection 或 IversionOfControl 来用 DAL 中的数据填充业务对象。

于 2009-12-02T16:30:03.027 回答
0

业务对象进入公共层,

我通常创建一个项目,它们包含业务对象、枚举以及服务器和客户端之间常见的任何内容。

这个项目被所有层引用。它不能引用任何其他项目,否则会创建循环引用。

于 2010-12-29T02:42:44.740 回答
0

业务对象进入业务层。这些对象由 UI 层使用,并从数据层调用方法来填充它们自己。

一般来说,一个层中的对象只调用它们自己层中的方法,或者只调用其下一层的方法。

动机之一是能够在不改变其他层的情况下替换其中一层。例如,可能有一种不同的方式来呈现 UI,它可以使用来自业务层的相同方法。或者,也许可以更改数据库,只要新数据层包含与旧数据层相同的方法。

于 2009-12-01T22:51:58.823 回答
0

好吧,因为您使用的是 WCF,所以您应该有一个只包含接口和数据类的“合同”。这些课程应该可供其他所有人使用。里面不应该包含任何逻辑。

于 2009-12-01T22:52:47.067 回答