zoukankan      html  css  js  c++  java
  • Step by Step 创建一个WCF Service

    原创地址:http://www.cnblogs.com/jfzhu/p/4025448.html

    转载请注明出处

    (一)创建WCF Service

    (1)创建WCF Service类库

    创建一个Class Library的项目:

    image

    删除掉默认的Class1.cs文件,然后添加一个WCF Service项目:

    image

    Visual Studio会自动帮助你生成两个文件:HelloService.cs 和 IHelloService.cs,另外还自动添加了System.ServiceModel引用,它是WCF的核心。

    image

    修改IHelloService.cs和HelloService.cs文件。

    IHelloService.cs:

    namespace HelloService
    {
        // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IHelloService" in both code and config file together.
        [ServiceContract]
        public interface IHelloService
        {
            [OperationContract]
            string GetMessage(string name);
        }
    }

    HelloService.cs:

    namespace HelloService
    {
        // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "HelloService" in both code and config file together.
        public class HelloService : IHelloService
        {
    
            public string GetMessage(string name)
            {
                return "Hello " + name;
            }
        }
    }

    (2)创建WCF的Host

    添加一个新的ASP.NET Empty Web Application:

    image

    添加一个新Item WCF Service

    image

    image

    删除HelloService.svc.cs和IHelloService.cs文件。

    添加HelloService Class Library的项目引用:

    image

    修改HelloService.svc为:

    <%@ ServiceHost Language="C#" Debug="true" Service="HelloService.HelloService" %>

      

    Web.config:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.serviceModel>
        <services>
          <service name="HelloService.HelloService" behaviorConfiguration="metaBehavior">
            <endpoint address="HelloService" binding="basicHttpBinding" contract="HelloService.IHelloService"></endpoint>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>
            <host>
              <baseAddresses>
                <add baseAddress="http://localhost:8080"/>
              </baseAddresses>
            </host>
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="metaBehavior">
              <serviceMetadata httpGetEnabled="true"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
    </configuration>

    其中,service name=”命名空间.类名”,behaviorConfiguration是用来关联下面behavior的定义的。

    endpoint address中定义的是相对地址,与baseAddress结合起来为完整地址

    endpoint contract=”命名空间.接口名”

    两个endpoint,第一个binding是basicHttpBinding,用于HTTP协议;第二个endpoint用于交换metadata,binding为mexHttpBinding。

    其中behavior的定义是用来允许交换metadata的。

    Build解决方案,如果没有错误就进行到下一步,部署WCF Service到IIS

    (二)部署WCF Service到IIS

    (1)Publish HelloServiceIISHost项目

    image

    image

    image

    image

    image

    image

    (2)部署到IIS

    image

    image

    image

    浏览HelloService.svc

    image

    image

    (三)创建一个Windows Form来调用WCF Service

    image

    添加一个服务引用:

    image

    image

    image

    image

    private void button1_Click(object sender, EventArgs e) 
    { 
        HelloService.HelloServiceClient client = new HelloService.HelloServiceClient(); 
        label1.Text = client.GetMessage(textBox1.Text); 
    } 

    运行代码,效果如下:

    image

    (四)总结

    svc文件中,包含着服务指令,Service属性指明文件指向的是哪个服务

    <%@ ServiceHost Language="C#" Debug="true" Service="HelloService.HelloService" %>

    service的代码可以在

    (1) XXX.svc.cs的文件中

    (2) 一个独立的Assembly(如同本文)

    (3) App_Code文件夹下

  • 相关阅读:
    数据结构——霍夫曼树及题目场景应用
    算法——模式匹配
    深入理解Java虚拟机(十)——线程安全与锁优化
    深入理解Java虚拟机(九)——后端编译与优化
    算法——计算点集中共线最多点的直线
    算法——移掉K位数字使得数值最小
    算法—— n个骰子的点数
    Java并发编程的艺术(十二)——并发容器和框架
    算法——不用加减乘除符号运算加法
    5章-项目范围管理-day4
  • 原文地址:https://www.cnblogs.com/jfzhu/p/4025448.html
Copyright © 2011-2022 走看看