棱镜 + 模块使用 WCF 作为数据访问层

本文关键字:数据 访问 WCF 模块 棱镜 | 更新日期: 2023-09-27 18:30:47

我正在编写一个应用程序(WPF),其中我使用棱镜框架。我有一个带有外壳视图的客户。我有一些模块。所以这是不同的项目。每个模块都是一个独立的项目。这些模块由 Unity 加载。

我有以下

Solution
 Client
    Modules
    Client ( app )
 Common
    Entities
 Server
    Data
    Web

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

客户端(应用)具有带有其引导程序的外壳视图。客户端工作。只有数据访问层必须集成。

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

Pff,我正在看和阅读这么多。找到了一些关于堆栈溢出的主题。但是没有一个主题是从头开始的。希望有人能帮助我。

棱镜 + 模块使用 WCF 作为数据访问层

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

棱镜解决方案将具有一个具有静态类的代理项目,用于返回服务对象,客户端 (棱镜) 应用将调用 WCF 服务。

也许你可以看看Calcium SDK(http://calcium.codeplex.com/),它利用Prism模块化应用程序开发以及对WCF服务的支持。

如果您熟悉服务器端的 WCF 和 EntityFramework,那么这就是要走的路。

为了重用从服务生成的代理类,您可以将服务引用保留在从所有模块引用的公共程序集中。像"基础结构"这样的东西是一个很好的命名约定。

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

对于 WPF clent:首先使用实体框架代码,然后在单独的程序集中分离模型类,以便可以在主客户端和模块中重用它们。

如果是西尔维莱特客户:如果在生成服务代理时存在重复的模型类和命名空间,则可以签出 WCF RIA 服务。请始终记住,您可以使用 Visual Studio 项目文件属性中的 RIA 链接链接两个程序集 silverlight 和一个 .net 程序集。然后,您选择的任何服务器端代码文件都可以在客户端上重用。无论您是否使用 WCF 服务,都可以在文件名中使用"共享"后缀(例如:enums.shared.cs)。您可以在此处和此处找到更多信息

希望这有帮助。