我创建了一个模块化应用程序,其中每个模块仅通过具有强大接口的另一个模块进行通信。最近我发现我们未能完全分离模块,因为每个模块都可以访问一组共享的对象。
分离这一层的最佳方法是什么?数据对象表示在屏幕上显示的新记录。
我创建了一个模块化应用程序,其中每个模块仅通过具有强大接口的另一个模块进行通信。最近我发现我们未能完全分离模块,因为每个模块都可以访问一组共享的对象。
分离这一层的最佳方法是什么?数据对象表示在屏幕上显示的新记录。
您通常为您的应用程序(myproject.Infrastructure)创建一个包含所有共享类的域程序集。该程序集被所有项目引用。使用这种方法,您的模块不会直接相互引用。(另见 prism stocktrader 参考实现)
看来我和你在同一条船上。如果您有 ORM(例如 EF)和某种业务对象框架(RIA 服务、DevForce),那么您几乎“锁定”在每一端(客户端/服务器)都有 1 个程序集
如果您想继续进行分解,我认为这会导致更多问题,那么这是值得的。您将在连接来自不同模块的实体时遇到问题,您将在不同的数据模块中有重复的实体,等等。如果您已经分解了 ORM 层 - 那么一定要在客户端上保持它相同。
我将只创建一个数据项目(它甚至不是 Prism 中的模块)并从所有模块中引用它。在我的例子中,我从主项目中引用它并设置“CopyLocal=true”,以便 MEF 了解这些实体,我从其他模块中引用它并设置“CopyLocal=false”。