映射。在提供系统的互操作性时,了解WCF的消息传递方式很有必要。
根据不同的需求,WCF将实例模式分为PerCall,Single和PerSession三种方式。通过设置服务行为的InstanceContextMode属性,来管理服务实例的生存周期,可以简化开发人员的工作。我们只需要了解这三种实例模式的特性即可。通常情况下,我建议服务采用PerCall模式,如果需要维持服务与客户端之间的会话,则可以采用PerSession模式。只有在对性能和可伸缩性没有太大要求的情况下,才可以采用Single模式。
关于事务处理、并发处理以及安全,主要都是通过相关的服务行为进行设置和管理。这些内容都是WCF高级应用所必需掌握的内容,尤其对于开发企业级应用系统而言。至于队列服务,主要是利用了消息队列,以实现系统可以脱机访问服务,并保持服务状态的同步。
6、WCF主用适用于哪些应用场景?WCF本身就是微软为了应对SOA战略所推出的一套基于.NET Framework下的SDK。当我们在Windows平台下,基于.NET框架开发一套系统,同时要求这套系统需要与其它平台例如WebLogic、WebSphere或者JBoss进行交互时,就需要采用WCF技术了。这是因为WCF的互操作性所决定的。
目前来看,WCF在企业应用中还没有得到大量的应用,但随着开发者对.NET 3.x的深入了解,WCF会逐渐深入人心。由于WCF集成了.NET编程开发的习惯,对于.NET开发人员而言,就大大地降低了学习曲线,此外,WCF保留了对旧有技术包括Web Service、.NET Remoting、MSMQ、WSE的支持,同时对于旧有技术到WCF的迁移也提供了非常好的解决方案。因而,如果.NET人员若要应用SOA的解决方案,那么WCF无疑就是最佳选择。单以开发而论,利用WCF定义服务、公开服务以及运行服务,利用WF实现工作流的设计、运行与管理、利用WPF作为具有丰富表现的富客户端,或者通过AJAX+SliverLight开发调用WCF服务的客户端,以及通过CardSpace完成对服务安全的设置与管理,就足以实施一整套的SOA解决方案。同时,WCF还可以结合Biztalk以及Sharepoint,使得SDK能够搭载于应用服务器之上,更大程度地满足企业应用的需要。
除了实施SOA解决方案之外,WCF对于开发分布式系统而言,也是得天独厚的。当我们的应用系统需要在多个服务器上运行不同服务,以支撑大量的访问负荷、大数据量处理、数据挖掘等工作时,就可以利用WCF开发不同的服务,然后托管在不同的服务器上,此时,整个系统就可以有效地利用服务器资源,减轻系统负荷。
参考:1、Juval Lowy著,张逸、徐宁译《WCF服务编程》
2、Aaron Skonnard,《WCF深度绑定》
3、Aaron Skonnard,《使用自定义行为扩展WCF》
4、Boris Lublinsky,《实现一个.NET Web Services服务
注册中心》