一.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上
四.客户端调用WCF服务:
在解决方案下面新建控制台应用程序,右键引用添加服务引用,http://10.0.0.217:20000/Service1.svc?wsdl
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进程上,通过服务引用进行服务的调用。