Step by Step 创建一个WCF Service_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > Step by Step 创建一个WCF Service

Step by Step 创建一个WCF Service

 2014/10/15 3:23:05  JF Zhu  程序员俱乐部  我要评论(0)
  • 摘要:原创地址:http://www.cnblogs.com/jfzhu/p/4025448.html转载请注明出处(一)创建WCFService(1)创建WCFService类库创建一个ClassLibrary的项目:删除掉默认的Class1.cs文件,然后添加一个WCFService项目:VisualStudio会自动帮助你生成两个文件:HelloService.cs和IHelloService.cs,另外还自动添加了System.ServiceModel引用,它是WCF的核心
  • 标签:创建 Service 一个 WCF

 

原创地址: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文件夹下

上一篇: 我的一个朋友过来面试引发我要说的一个小话题 下一篇: 没有下一篇了!
发表评论
用户名: 匿名