WCF入门一[WCF概述]

1、什么是WCF

  WCF是使用托管代码创建和运行面向服务(Service Oriented)应用程序的统一框架。它使得开发者可以创建一个跨平台的、安全、可信赖、事务性的解决方案,且能与已有系统兼容协做。WCF是微软分布 式应用程序开发的集大成者,它整合了.Net平台下全部的和分布式系统有关的技术,例如.Net Remoting、ASMX、WSE和MSMQ(消息队列)。以通讯(Communiation)范围而论,它能够跨进程、跨机器、跨子网、企业网乃至于 Internet;以宿主程序而论,能够以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+做为宿主(Host)。WCF能够支持的协议包括TCP,HTTP,跨进程以及自定义,安全模式则包括SAML, Kerberos,X509,用户/密码,自定义等多种标准与模式。也就是说,在WCF框架下,开发基于SOA的分布式系统变得容易了,微软将全部与此相 关的技术要素都包含在内,掌握了WCF,就至关于掌握了叩开SOA大门的钥匙。安全

  最终目标是经过进程或不一样的系统、经过本地网络或是经过Internet收发客户和服务之间的消息。服务器

2、第一个WCF程序

  1.咱们先新建一个项目,选择WCF中的WCF服务应用程序新建:网络

  2.系统生成了两个默认文件:IService1.cs和Service1.svc,其中IService1.cs是定义接口的,Service1.svc用来实现该接口。在这两个文件中能够看到以下的代码:框架

// 注意: 使用“重构”菜单上的“重命名”命令,能够同时更改代码和配置文件中的接口名“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 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; }

  能够看到接口文件IService1.cs里有几个特性分别是:[ServiceContract]、[OperationContract]、[DataContract]、[DataMember],大体的用途以下:异步

  [ServiceContract]:指明该接口是一个WCF的服务契约,能够被外部的调用,不加则没法被外部调用。分布式

  [OperationContract]:指明该方法是一个WCF的方法契约,能够被外部的调用,不加则没法被外部调用。工具

  [DataContract]:数据契约,指明该类是可供服务端和客户端相互传递自定义数据的类型,声明后该类型就能够被序列化在服务端和客户端之间传送。学习

  [DataMember]:数据成员,声明后的属性能够参与到客户端和服务器端的类的属性的序列化,没有声明的不参与序列化。测试

  在Service1.svc中已经实现了接口中的方法,将Service1.svc设置为启动项,后调试会以下所示,这是vs自带的服务测试的工具,不过没法测试异步的服务。spa

  

  双击左侧树状图中的方法GetData(),在上方输入值后点击调用能够下方看到方法返回值,则说明咱们的接口成功了。

 

 3、WCF服务的使用

  1.接下来对咱们的WCF程序进行发布到本地文件,发布的过程和WEB的项目发布相似,发布后咱们部署到IIS上面。右键浏览Service1.svc出现以下的页面后代表发布成功。http://192.168.3.30:7358/Service1.svc?wsdl就是咱们须要引用的服务地址。

  注意若是没法发布成功,多是部分的Windows功能没有开启,以下所示。

  

  2.新建一个新的控制台应用程序,右键引用->添加服务引用->将WCF服务引用地址输入点击确认便可引用成功。

  引用成功后在Service References文件夹下出现了一个ServiceReference1服务,在控制台程序中引用WCF服务的命名空间using ConsoleApplication2.ServiceReference1;使用以下代码便可访问服务接口。

  

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //添加WCF的服务命名空间
using ConsoleApplication2.ServiceReference1; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { //Service1Client是在添加服务引用后服务器端的Service1在客户端的代理类,通常的格式都是"*Client"这种格式的
            Service1Client sercive = new Service1Client(); string str = sercive.GetData(666); Console.WriteLine("WCF服务返回值为:" + str); Console.ReadKey(); } } }

  返回结果以下:

4、说明

这个随笔是我本身学习流程的一个记录,和你们共勉。

相关文章
相关标签/搜索