主要内容:
1.什么是WCF?
2.WCF的背景介绍。
引例:(WCF用来解决什么事情)
一家汽车租赁公司决定创建一个新的应用程序,用于汽车预定
• 该租车预定应用程序的创建者知道,应用程序所实现的业务逻辑必须能够让公司内外运行的其他软件访问
– 运行在Windows 桌面上的呼叫中心客户端应用程序
– 基于J2EE 服务器构建、在非Windows 系统上运行的现有预定应用程序。由于最近与另一家汽车租赁公司合并,此现有系统必须能够访问新应用程序的逻辑,以便为合并后公司的客户提供一致的体验。
– 运行在各种平台上的合作伙伴应用程序,每个应用程序分别位于一个与该汽车租赁公司有业务合作的公司内。合作伙伴可能包括旅行社、航空公司,以及具有租车预定业务需求的其他组织
①客户中心客户端在乎的是性能问题
②其他两个程序端更在乎的是互操作性,因为跨越了互联网所以安全性也必须考虑,什么是事务性,汽车预定只是众多环节当中的一环,所以我们的程序还有保障事务的完整性。
没有WCF的话要用下面很多技术
Remoting技术 针对性能
↓
互操作性 可以使用webService,但是安全性和事务性不足
↓
WSE、企业服务
• 如果没有WCF,应用程序可能要使用多种现有的.NETFramework技术
– ASP.NET Web Service(ASMX)。
– 这种技术用于与基于J2EE的现有预定应用程序,以及与Internet上的合作伙伴应用程序进行通信。 因为目前大多数平台都支持基本的Web服务,所以在WCF发布之前,这是实现跨供应商互操作性的最直接的方法。
– .NET Framework 远程处理。
– 这种技术可用于与呼叫中心应用程序进行通信,因为二者都是建立在.NET Framework 之上的。远程处理专门为紧密耦合的.NET 到 .NET 通信而设计,因此它为本地网络中的应用程序提供了无缝而直接的开发体验。
– 企业服务。
– 租车预定应用程序使用该技术来管理对象生存期和定义分布式事务。在与此应用场景中的任何其他应用程序通信和集成时,这些功能会很有用,但是企业服务仅支持有限的一组通信选项。
– WSE。
– 可与ASMX 一起使用,以便与基于J2EE 的预定应用程序以及合作伙伴应用程序进行通信。它实现了最新定义的一些Web 服务协议(统称WS-* 规范),因此只要相关所有应用程序都支持这些新规范的兼容版本,WSE 就可提供更加灵活的 Web 服务安全性。
– Microsoft 消息队列(MSMQ)。
– 用于与基于Windows 的合作伙伴应用程序进行通信,这些应用程序对数据传送、工作量分离以及应用程序生存期均要求有保证。消息队列提供持久稳定的消息传送,这通常是间歇式连接的应用程序的最佳解决方案。
由于建立在.NET Framework 之上,该汽车预定应用程序必须使用这些通信技术中的多种技术才能满足其要求。尽管这在技术上是可行的,但最终的应用程序实现起来将会很复杂,而且维护起来也很困难。
WCF就是针对上面的困难产生的,WCF 就是针对这种繁杂却又切实存在的情况而设计的,是公开和访问服务的Windows应用程序的首选技术(不仅仅是web)
WCF设计目标
一个简单的DEMO
接口上面添加
[ServiceContract] 表示是一个服务的协定
[OperationContract]表示是一个服务的方法的协定
ASP.NET Web Service 和 WSE 以及WCF之间的区别