WCF学习笔记1

来源:互联网 发布:各大电商平台双11数据 编辑:程序博客网 时间:2024/06/06 00:20

WCF全面解析


1、WCF初建


创建4个:

 第一个类库service.InterFace:用于服务契约(service contract)引用System.serviceModel.dll;

第二个类库service:用于实际第一个类库

第三个控制台Hosting :作为服务宿主的控制台应用,引用上面两个项目和System.serviceModel.dll

第四个控制台Client:应用模拟服务的客户端。


打开程序报错误:其他信息: HTTP 无法注册 URL http://+:3721/calculatorservice/。进程不具有此命名空间的访问权限....

解决办法:以管理员的身份打开vs,再加载程序就OK了

2、创建WCFHosting的几种方法比较:

第一代码:

 

        static void Main(string[] args)        {            using (ServiceHost host = new ServiceHost(typeof(CalculatorService)))            {                host.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(),"http://127.0.0.1:3721/calculatorservice");                if (host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null)                {                    ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();                    behavior.HttpGetEnabled = true;                    behavior.HttpGetUrl = new Uri("http://127.0.0.1:3721/calculatorservice/metadata");                    host.Description.Behaviors.Add(behavior);                }                host.Opened += delegate                {                    Console.WriteLine("CalculaorService已经启动,按任意键终止服务!");                };                host.Open();                Console.Read();            }        }

第二app.config+少量代码

 <system.serviceModel>    <behaviors>      <serviceBehaviors>        <behavior name="metadataBehavior">          <serviceMetadata httpGetEnabled="true"                            httpGetUrl="http://127.0.0.1:3721/calculatorservice/metadata" />        </behavior>      </serviceBehaviors>    </behaviors>    <services>      <service name="Artech.WcfServices.Service.CalculatorService"               behaviorConfiguration="metadataBehavior" >        <endpoint address="http://127.0.0.1:3721/calculatorservice"                  binding="wsHttpBinding"                   contract="Artech.WcfServices.Service.Interface.ICalculator" />      </service>    </services>  </system.serviceModel>

 static void Main(string[] args)        {            using (ServiceHost host = new ServiceHost(typeof(CalculatorService)))            {                host.Opened += delegate                {                    Console.WriteLine("CalculaorService已经启动,按任意键终止服务!");                };                host.Open();                Console.Read();            }        }

第三种 IIS寄宿

比较简单,直接右键创建WCF服务应用程序,修改为相应的类库。

0 0