Prism + Modules使用WCF作为数据访问层

时间:2012-04-11 08:03:58

标签: c# wpf wcf prism

我正在编写一个应用程序(WPF),我使用prism框架。我有一个shellview的客户端。 我有一些模块。这是不同的项目。每个模块都是一个独立的项目。 这些模块由Unity加载。

我有以下

Solution
 Client
    Modules
    Client ( app )

 Common
    Entities

 Server
    Data
    Web

所以你可以看到我在服务器文件夹下有一个数据项目。在那里你可以找到edmx。 Web项目为空,实体项目也是空的。

客户端(app)有一个带有引导程序的shellview。 客户工作。只能集成数据访问层。

进行数据访问的最佳解决方案是什么? WCF,别的什么? 我们需要为实体使用什么模板。我们如何在代码(View / ViewModel)所在的模块中使用该服务?

Pff,我正在寻找和阅读这么多。 在stackoverflow上找到了一些主题。但是没有一个主题从一开始就开始。 希望有人可以帮助我。

3 个答案:

答案 0 :(得分:0)

我建议您在.edmx上生成POCO或STE,并使用存储库模式进行数据库访问。创建一个单独的WCF服务项目并调用这些存储库。

您的Prism解决方案将具有带静态类的代理项目以返回服务对象,而您的客户端(Prism)应用程序将调用WCF服务。

答案 1 :(得分:0)

您可以查看一下利用Prism模块化应用程序开发以及对WCF服务的支持的Calcium SDK(http://calcium.codeplex.com/)。

答案 2 :(得分:0)

如果您在服务器端熟悉WCF和EntityFramework,那么这就是您的选择。

为了从服务中重用生成的代理类,您可以将服务引用保存在从所有模块引用的公共程序集中。像“基础设施”这样的东西是一个很好的命名惯例。

如果您的某个模块需要一个独特的功能,那么您将该服务引用放在该项目上。

如果是WPF clent:首先使用实体​​框架代码,并在单独的程序集中分离您的Model类,以便在主客户端和模块中重用它们。

对于Silveright客户: 如果在生成服务代理时出现重复的模型类和命名空间是一个问题,您可以签出WCF RIA服务。请记住,您可以使用Visual Studio项目文件属性中的RIA Link链接两个程序集silverlight和.net one。然后,您选择的任何服务器端代码文件都可以在客户端上重用。无论您是否使用WCF服务,都可以使用文件名中的“shared”后缀(例如:enums.shared.cs)。您可以找到更多herehere

希望这会有所帮助。