共享代码

利用 WCF RIA Services,您可以编写在中间层和表示层之间共享的应用程序逻辑,并同时在服务器和客户端上提供相同的功能。可将代码与源文件或程序集一起共享。

客户端代码生成主题中描述的自动代码生成过程不同,编译期间不会更改共享代码。相反,会在各层之间按原样复制或共享代码。利用共享代码,您可为服务器上定义过的实体定义逻辑部分或分部类扩展,但仍将在客户端上生成代码,以便能同时在这两个位置使用相同的逻辑。

共享源文件

您可向中间层添加源文件,然后明确指定这些文件以便与表示层共享。可通过两种方法在层之间共享源文件。第一种方法是根据共享命名约定命名源文件:*.shared.cs(针对 C#) 或 *.shared.vb(针对 Visual Basic)。第二种方法是使用 Visual Studio 2010 中的链接文件功能。

共享命名约定

在使用共享命名约定(*.shared.cs*.shared.vb))共享文件时,实现“推送”模型以便共享源代码文件。编译期间,会主动将共享文件从中间层项目复制到客户端项目。共享命名约定仅在客户端项目和服务器项目之间存在 RIA Services 链接时用于共享文件。

共享文件

共享命名约定具有以下优点:

共享命名约定的优点 说明

内置支持

开发人员无需执行其他操作即可同步共享文件。

透明

该名称明确指示文件适用于共享。

自我维护

添加新的共享文件后,在编译解决方案时,将自动更新已链接到中间层的所有客户端项目。

易于理解的调试体验

开发人员可在服务器版本或客户端版本的文件中设置断点。

共享命名约定具有以下缺点:

共享命名约定的缺点 说明

新概念

开发人员必须了解共享命名约定。

复制文件

以物理方式将共享文件复制到客户端项目,这意味着开发人员可能会意外编辑已复制的版本,并会在下次编译过程中丢失更改。

有关更多信息,请参见如何:通过源文件共享代码

链接文件

链接文件是 Visual Studio 2010 的一项现有功能,它不是 RIA Services 的专用功能。项目间可存在 RIA Services 链接,但使用链接文件不需要此链接。在使用链接文件方法时,可实现“拉取”模型以便共享源代码文件。客户端项目不包含文件的副本。相反,客户端项目只引用服务器项目中的文件。

链接文件

您还可同时将服务器项目和客户端项目链接到其他项目中的文件。

链接文件

链接文件方法具有以下优点:

链接文件的优点 说明

现有 Visual Studio 功能

开发人员无需了解新的约定。

不复制文件

文件只包含在服务器项目中。因此,开发人员无法更改客户端的复制版本,也不会在下次编译过程中丢失这些更改。

链接文件方法具有以下缺点:

链接文件的缺点 说明

需要显式用户操作

开发人员必须链接每个共享文件。

无自我维护

在添加或移除共享文件时,必须更新每个客户端项目。

缺少透明度

开发人员必须检查项目文件以确定要共享的文件。

调试体验不佳

难以确定哪个层提示了断点

有关更多信息,请参见如何:通过源文件共享代码

共享程序集

您可以将代码编译到类库中,然后通过程序集引用共享库,而不是在项目间共享源文件。使用 WCF RIA Services 类库以确保程序集可兼容,即使在与不同的框架(例如,.NET Framework 版本 4 和 Silverlight 4 )一起使用时也是如此。

下面的关系图演示使用 RIA Services 类库来共享代码的 N 层应用程序。中间层和客户端层使用对类库的程序集引用。

类库结构

有关 RIA Services 类库的更多信息,请参见创建 RIA Services 解决方案演练:创建 RIA Services 类库