共享代码
利用 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 类库。