08 2011 档案
摘要:如果客户端程序向WCF服务发送一条请求消息,那么客户端通过端点发送该请求。如果你回想一下,端点由三部分组成:地址,绑定和合约。地址指明消息发送的目的地;绑定指明传输、格式、以及于与服务进行通讯所使用的协议;合约决定客户端可以发现的消息以及客户端期望的响应消息。多个服务可以实现同一个服务合约,或一个服务也有可能更改地址。如果客户端将服务特定的地址硬编码在客户端的配置文件中,那么如果服务发生变动、或者临时不可访问、或者服务由于太忙而不能处理请求,那么客户端将不再能继续与该服务通讯。WCF提供了检测服务和路由消息来解决上述问题。在本章的第一部分,你将看到如何在一个通过Ad Hoc模式和服务声明方式在WCF解决方案中实现检测服务。
阅读全文
摘要:在传输数据时,使用合适的编码机制对提高性能亦有显著的影响。你已经了解到,WCF支持使用文本和二进制对消息进行编码。两者相比较,二进制经常更具有影响力并且占用较少的网络流量,但是二进制编码格式是与平台相关的,因此运行在非Windows平台上的服务和客户端程序不能轻易地使用它。此外,WCF还支持消息传输优化机制(MTOM),该机制为传输大块的二进制数据提供了一个标准的,互操作的,并且有效的格式。如果你知道服务传输数据的大小,那么此时启用MTOM是非常有用的;然而有些服务发送未知大小的数据块,这种场景下最好启用流模式传输数据,WCF同样支持从服务输出流。在本小节中,你将学习到如何使用MTOM编码数据以减少大二进制数据对象的系统开销,以及何如启用流模式以最大化地利用网络带宽。
阅读全文
摘要:良好的性能是大多数应用程序和服务的关键因素,你可以通过周密地设计,以及选择合适的特性以确保WCF服务维持其吞吐量,保持响应并具有可扩展性。到目前为止,这些技术包括事务,session状态,可靠地消息传递,以及异步操作。还有其他一些影响性能的方面,比如安全。维持性能的一个重要的方面是需要确保服务不会耗尽宿主计算机上可用的资源,进而导致计系统变慢,甚至停止响应。WCF提供服务阀值以帮助控制资源的利用。使用该特性可以最大程度的维持服务的最大扩展性。负载均衡是另外一个技术你可以用来分发请求至多个服务器并保持相同的输出。你还可以基于Windows网络负载均衡和WindowsServer AppFabric(Windows云平台中间件)创建一个负载均衡的架构,尽管该技术的详细信息超出本书的讨论范围。
阅读全文
摘要:WCF 4.0 进阶系列 -- 随笔汇总
阅读全文
摘要:消息队列是本书WCF异步技术中的最后一个出场的。消息队列可以为消息传输提供持久性、可靠性和事务性。甚至,发送消息的客户端程序与接受消息的服务可以不必同时运行。但使用该灵活性需要付出一定的代价,那就是消息队列只能支持单向传输。因此如果使用该技术实现客户端程序和服务并且服务需要向客户端发送响应消息时,需要仔细的设计。另外,消息队列比其他传输协议更慢,这是因为它所支持的可靠性和可持续性;Windows操作系统需要把消息存储到磁盘。这意味着消息队列中的消息可以不受关机或者电源失败的影响;但这种稳健性在创建和传输消息时需要付出额外的I/O代价。
阅读全文
摘要:如果客户端不仅要求服务回传相应,并且能够在等待响应的时候(线程安全地)执行其他任务,那么你需要实现异步方法调用。使用该技术,客户端程序可以发送一个请求然后后继续执行其他任务。当服务的响应消息到达,客户端程序的一个单独线程将处理该响应。为了处理这些情况,WCF支持异步操作和IAsyncResult设计模式。在WCF中你可以使用两种方式实现IAsyncResult设计模式:在客户端程序中异步调用操作;或在WCF服务中实现异步操作。
阅读全文
摘要:一般地,WCF客户端和服务在执行操作时遵循请求/响应消息传输模式;客户端程序发出一个请求然后耐心地等待消息通过网络传输至服务,服务接受到请求消息并处理该消息,然后服务生成响应消息,最后响应消息通过网络回传至客户端程序。如果客户端程序不要求服务发送响应,那么上述的等待不仅纯属浪费时间,而且还影响客户端程序的响应。在这种情况下,你会发现单向操作可以改进客户端程序的性能。
阅读全文
摘要:WCF客户端通过代理对象可连接至服务。如果服务管理员禁用了服务元数据公布或者出于性能原因,那么在客户端可以通过代码创建ChannelFactory对象连接至服务并与服务通讯;甚至还可以通过扩展ClientBase抽样类与服务交互。使用上述两种方式时有一个前提那就是服务开发人员可以提供包含服务合约的组件。如果该前提也不存在,只要你拥有描述服务接受的SOAP消息和服务发送的响应消息的文档时,那么你也可以使用WCF客户端访问该服务;你可以直接通过通道向服务发送消息。
阅读全文