2010年2月4日星期四

WCF RIA 服务 (十八)-- 共享代码 1

共享代码
WCF RIA Services允许我们编写在中间层和表示层之间共享的应用逻辑。可以共享源文件或程序集中的代码。和在客户端代码生成主题中描述的自动代码生成方法不同,共享代码在编译时时不能改动的。相反,代码在层间是逐字地拷贝或共享的。

共享源文件

可以在中间层添加源文件,然后明确指定这些文件在表示层中共享。有两种方法来在层之间共享源文件。第一种方式是根据命名规范来命名源文件:*.shared.cs或*.shared.vb。第二种方法是使用VS中的文件链接特性。

共享命名规范

当对源文件使用共享命名规范(*.shared.cs)时,对共享的源代码文件实施了"push"模型。在编译时,源文件将会从中间层拷贝到客户端。只有在服务端和客户端存在RIA Services 连接时,共享命名规范才会对源文件起作用。



共享命名规范有以下优点

1.内置的支持:不需要程序员来保证共享文件同步。

2.透明性:名字清楚指明了文件想要共享。

3.自我维护:如果添加了一个共享文件,当解决方案编译时,所有与这个中间层联系的客户端项目都会自动更新。

4.易理解的调试经验:可以在服务端或客户端的文件中设置断点。

但它也有如下缺点:

1.新概念: 程序员必须了解共享命名规范。

2.文件被宝贝:共享文件是物理性地拷贝到项目中的,就可能造成程序员编辑了拷贝的文件,却在下次编译时丢失了所做的更改(因为源文件没有更改)。

链接文件

Linked files是VS中已有的特性,并不是只针对RIA Services的。在项目之间可以存在RIA Services链接,但不必使用链接文件。当使用链接文件方法时,就对共享源文件实施了"pull"模型。在客户端没有文件的拷贝。相反,客户端引用服务端的文件。



我们还可以让服务端和客户端都连接到其他项目中的文件。



链接文件方式有以下优点:

1. 已存在的VS特性:不必学习新的规范。

2. 文件不是拷贝的:文件仅存在服务端项目中。因此不可以修改拷贝的文件,在下次解决方案编译时也不会丢失更改。

链接文件方式的缺点:

1. 需要用户明确的指令 : 必须链接每个共享文件。

2. 不能自我维护 :当添加或移除共享文件时,客户端需要更新。

3. 缺乏透明性 : 程序员需要检查文件来确定哪个文件是共享的。

4. 不好的调试体验 : 不容易确定哪个层引起了中断。

共享程序集 - Shared Assemblies

与在项目中共享源文件相反,我们可以报代码编译到类库中,然后再通过程序集引用来共享这个类库。使用WCF RIA Services 类库来确保程序集是兼容的。

下面的图示例了一个使用WCF RIA Services类库的n层结构的应用程序如何共享代码。中间层和客户层对类库使用程序集引用。

没有评论:

发表评论