本文转自个人博客,仅供参考,正文如下:
下面是个人基于学习的理解,有些不一定是正确的解释和描述,可以作为你学习的参考,不正确的还望指出:
1,RIA Service基于WCF,但是有一点新的概念
其实我对于WCF的配置和概念到现在不是很明白,主要是同事说,只要这样配置就行了,其他的不用去了解。再加上觉得配置很麻烦,不可理解,我相信有很多人和我一样的感觉。
但是WCF其实一种很不错的,不同的应用程序的应用程序放在一个程序集,然后放在另一个空白的网站,是否这个网站也可以使用那个网站的功能。
这些都没有去实践过,但是我想ASP.NET也好WCF也好都是基于文件名的资源寻址,只不过不同的后缀名使IIS选择不同的IHttpHandler来处理,我想如果这个.svc的文件放在一个程序集中,应该是无法路由的。
但是RIA Service却不一样,你可以把一个Service完全放在一个程序集中,某个网站只要引用这个程序集,这个网站就可以对外提供这样的服务,我们看这是为什么?
RIA Service用DomainServiceModule来处理请求,DomainServiceModule根据HTTP动词和URI来确定定位到某个方法,而在RIA Service中,为了定位到DomainService文件,RIA Service利用的不是文件定位,而是通过反射找到程序集和类,因为RIA Service的URI不是文件的路径,而是DomainService所在的命名空间,比如:
namespace XXX.Services
{
public class DomainService1:DomainService
{}
}
这样的服务路径不是看你将该类文件放在什么位置来作为文件路径,而是以命名空间来确定路径,它的路径就是:
我们看到,URI表明我要请求的类的命名空间,你只要到这个命名空间下面找到这个类反射就可以可以找到对应的方法处理我的请求。
所以,这样基于程序集而不是基于文件路径,使得服务可以编译成程序集在其他网站重用。
所以,RIA Service新增一个工程,用于建立RIA Service Class Library,而且不仅服务可以放在单独的项目,而且连代理类也放在不同的项目,这样使得代理类也可以重用。
这使得在多个网站需要部署统一服务的特别方便,比如均衡负载或者多服务器的情况,每个后端服务器都要提供相同的服务,这是不是很好的特性呢!
6,总结
本文并没有描述RIA Service的技术细节,相信跟着一些博客的教程或者SDK,你可以去学习操作。本文只总结一些相关概念,有助于你理解。
但是千万不要轻易相信我的话,我是一个菜鸟,有一些可能是理解错误的,只能作为参考,也欢迎拍砖!
RIA Service还包含身份验证等等技术细节,有待你去一个一个掌握,期望对大家理解有一点点的帮助!