你的位置:首页 > ASP.net教程

[ASP.net教程]创建WCF服务寄宿到IIS


一.WCF简介:

Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。

整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。

由 .NET Framework 3.0 开始引入。

WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。
WCF合并了Web服务、.net Remoting、消息队列和Enterprise Services的功能并集成在Visual Studio中。
WCF专门用于面向服务开发。

二.创建简单的WCF服务应用程序

1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序。建立完成后如下图所示:



生成的解决方案的项目里面有Service1.Svc,IService1.cs,Web.config三个文件。查看里面的代码:
 // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。  [ServiceContract]  public interface IService1  {    [OperationContract]    string GetData(int value);    [OperationContract]    CompositeType GetDataUsingDataContract(CompositeType composite);    // TODO: 在此添加您的服务操作  }  // 使用下面示例中说明的数据约定将复合类型添加到服务操作。  [DataContract]  public class CompositeType  {    bool boolValue = true;    string stringValue = "Hello ";    [DataMember]    public bool BoolValue    {      get { return boolValue; }      set { boolValue = value; }    }    [DataMember]    public string StringValue    {      get { return stringValue; }      set { stringValue = value; }    }  }

public class Service1 : IService1  {    public string GetData(int value)    {      return string.Format("You entered: {0}", value);    }    public CompositeType GetDataUsingDataContract(CompositeType composite)    {      if (composite == null)      {        throw new ArgumentNullException("composite");      }      if (composite.BoolValue)      {        composite.StringValue += "Suffix";      }      return composite;    }  }

[ServiceContract],来说明接口是一个WCF的接口,如果不加的话,将不能被外部调用。
[OperationContract],来说明该方法是一个WCF接口的方法,不加的话同上。
[DataContract]一旦声明一个类型为DataContract,那么该类型就可以被序列化在服务端和客户端之间传送
[DataMember](数据成员)只有标记为DataMember,在交换数据时,才能进行传送。
将该项目的Service1.svc设为起始页面,F5运行调试。

双击GetData()方法,输入value=1 》invoke》You entered :1说明服务测试成功。

三.将WCF服务发布寄宿到IIS上

右键项目,发布为文件系统。




确定已经启用或关闭Windows功能里面安装了wcf服务和IIS


打开IIS,添加站点,启动。设置身份为Everyone可以访问。

打开浏览器,输入:10.0.0.217:20000进入到目录:


可以发现里面有User.svc的和Sercice1.svc的WCF服务接口,点击进入>


说明我们的WCF服务寄宿到IIS上面成功。

四.客户端调用WCF服务;

在解决方案下面新建控制台应用程序,右键引用添加服务引用,http://10.0.0.217:20000/Service1.svc?wsdl


命名空间可以进行修改.引用成功后发现多了两个命名空间命名的服务文件:ServiceReference1,ServiceReference2,这里是分别是Service1.svc,User.svc的服务引用。
 class Program  {    static void Main(string[] args)    {      WcfTest.Demo1.ServiceReference1.Service1Client c = new ServiceReference1.Service1Client();      Console.WriteLine(c.GetData(1));      WcfTest.Demo1.ServiceReference2.UserClient u = new ServiceReference2.UserClient();      Console.WriteLine(u.InsertUser("张三"));    }  }



这样就创建了一个简单WCF服务应用程序,寄宿到了IIS进程上,通过服务引用进行服务的调用

使用如下: