我的第一个WCF

好吧,作为我学习WCF的开始,就创建一个简单的WCF程序。在参考了MSDNWCF的入门教程发现创建一个WCF程序需要六个步骤,那么开始吧。

定义服务协定

    首先使用接口创建Windows Communication Foundation 协定,这里我们需要引入System.ServiceModel(WCF框架的绝大部分实现和API定义在该程序集中)这个命名空间。

    通过ServiceContractAttribute这个特性在接口上定义服务协定,在此基础上我们还需要把公开的服务操作定义OperationContract特性,因为接口的操作并不能自动成为服务的操作,在此需要显示的定义。

   1: [ServiceContract]
   2: public interface IEcho
   3: {
   4:     [OperationContract(Name="EchoService")]
   5:     string Echo(string input);
   6: }

实现服务协定

     定义好了服务协定(其实他就是一个接口不过增加了WCF的特性的接口)就需要实现这个服务协定。可以看到EchoService需要实现IEcho接口,这里就直接返回他传进来的字符串。

   1: public class EchoService:IEcho
   2: {
   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:     try
   8:     {
   9:         //配置终结点公开绑定,协议,地址
  10:         selfHost.AddServiceEndpoint(
  11:             typeof(IEcho),
  12:             new WSHttpBinding(),
  13:             "EchoService");
  14:         //启动元数据交换将HttpGetEnabled属性设置为true
  15:         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: }

你可能感兴趣的:(WCF)