WCF的简单使用

WCF简单介绍

WCF(windows communication foundation)是微软推出的数据通信的统一编程模型,在WCF有四个主要的关键点:

abcd

Address(地址):定义服务的地址

Binding(绑定):定义通信的方式(传输协议等)

Contract(契约):定义服务的具体实现

enDpoint(终结点):由上面的abc共同构成终结点,用于服务端和客户端进行通信

WCF服务器创建

核心的dll:system.ServiceModel

由于WCF是面向服务的,面向接口的,所以首先需要创建一个服务接口

1.创建一个接口类IWCFTestService作为服务契约

2.创建一个接口的具体实现类WCFTestService

3.到此为止服务已经编写好了,接下来就是将这个服务放到宿主上,就可以作为服务被调用了。接下来创建一个控制台程序Host作为宿主。

 class Program
    {
        static void Main(string[] args)
        {
            //将服务启动起来
            using(ServiceHost host=new ServiceHost (typeof(BLL.WCFTestService)))
            {
              host.Open();
              Console.WriteLine("服务已经启动");
              Console.ReadKey();
              host.Close();
            }
        }
    }

4.契约部分已经编写完毕,然后就是address、binding、endpoint,这些都是在配置文件中进行配置

<configuration>
  <system.serviceModel>
    <services>
      <service name="BLL.WCFTestService" behaviorConfiguration="behaviorConfiguration">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:9000/"/>
          </baseAddresses>
        </host>
        <endpoint address="http://localhost:9000/" binding="basicHttpBinding" contract="IBLL.IWCFTestService">
        </endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="behaviorConfiguration">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

5.启动控制台程序将服务挂起,然后在浏览器中输入终结点网址,http://localhost:9000/,如下所示,表示服务创建成功

 

6.接下来新建一个客户端,WindowsForm程序对创建的服务进行测试。可以直接跟WebService程序一样直接添加服务引用,系统生成代理类,然后调用相应的api

 private void button1_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtOne.Text) || string.IsNullOrEmpty(txtTwo.Text))
            {
                MessageBox.Show("请输入正确的数字");
            }
            else
            {
                double one = double.Parse(txtOne.Text);
                double two = double.Parse(txtTwo.Text);
                WCFServiceReference.WCFTestServiceClient client = new WCFServiceReference.WCFTestServiceClient();
               double result= client.Add(one,two );
               txtResult.Text = result.ToString();
            }
        }

 7.补充

WCF可以寄宿在任意类型的项目中,如何将WCF服务发布到IIS中去呢,只要创建一个空的web应用程序,然后将这个应用程序发布到IIS中就可以了,你需要在这个web项目中,添加一个“WCF服务”,这是一个一svc为后缀名的文件,添加后系统会默认的创建出契约的接口和实现类。只需要将服务的逻辑添加上,并修改配置文件即可。如果你希望将WCF寄宿到WindowsForm中去,最好不要将启动服务的代码写在Form()初始化中,应该写到Program.cs中,这样可以有效的避免,UI线程堵塞。

上面我们已经创建好了契约,那么如何将我们已经写好的契约添加到空的Web应用程序中呢?

1.添加一个文件。同时将文件的后缀名修改为svc,文件内容:

<%@ ServiceHost Service="BLL.WCFTestService" %>

2.配置web.config文件

<configuration>
  <system.serviceModel>
    <services>
      <service name="BLL.WCFTestService" behaviorConfiguration="behaviorConfiguration">
        <endpoint binding="basicHttpBinding" contract="IBLL.IWCFTestService">
        </endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="behaviorConfiguration">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

上面的配置文件中,没有对address进行配置,因为当部署到IIS上的时候,会为程序分配地址和端口号,服务默认的使用IIS的地址

原文地址:https://www.cnblogs.com/XZhao/p/7301640.html