1

谁能帮忙,我有 2 个应用程序,它们几乎相同。它们具有完全不同的表示层(Web),业务逻辑和数据库几乎相同。基本上,一个应用程序有一些其他应用程序没有的东西。

所以我想知道我是否可以在不违反任何规则等的情况下执行以下操作

每个应用程序都有自己的表示层。
每个应用程序都有自己的服务层。
每个应用程序都有自己的数据访问层。
每个应用程序共享另一个服务层。

因此,两个应用程序都可以访问共享服务层,因为业务逻辑是相同的,但它们都有另一个服务层,其中有 5 或 6 个特定于该实际应用程序的方法

数据访问层-无论如何我都看不到共享它,因为实体框架有2个不同的数据库,因此它在那里有EDM,因此它不是动态的-并且表格略有不同。

我想我可以在共享数据访问层上使用 IOC

任何人都可以帮助或评论天气,这是一个很好的做法。我不想做的是只有一个单独的服务层,而其中很多是共享的。

这是一个好主意吗?也许我错了,有更好的方法吗?

4

3 回答 3

1

如果业务逻辑基本相同,那么您应该首先关注这一点。如果你想做 DDD,那么你应该首先识别你的实体和(业务)服务,并将它们放在一个库中。

这些实体和业务服务应该与您的基础设施层(您的 DAL)对话。如果这两个应用程序中的基础设施层非常不同,那么请尝试使用接口。所以用接口包装基础设施层,只通过这些接口从领域层到基础设施层。

要将您的业务逻辑绑定到您的基础设施的实现,您可以使用 IoC/DI。

于 2009-04-13T07:09:36.253 回答
1

正如 Arjen de Blok 所说,您的业务实体应该使用存储库,存储库是具有查询、更新或插入域实体的方法的对象。

描述您的存储库的接口属于您的领域层,但实现属于基础设施层 (DAL)。

您可以在两个项目之间共享域和基础设施库。如果这两个项目应该通过共享 Web 服务或共享数据库检索它们的数据,您只需要选择(即注入)您的存储库的正确实现(您的域对象只知道您的存储库的接口,而不是具体的类型)

于 2009-04-22T12:42:21.880 回答
0

您可以将 DAL 与存储库接口统一起来。然后,您可以跨项目实现接口。您可能最终也会得到一个 EF Repository 基类。您可以将类似的技术应用于服务,利用通用接口,然后专门化服务实现。

于 2009-04-01T15:36:01.003 回答