《WCF技术内幕》翻译17:第1部分_第4章_WCF101:WCF快速入门2011-06-08 博客园 Frank Xu Lei译WCF快速入门在本节,我要建立一个HelloWCF应用程序以向计算机科学之神表示我们的敬意。在建立这个应用后,我们分成不同的部分细看。为例子尽量简单明了,我们会把发送者和接受放在一个控制台应用里。让我们现在就开始在控制台应用里构建需要的基础架构。
// File: HelloWCFApp.csusing System;sealed class HelloWCF { static void Main(){ }}
定义服务契约构建HelloWCF应用的第一步是创建服务契约。第9章里会详细介绍契约,现在,可以肯定地说,契约式表示消息应用外形的主要方式。对于外形,我是意思是说我们服务暴露的操作,操作生成、使用的消息schema和每个操作实现的消息交换模式(MEP)。总之,契约定义了我们消息应用生成和使用的东西。大多数契约是带有WCF API定义的属性标记的类型定义。在我们的例子里,服务契约是一个带有System.ServiceModel.ServiceContractAttribute 和System.ServiceModel.OperationContractAttribute标记的接口,如下所示
// File: HelloWCFApp.cs[ServiceContract]public interface IHelloWCF { [OperationContract] void Say(String input);}
在高层次上,我们的服务契约表示我们接收消息的应用包含一个名字为Say的操作,并且这个操作接收一个String类型的参数和void返回类型。发送消息的应用可以用它来构造和发送消息给接收程序。既然我们已经定义的服务契约,那就到了该定义接收程序侦听地址和如何与其它消息参与者交换消息的时候了。定义地址和绑定定义侦听请求消息的地址需要使用System.Uri类型,定义如何与其它消息参与者交换消息需要我们使用System.ServiceModel.Channels.Binding类型。或者这些类型的继承类型。下面的代码说明了如何在我们的应用里使用Uri和Binding类型。
// File: HelloWCFApp.csstatic void Main(){ // define where to listen for messages定义侦听消息的地址 Uri address = new Uri("http://localhost:8000/IHelloWCF"); // define how to exchange messages定义如何交换消息 BasicHttpBinding binding = new BasicHttpBinding();}
注意局部变量address使用的是HTTP格式的统一资源标识符(URI)。选择这个地址强制要求我们使用HTTP传输。更高层次上,绑定是指定传输、消息编排和消息编码的主要方式。局部变量binding是BasicHttpBinding类型的实例。和你从名字看到的一样,BasicHttpBinding创建的是一个用于HTTP传输的消息架构。