WCF服务注意问题之-与Remoting比较
WCF服务是微软新出的分布式通信服务框架,WCF整合了.Net平台下所有的和分布式系统有关的技术,例如ASP.NET Web服务(ASMX)、增强Web服务扩展(WSE)、.Net Remoting、企业服务(Enterprise Service)和微软消息队列(MSMQ)。
WCF是基于契约来开放服务的,与Remoting基于远程对象(MarshalByRefObject)不一样,因此WCF中的基于TCP的绑定与Remoting还是有很大的区别,WCF要统一各种已有的技术,因此就牺牲了Remoting的不少灵活性和强大性,在Remoting中只要对象继承了MarshalByRefObject就具备了远程特性,而WCF必须要标记为契约(服务契约,操作契约,数据契约,消息契约),且很重要的一点WCF中的操作契约返回自定义对象时极为不变,且无法返回接口,虽然在服务中返回接口比较少见,但是少见并不是不需要,对于复杂服务的话,采用WCF开发极为不变且如返回接口之类的无法实现的东西。
因此针对比较复杂的且无互操作要求的,推荐还是采用Remoting技术,对于有互操作要求,或者服务类型较为简单则应采用WCF技术,WCF作为一个一个统一通信架构,在安全,事务,编程模型上极为统一且强大,同一套代码可以同时开放为多个绑定,而不需更改服务代码。
对于WCF中要访问服务内未知类型的解决办法在之后的文章中描述。