码迷,mamicode.com
首页 > 其他好文 > 详细

wcf 学习程序

时间:2014-10-29 14:46:24      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   os   ar   java   for   

(一)创建WCF Service

(1)创建WCF Service类库

 

创建一个Class Library的项目:

bubuko.com,布布扣

 

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

bubuko.com,布布扣

 

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

bubuko.com,布布扣

 

 

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

IHelloService.cs:

 

bubuko.com,布布扣
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);
    }
}
bubuko.com,布布扣

 

HelloService.cs:

 

bubuko.com,布布扣
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;
        }
    }
}
bubuko.com,布布扣

 

(2)创建WCF的Host

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

bubuko.com,布布扣

 

添加一个新Item WCF Service

bubuko.com,布布扣

bubuko.com,布布扣

 

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

添加HelloService Class Library的项目引用:

 

bubuko.com,布布扣

 

修改HelloService.svc为:

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

  

Web.config:

 

bubuko.com,布布扣
<?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>
bubuko.com,布布扣

 

其中,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项目

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

 

(2)部署到IIS

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

 

浏览HelloService.svc

bubuko.com,布布扣

bubuko.com,布布扣

 

 

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

bubuko.com,布布扣

 

添加一个服务引用:

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

 

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

 

运行代码,效果如下:

bubuko.com,布布扣

 

(四)总结

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

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

 

service的代码可以在

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

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

(3) App_Code文件夹下

wcf 学习程序

标签:style   blog   http   io   color   os   ar   java   for   

原文地址:http://www.cnblogs.com/highyunxiao/p/4059390.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!