• 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文件夹下

  • 相关阅读:
    odoo 自定义视图
    Odoo 模型之间的关系 笔记
    C#中计算两点之间连线的角度
    Jquery中1.6.x中新的方法prop()方法
    VS2010快捷键说明
    将DATAtable转换成 json格式
    在IIS中执行EXE文件时的问题
    WebDev.WebServer40.exe已停止工作
    sqllite developer过期解决方案
    c#的DateTime.Now函数详解
  • 原文地址:https://www.cnblogs.com/jfzhu/p/4025448.html
Copyright © 2020-2023  润新知