Architecture 为模块化应用程序处理数据

Architecture 为模块化应用程序处理数据,architecture,prism,prism-4,devforce,Architecture,Prism,Prism 4,Devforce,我创建了一个模块化应用程序,其中每个模块仅通过另一个具有强大接口的模块进行通信。最近,我发现我们未能完全分离模块,因为在每个模块访问的下面都有一组共享的对象 将该层分离出来的最佳方法是什么?数据对象表示屏幕上显示的新记录。通常为应用程序(myproject.Infrastructure)创建包含所有共享类的域程序集。此程序集被所有项目引用。使用这种方法,您的模块不会直接相互引用。(另请参见prism stocktrader参考实现)看起来我和你在同一条船上。如果您有ORM(例如EF)和某种业务对

我创建了一个模块化应用程序,其中每个模块仅通过另一个具有强大接口的模块进行通信。最近,我发现我们未能完全分离模块,因为在每个模块访问的下面都有一组共享的对象


将该层分离出来的最佳方法是什么?数据对象表示屏幕上显示的新记录。

通常为应用程序(myproject.Infrastructure)创建包含所有共享类的域程序集。此程序集被所有项目引用。使用这种方法,您的模块不会直接相互引用。(另请参见prism stocktrader参考实现)

看起来我和你在同一条船上。如果您有ORM(例如EF)和某种业务对象框架(RIA服务、DevForce),那么您几乎“锁定”在每端(客户机/服务器)上都有一个程序集

如果你想继续下去,并打破这一点,我认为这将导致更多的问题,那么这是值得的。将不同模块中的实体连接起来会有问题,在不同的数据模块中会有重复的实体,等等。如果您已经分解了ORM层,那么无论如何在客户端上保持它不变


我只创建一个数据项目(它甚至不是Prism中的模块),并从所有模块中引用它。在我的例子中,我从主项目中引用它并设置“CopyLocal=true”,以便MEF了解这些实体,我从其他模块中引用它并设置“CopyLocal=false”。

只是确认-这些共享对象是存在于接口定义中的,或者您是在谈论通过两个不同路径/模块访问的数据?