我的第一个WCF
好吧,作为我学习WCF的开始,就创建一个简单的WCF程序。在参考了MSDNWCF的入门教程发现创建一个WCF程序需要六个步骤,那么开始吧。
定义服务协定
首先使用接口创建Windows Communication Foundation 协定,这里我们需要引入System.ServiceModel(WCF框架的绝大部分实现和API定义在该程序集中)这个命名空间。
通过ServiceContractAttribute这个特性在接口上定义服务协定,在此基础上我们还需要把公开的服务操作定义OperationContract特性,因为接口的操作并不能自动成为服务的操作,在此需要显示的定义。
1: [ServiceContract]2: public interface IEcho3: {4: [OperationContract(Name="EchoService")]5: string Echo(string input);6: }
实现服务协定
定义好了服务协定(其实他就是一个接口不过增加了WCF的特性的接口)就需要实现这个服务协定。可以看到EchoService需要实现IEcho接口,这里就直接返回他传进来的字符串。
1: public class EchoService:IEcho2: {3: public string Echo(string input)4: {5: return input;6: }7: }
承载和运行服务
1: static void Main(string[] args)2: {3: Uri baseAddress = new Uri(("http://localhost:8000/Contracts/Service"));4:5: ServiceHost selfHost = new ServiceHost(typeof(EchoService), baseAddress);6:7: try8: {9: //配置终结点公开绑定,协议,地址10: selfHost.AddServiceEndpoint(11: typeof(IEcho),12: new WSHttpBinding(),13: "EchoService");14: //启动元数据交换将HttpGetEnabled属性设置为true15: ServiceMetadataBehavior smb = new ServiceMetadataBehavior();16: smb.HttpGetEnabled = true;17: selfHost.Description.Behaviors.Add(smb);18:19: selfHost.Open();20: Console.WriteLine("The service is ready.");21: Console.WriteLine("Press <ENTER> to terminate service.");22: Console.WriteLine();23: Console.ReadLine();24:25: // Close the ServiceHostBase to shutdown the service.26: selfHost.Close();27: }28: catch (CommunicationException ce)29: {30: Console.WriteLine("An exception occurred: {0}", ce.Message);31: selfHost.Abort();32: Console.ReadLine();33: }34: }
浙公网安备 33010602011771号