zoukankan      html  css  js  c++  java
  • WCF框架基础(二)

    WCF协定以及服务逻辑实现之后,如果客户端能够对其进行调用,则需要将上文的服务协定运行起来,运行服务协定需要创建服务终结点、地址、激活元数据交换、以及最终的服务启动和停止功能

    1.创建基本地址和服务主机

     Uri baseAddress = new Uri("http://localhost:8000/ServiceModelSamples/Service");//创建基本地址
     ServiceHost selfHost = new ServiceHost(typeof(CalculatorService),baseAddress);//创建服务主机

    2.添加服务终结点

     selfHost.AddServiceEndpoint(typeof(IService), new WSHttpBinding(), "CalculatorService");//参数分别为接口类型、传输协议、服务名称

    3.启动元数据交换

             ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
             smb.HttpGetEnabled = true;//启用HttpGet
             selfHost.Description.Behaviors.Add(smb);//添加元数据

    4.启动和终止WCF服务

              selfHost.Open();
              Console.WriteLine("服务已启动.");
              Console.WriteLine("按Enter终止服务.");
              Console.WriteLine();
              Console.ReadLine();
              selfHost.Close();

    至此服务就能运行起来 完整代码如下

      static void Main(string[] args)
            {
                Uri baseAddress = new Uri("http://localhost:8000/ServiceModelSamples/Service");
                ServiceHost selfHost = new ServiceHost(typeof(CalculatorService),baseAddress);
                try
                {
                    selfHost.AddServiceEndpoint(typeof(IService), new WSHttpBinding(), "CalculatorService");
                    ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
                    smb.HttpGetEnabled = true;
                    selfHost.Description.Behaviors.Add(smb);
                    selfHost.Open();
                    Console.WriteLine("服务已启动.");
                    Console.WriteLine("按Enter终止服务.");
                    Console.WriteLine();
                    Console.ReadLine();
                    selfHost.Close();
                }
                catch(CommunicationException e)
                {
                    Console.WriteLine("异常:{0}",e.Message);
                    selfHost.Abort();
                }
            }

    在WCF客户端创建和调用时 必需保持该服务在启动状态

  • 相关阅读:
    oralce的function处理考勤时间节点以及计算工作时间
    如何把虚拟机上的文本或是文件复制粘贴到本地?
    Sqlserver语句对表结构的操作
    ubuntu下提示/boot空间不足,解决办法
    原码、反码和补码
    C++中四种类型转换方式
    C语言之 短路原则
    ubuntu下为opera26.0安装flash
    C++函数重载
    C++内联函数
  • 原文地址:https://www.cnblogs.com/akingyao/p/2673293.html
Copyright © 2011-2022 走看看