zoukankan      html  css  js  c++  java
  • wcf 学习1:搭建服务

    一:创建一个解决方案

    1:分别添加:控制台应用程序:Hosting(宿主)、控制台应用程序:Client(客户端)、类库:Service (服务)、类库:Contract(契约)

    2:添加契约:

    右击contract项目,添加接口 ICalcultor

     
    [ServiceContract(Name = "CalcultorService", Namespace = "http://www.artech.com")] 注意:http://www.artech.com 不能写成 http://www.artech.com/ public interface ICalculator { [OperationContract] double Add(double x, double y); [OperationContract] double Subtract(double x, double y); [OperationContract] double Multiply(double x, double y); [OperationContract] double Divide(double x, double y); }

      3:添加服务

    右击Service项目,添加类:Calcutor

    public class CalcultorService : ICalculator
        {
            public double Add(double x, double y)
            {
                return x + y;
            }
    
            public double Subtract(double x, double y)
            {
                return x - y;
            }
    
            public double Multiply(double x, double y)
            {
                return x * y;
            }
    
            public double Divide(double x, double y)
            {
                return x / y;
            }
        }
    

      

    4:配置Hosting(宿主)

    编程方式配置:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ServiceModel;
    using System.ServiceModel.Description;
    using WCFContract;
    using WCFService;
    namespace Host3_26
    {
        class Program
        {
            static void Main(string[] args)
            {
                using (ServiceHost host = new ServiceHost(typeof(CalcultorService)))
                {
                    host.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "http://127.0.0.1:9999/CalcultorService");
                    if (host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null)
                    {
                        ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
                        behavior.HttpGetEnabled = true;
                        behavior.HttpGetUrl = new Uri("http://127.0.0.1:9999/CalcultorService/metadata");
                        host.Description.Behaviors.Add(behavior);
                    }
                    host.Opened += delegate
                    {
                        Console.WriteLine("CalcultorService已经启动,按任意键终止服务!!");
                    };
                    host.Open();
                    Console.Read();
                }
            }
        }
    }
    

      管理方式配置宿主:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.serviceModel>
        <behaviors>
          <serviceBehaviors>
            <behavior name="metadataBehavior">
              <serviceMetadata httpGetEnabled="true"  httpGetUrl="http://127.0.0.1:9999/CalcultorService/metadata"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <services>
          <service name="WCFService.CalcultorService" behaviorConfiguration="metadataBehavior">
            <endpoint address="http://127.0.0.1:9999/CalcultorService"
                      binding="wsHttpBinding"
                      contract="WCFContract.ICalculator"/>
          </service>
        </services>
      </system.serviceModel>
    </configuration>
    

      5:发布宿主

    6:客户端添加服务

    在宿主已经运行的情况下,右击客户端添加服务,路径:

    http://127.0.0.1:9999/CalcultorService/metadata

    cs代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Client3_26.ServiceReference1;
    
    namespace Client3_26
    {
        class Program
        {
            static void Main(string[] args)
            {
                using (CalcultorServiceClient pro = new CalcultorServiceClient())
                {
                    Console.WriteLine(pro.Add(1, 1));
                    Console.Read();
                }
            }
        }
    }
    

     

    //客户端调用服务方法2:
    1:引用契约 using WCFContract;
    2:修改配置文件:
           <endpoint address="http://127.0.0.1:9999/CalcultorService" 
             binding="wsHttpBinding"
              contract="WCFContract.ICalculator"
              name="defaultEndpoint"></endpoint> 3:开始调用 using (ChannelFactory<WCFContract.ICalculator> channe = new ChannelFactory<WCFContract.ICalculator>("defaultEndpoint")) {           WCFContract.ICalculator ca = channe.CreateChannel();           Console.WriteLine(ca.Add(1, 2)); };
  • 相关阅读:
    10-3 集合之Set
    【Angular】排序
    【Mongous】
    【验证码】
    爬虫
    【DOM】
    年月日
    【Mocha】
    【Test】
    洛谷——P1823 音乐会的等待
  • 原文地址:https://www.cnblogs.com/wzq806341010/p/2983612.html
Copyright © 2011-2022 走看看