Step by Step 创建一个WCF Service

 

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

转载请注明出处

 

(一)创建WCF Service

(1)创建WCF Service类库

 

创建一个Class Library的项目:

Step by Step 创建一个WCF Service_第1张图片

 

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

Step by Step 创建一个WCF Service_第2张图片

 

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

Step by Step 创建一个WCF Service_第3张图片

 

 

修改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:

Step by Step 创建一个WCF Service_第4张图片

 

添加一个新Item WCF Service

Step by Step 创建一个WCF Service_第5张图片

Step by Step 创建一个WCF Service_第6张图片

 

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

添加HelloService Class Library的项目引用:

 

Step by Step 创建一个WCF Service_第7张图片

 

修改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项目

Step by Step 创建一个WCF Service_第8张图片

Step by Step 创建一个WCF Service_第9张图片

Step by Step 创建一个WCF Service_第10张图片

Step by Step 创建一个WCF Service_第11张图片

Step by Step 创建一个WCF Service_第12张图片

Step by Step 创建一个WCF Service_第13张图片

 

(2)部署到IIS

Step by Step 创建一个WCF Service_第14张图片

Step by Step 创建一个WCF Service_第15张图片

Step by Step 创建一个WCF Service_第16张图片

 

浏览HelloService.svc

Step by Step 创建一个WCF Service_第17张图片

Step by Step 创建一个WCF Service_第18张图片

 

 

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

Step by Step 创建一个WCF Service_第19张图片

 

添加一个服务引用:

Step by Step 创建一个WCF Service_第20张图片

Step by Step 创建一个WCF Service_第21张图片

Step by Step 创建一个WCF Service_第22张图片

Step by Step 创建一个WCF Service_第23张图片

 

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

 

运行代码,效果如下:

Step by Step 创建一个WCF Service_第24张图片

 

(四)总结

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

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

 

service的代码可以在

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

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

(3) App_Code文件夹下

 

 

你可能感兴趣的:(Step by Step 创建一个WCF Service)