wcf入门教程1
WCF基础教程——vs2013创建wcf应用程序
WCF基础教程——vs2013创建wcf应⽤程序引⾔近期在项⽬中见到了师哥们常常谈到的WCF这⽅⾯的知识。
当时在写程序的时候也没有理解wcf究竟是个什么东西?以及我们为什么在项⽬中会採⽤这种框架来实现,仅仅是依照师哥他们写好的代码编写同样格式的代码。
随着代码敲的越来越多就慢慢的懂得了如何实现client和服务端的连同,可是wcf真正的执⾏机制还是⼀点也不懂,近期在听师哥们讲课的时候有解说了⼀些关于WCF的知识,⾃⼰感觉应该好好理解这⽅⾯的知识了,⽽且这个东西在项⽬中是⾮经常见的,以下就结合我实现的⼀个⼩Demo来和⼤家分享⼀下。
当中⼀些最主要的概念。
⼤家能够參考关于wcf的介绍。
在这⾥给⼤家两张图对照⼀下,能⾮常好的体现出wcf的⽤途:基于的应⽤程序与⾯向服务开发在基于 的应⽤程序开发中,我们由客户机的浏览器訪问应⽤程序server,然后通过应⽤程序server中的数据库连接去连接数据库server,读取或是操作数据,有时候可能会多⼀个⽂件server。
⼤家能够观察到,基本上全部的应⽤都放在了⼀台server上,但对于⼀个,因为业务上的须要(如:与外部系统交互),⼀台server⾮常难⽀持全部的应⽤。
以下来看这样⼀张图客户机使⽤浏览器訪问serverA,serverA为了业务须要与其它各种应⽤部署在serverB、C、D....再通过WCF技术互相通信,相互訪问...然⽽⾯向服务的优点不只在此。
他还提供了不同语⾔不同操作系统的可交互性..以下我们就開始创建⼀个client和服务端分离的wcf应⽤程序:1、创建我们的wcf的服务端——在新建项⽬的时候选择WCF服务应⽤程序2、从图中我们能够看出,在我们建⽴好的解决⽅式中有默认的两个service.svc和Iservice.cs⽂件。
我们能够将这两个⽂件删除。
然后加⼊我们⾃⼰的wcf服务。
步骤如图:3、在解决⽅式⾥⾯我们能够看见,当我们加⼊了⼀个User.svc后。
跟我一起从零开始学WCF系列课程
跟我⼀起从零开始学WCF系列课程系列课程 >跟我⼀起从零开始学WCF系列课程跟我⼀起从零开始学WCF系列课程(1):WCF 讲 师:徐长龙课程简介:课程简介:从本堂课开始我们将开启⼀个新的系列-概述 (Level 200)讲 师:Windows Communication Foundation(WCF)。
本系列课程将听众假定为对WCF没有任何了解,从零开始⼀步⼀步带领⼤家进⼊到WCF领域。
WCF是使⽤托管代码建⽴和运⾏⾯向服务(Service Oriented)应⽤程序的统⼀框架。
它使得开发者能够建⽴⼀个跨平台的安全、可信赖、事务性的解决⽅案,且能与已有系统兼容协作。
WCF是微软分布式应⽤程序开发的集⼤成者,它整合了.Net平台下所有的和分布式系统有关的技术,例如.Net Remoting、ASMX、WSE 和MSMQ。
以通信(Communiation)范围⽽论,它可以跨进程、跨机器、跨⼦⽹、企业⽹乃⾄于Internet;以宿主程序⽽论,可以以,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。
Demo下载:⽆相关下载讲 师:徐长跟我⼀起从零开始学WCF系列课程(2):设计和实现服务协定 (Level 200)讲 师:龙课程简介:课程简介:在了解了WCF的概念后,本堂课我们将开始学习如何定义和实现WCF服务协定。
包括单向和双⼯WCF服务协定,参数和返回值的定义,数据协定,Out和Ref参数等。
讲 师:徐长龙课程简跟我⼀起从零开始学WCF系列课程(3):配置服务 (Level 200)讲 师:介:介:在设计和实现服务协定后,即可配置服务。
在其中可以定义和⾃定义如何向客户端公开服务,包括指定可以找到服务的地址、服务⽤于发送和接收消息的传输和消息编码,以及服务需要的安全类型。
Demo下载:⽆相关下载跟我⼀起从零开始学WCF系列课程(4): 承载服务 (Level 200)讲 师:讲 师:徐长龙课程简介:服务若要成为活动的,必须承载于适当的运⾏环境中。
WCF入门教程
WCF入门教程这一系列文章的内容是从MSDN中COPY过来的,讲述的是最简单的WCF程序示例:如何在控制台应用程序实现和承载WCF服务,以及如何创建、配置和使用WCF客户端。
文章主体可分为两部分,分别介绍服务器端和客户端的编程实现。
细分的话,可以分为六项任务。
服务器端定义WCF服务协定(任务一)这是创建基本Windows Communication Foundation (WCF) 服务和可以使用该服务的客户端所需的六项任务中的第一项任务。
创建基本WCF 服务时,第一项任务是为与外界共享的服务创建协定,并在其中描述如何与该服务进行通信。
具体步骤为:1、创建新的控制台应用程序项目。
在“新建项目”对话框中,选中“Visual Basic”或“Visual C#”,并选择“控制台应用程序”模板,并命名为Service。
使用默认的位置。
2、将默认的Service命名空间更改为Microsoft.ServiceModel.Samples。
3、为项目提供对System.ServiceModel命名空间的引用:右击“解决方案资源管理器”中的“Service”项目,选择“添加引用”项,在弹出的对话框中的“.NET”选项卡里的“组件名称”中选择“System.ServiceModel”,然后单击“确定”。
下面是编程步骤:1、为System.ServiceModel命名空间添加一个using语句。
using System.ServiceModel;2、创建一个新的ICalculator 接口,并将ServiceContractAttribute属性应用于该接口,并将Namespace 值设置为“http://Microsoft.ServiceModel.Samples”。
此命名空间指定该服务在计算机上的路径,并构成该服务的基址部分。
请注意,在通过采用方括号表示法的属性来批注接口或类时,该属性类可以从其名称中去掉“Attribute”部分。
跟我学习WCF服务程序第一天:走近WCF
(一)走近WCF1.什么是WCF?Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。
整合了原有的windows通讯的.net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。
本质上来讲,WCF其实是一套软件开发包。
WCF是.NET框架的一部分,由.NETFramework3.0 开始引入,与Windows Presentation Foundation及WindowsWorkflow Foundation并行为新一代Windows操作系统以及WinFX 的三个重大应用程序开发类库。
在.NET Framework2.0 以及前版本中,微软发展了WebService(SOAP with HTTP communication),.NET Remoting (TCP/HTTP/Pipelinecommunication) 以及基础的Winsock 等通信支持。
由于各个通信方法的设计方法不同,而且彼此之间也有相互的重叠性,对于开发人员来说,不同的选择会有不同的程序设计模型,而且必须要重新学习,让开发人员在使用中有许多不便。
同时,面向服务架构(Service-Oriented Architecture) 也开始盛行于软件工业中,因此微软重新查看了这些通信方法,并设计了一个统一的程序开发模型,对于数据通信提供了最基本最有弹性的支持,这就是WCF。
2.WCF体系架构简介由上图可以看出,WCF框架服务分为四个部分:1、协定(也叫契约)2、服务运行时3、消息传递4、激活和承载(宿主程序)3.WCF基础概念介绍地址:在WCF中,每一个服务都有唯一的地址(Address)。
地址包含两个重要的元素:服务位置及传输协议地址通信格式:[基地址]/[可选的URI]基地址常用格式:[传输协议]://[机器名或域名][:可选端口]备注:URI可以是任意的唯一标识的字符串,如服务台名称或全局统一标识符(GUID)绑定:WCF引入绑定(binding),将这些通信特征组合在一起。
WCF 一步一步从入门到精通(一)建立一个简单入门的例子(适合一点不会的朋友阅读)
WCF 一步一步从入门到精通(一)建立一个简单入门的例子(适合一点不会的朋友阅读)Windows Communication Foundation (WCF) 是一个统一框架,用于创建既安全可靠又可交互的分布式事务处理应用程序。
在我学习一样新的技术的时候总喜欢一开始就知道他如何使用和配置,然后再深入的了解的更多细节。
下面我们就通过图片一步一步的从一点不会开始建立一个简单的WCF程序(这个例子取自微软,很简单):我使用的环境是: VSTS2008 sp11.建立一个名为WCF的空解决方案,再右键点击他,为这个解决方案添加一个“WCF 服务库”项目WCF服务库被添加进去,结果如下2.WCF项目中有两个默认建立好的文件Iservice1.cs和Service1.cs ,我们下面要对这两个文件稍稍的做一下修改IService1.csusing System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;using System.Text;namespace WcfServiceLibrary{// 注意: 如果更改此处的接口名称“IService1”,也必须更新 App.config 中对“IService1”的引用。
[ServiceContract]public interface IService1{[OperationContract]string GetData(string value);[OperationContract]CompositeType GetDataUsingDataContract(CompositeType composite);// 任务: 在此处添加服务操作}// 使用下面示例中说明的数据协定将复合类型添加到服务操作[DataContract]public class CompositeType{bool boolValue = false;string stringValue = "朋友 ";[DataMember]public bool BoolValue{get { return boolValue; }set { boolValue = value; }}[DataMember]public string StringValue{get { return stringValue; }set { stringValue = value; }}}}Service1.csusing System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;using System.Text;namespace WcfServiceLibrary{// 注意: 如果更改此处的类名“IService1”,也必须更新 App.config 中对“IService1”的引用。
WCF入门教程
WCF入门教程本节中包含的主题旨在帮助您快速了解 Windows Communication Foundation (WCF) 编程体验。
这些主题要根据本主题底部的列表中的顺序完成。
通过学习本教程,您可以初步了解创建 WCF 服务和客户端应用程序所需的步骤。
服务是一种构造,它公开一个或多个终结点,其中每个终结点都公开一项或多项服务操作。
服务的终结点指定下列信息:服务所在的位置;一个绑定,其中包含客户端必须与服务进行通信的信息;一个协定,用于定义服务向其客户端提供的功能。
在完成本教程中的系列主题之后,您将会得到一个正在运行的服务,以及一个可以调用该服务的操作的客户端。
前三个主题描述如何使用协定定义服务,如何实现服务,以及如何在代码中配置服务、承载服务和运行服务。
所创建的服务是自承载服务,客户端和服务都在同一计算机上运行。
服务使用代码而非配置进行配置。
另外还可以将服务承载于 Internet 信息服务 (IIS) 下。
有关如何执行此操作的更多信息,请参见“如何:如何:在 IIS 中承载 WCF 服务”。
也可以在配置文件中配置服务。
有关使用配置文件的更多信息,请参见使用配置文件配置服务。
后三个主题描述如何创建客户端代理,如何配置客户端应用程序,以及如何创建和使用可以访问服务功能的客户端。
服务会发布可以访问的元数据,这些数据定义了客户端应用程序与服务操作进行通信所需的构造。
WCF 提供了一个ServiceModel Metadata Utility Tool (Svcutil.exe)来自动完成以下过程:访问发布的这些元数据,然后使用这些元数据来构造和配置服务的客户端应用程序。
本节中的所有主题均假定您使用 Visual Studio 2008 作为开发环境。
如果您使用的是其他开发环境,请忽略特定于 Visual Studio 的说明。
注意:如果运行的是 Windows Vista,则必须通过在“开始”菜单上右击 Microsoft Visual Studio 2008,然后选择“以管理员身份运行”的方式来启动 Visual Studio。
WCF入门程序
WCF教程系列(1)-创建第一个WCF程序作为微软技术.net 3.5的三大核心技术之一的WCF虽然没有WPF美丽的外观但是它却是我们开发分布式程序的利器但是目前关于WCF方面的资料相当稀少希望我的这一系列文章可以帮助大家尽快入门下面先介绍一下我的开发环境吧操作系统:windows vista business版本编译器:Visual Studio 2008(英文专业版)WCF的三大核心是ABC也就是A代表Address-where(对象在哪里)B代表Binding-how(通过什么协议取得对象)C代表Contact(契约)-what(定义的对象是什么,如何操纵)其他的理论知识大家可以参见《Programming WCF Service》或者今年3月份刚刚出版的《Essential Windows Commmunication Foundation》现在用In Action的方式来手把手教大家创建第一个WCF程序首先如下图所示创建一个空的解决方案接下来右键点击解决方案HelloWCF选择Add->New Project并选择Console Application模板并选择名为项目名为Host(服务器端)接下来右键点击Host项目选择Add->New Item并选择Webservice模板(文件命名为HelloWCFService)将创建三个文件IHelloWCFService.cs,HelloWCFService.cs以及App.config文件IHelloWCFService.cs代码如下using System.ServiceModel;namespace Host{[ServiceContract]public interface IHelloWCFService{[OperationContract]string HelloWCF(string message);}}而HelloWCFService.cs代码实现如下using System;namespace Host{public class HelloWCFService : IHelloWCFService{public string HelloWCF(string message){return string.Format("你在{0}收到信息:{1}",DateTime.Now,message);}}}App.config文件原则上可以不用改,但是address太长了(默认的为baseAddress=http://localhost:8731/Design_Time_Addresses/Host/HelloWCFS ervice/)缩短为baseAddress=http://localhost:8731/HelloWCFService/并修改Program.cs文件为using System;using System.ServiceModel;namespace Host{class Program{static void Main(string[] args){using(ServiceHost host=newServiceHost(typeof(Host.HelloWCFService))){host.Open();Console.ReadLine();host.Close();}}}}编译并生成Host.exe文件接下来创建客户端程序为Console Application项目Client启动Host.exe文件右键点击Client项目并选择Add Service Reference...并且在Address的TextBox里面输入服务器的地址(就是咱们前面设置的baseaddress地址),并点击Go将得到目标服务器上面的Services,如下图所示这一步见在客户端间接借助SvcUtil.exe文件创建客户端代理(using Client.HelloWCF;)以及配置文件app.config修改客户端的程序如下using System;using Client.HelloWCF;namespace Client{class Program{static void Main(string[] args){HelloWCF.HelloWCFServiceClient proxy=new HelloWCFServiceClient();string str = proxy.HelloWCF("欢迎来到WCF村!");Console.WriteLine(str);Console.ReadLine();}}}就可以获取得到服务器的对象了。
WCF配置及入门
完全不使用配置文件构建和使用 WCF 服务只使用代码而不用配置文件的情况不适合 IIS 为宿主的情况,IIS 宿主必须使用配置文 件配置 WCF 的 ServiceHost. 1、 服务端 1.1. 准备 Contract 和实现 Contract 的服务 很简单的一个 Contract(Interface)和实现这个 Contract(实现这个接口的类)的服 务。
这是 VS2005 中使用 add new item,选 WCF Service 后自动生成的一个模板例子服务 代码。
以下为引用的内容: [ServiceContract()] public interface IService { [OperationContract] string MyOperation1(string myValue); } public class Service : IService { public string MyOperation1(string myValue) { return "Hello: " + myValue; } }1.2. 建立 ServiceHost 一般使用 public ServiceHost(Type serviceType, params Uri[] baseAddresses)构 造方法建立 ServicesHost. 参数:以下为引用的内容: Type serviceType —— 为实现了某些 Contract 的类的类型,为这个服务主机要 host 的服务。
params Uri[] baseAddresses —— 为任意数量的 baseAddress. Uri baseAddress = new Uri("http://localhost:8080/WCFService/Service"); //Instantiate new ServiceHost myServiceHost = new ServiceHost(typeof(Service), baseAddress);一个 ServiceHost 内只能驻留一个 Service 类,但是这个 Service 类可以实现多个 Contract,每个 Contract 都能通过一个或多个(不同的 bind)Endpoint 向客户端暴露。
Wcf服务入门实例
本人开发c/s模式的软件,使用clickonce发布,数据库的连接字符都写在代码中,这时候一旦被反汇编,数据安全无法保障,因此考虑使用wcf服务,用于传输数据库连接字符,避免将连接字符写入代码中被反汇编。
(当然,也可以直接用于传输数据,更加安全)。
一、新建项目,选择Wcf服务库,取名A(为便于理解,不修改默认文件)二、菜单->文件->添加,新建项目,选择windows窗体应用程序,取名B三、打开B项目中的form1,添加一个按钮button1,命名为”启动服务”四、右键点击B项目,设置为启动项目五、B项目,(菜单)项目->添加引用,选择A项目,确定。
六、继续添加引用system.servicemodel七、复制以下代码到B项目的form1Imports System.ServiceModelImports System.ServiceModel.DescriptionPublic Class Form1Dim Host1 As ServiceHostPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickHost1 = New ServiceHost(GetType(A.Service1), New Uri("net.tcp://localhost:1000/")) '用于监听的地址,在服务器就是localhost,不要改。
Host1.Description.Behaviors.Add(NewServiceMetadataBehavior())Host1.AddServiceEndpoint(GetType(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding(), "A") '这个不明白啥意思,不做就不能用。
WCF入门
Windows Communication Foundation入门(Part One)前言:WCF是微软基于SOA(Service Oriented Architecture)推出的.Net平台下的框架产品,它代表了软件架构设计与开发的一种发展方向,在微软的战略计划中也占有非常重要的地位。
了解和掌握WCF,对于程序员特别是基于微软产品开发的程序员而言,是非常有必要的。
对于WCF,笔者也是初窥门径,抱着学习的态度作这样的一个介绍。
文中的内容主要参考了微软官方的文档、资料,以及众多介绍WCF的技术资料。
这些资料主要都是英文,不便于国内程序员学习WCF。
虽然本人才疏学浅,却愿意作这样的介绍者。
由于自己仅是一个初学者,英文的功底也不够深厚,所以文中难免会有疏漏之处。
同时,我也希望在文中尽量表达出自己的一些心得与见解,这就不免增加了出现错误的可能性。
此外,由于WCF至今仍未有正式的版本,文中相关的技术描述以及代码会根据版本的不同而发生变化,所以我也只能尽量对此给与一定的说明。
本文会是多篇文章拼凑在一起的系列,说是系列,但并没有严格的渐进关系,只是整体上希望能有一个相对全面的WCF入门介绍。
此外,笔者也希望能通过此文抛砖引玉,这样也能让我的WCF学习之旅更轻松一点。
一、什么是WCF?根据微软官方的解释,WCF(之前的版本名为“Indigo”)是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。
它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。
WCF是微软分布式应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术,例如.Net Remoting、ASMX、WSE 和MSMQ。
以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于Internet;以宿主程序而论,可以以,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。
C# WCF入门学习
wcf使用流程
WCF使用流程WCF(Windows Communication Foundation)是一种用于构建分布式应用程序的框架。
它提供了一种统一的编程模型,可以在不同的应用程序之间进行通信,并支持多种传输协议和消息格式。
本文将详细描述WCF的使用流程,包括创建服务和客户端、配置服务和客户端、部署和测试。
1. 创建服务首先,我们需要创建一个WCF服务。
下面是创建WCF服务的步骤:步骤1:创建一个新的WCF服务项目在Visual Studio中,选择”新建项目”,然后选择”WCF”类别下的”WCF服务应用程序”模板。
输入项目名称并点击”确定”。
步骤2:定义服务契约打开生成的IService.cs文件,在其中定义服务契约(Service Contract)。
契约是一个接口,它定义了可由客户端调用的操作。
[ServiceContract]public interface IService{[OperationContract]string GetData(int value);}步骤3:实现服务契约打开生成的Service.cs文件,在其中实现契约中定义的操作。
这些操作将在客户端调用时执行。
public class Service : IService{public string GetData(int value){return $"You entered: {value}";}}步骤4:配置服务终结点打开生成的App.config文件,在其中配置服务终结点。
终结点定义了服务的地址、协议和消息格式。
<system.serviceModel><services><service name="WcfService.Service"><endpoint address="" binding="basicHttpBinding" contract="WcfService.ISe rvice" /><endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExch ange" /></service></services><behaviors><serviceBehaviors><behavior><serviceMetadata httpGetEnabled="true" /><serviceDebug includeExceptionDetailInFaults="false" /></behavior></serviceBehaviors></behaviors></system.serviceModel>2. 创建客户端接下来,我们需要创建一个WCF客户端,以便与服务进行通信。
WCF入门
Windows Communication Foundation入门(Part One)前言:WCF是微软基于SOA(Service Oriented Architecture)推出的.Net平台下的框架产品,它代表了软件架构设计与开发的一种发展方向,在微软的战略计划中也占有非常重要的地位。
了解和掌握WCF,对于程序员特别是基于微软产品开发的程序员而言,是非常有必要的。
对于WCF,笔者也是初窥门径,抱着学习的态度作这样的一个介绍。
文中的内容主要参考了微软官方的文档、资料,以及众多介绍WCF的技术资料。
这些资料主要都是英文,不便于国内程序员学习WCF。
虽然本人才疏学浅,却愿意作这样的介绍者。
由于自己仅是一个初学者,英文的功底也不够深厚,所以文中难免会有疏漏之处。
同时,我也希望在文中尽量表达出自己的一些心得与见解,这就不免增加了出现错误的可能性。
此外,由于WCF至今仍未有正式的版本,文中相关的技术描述以及代码会根据版本的不同而发生变化,所以我也只能尽量对此给与一定的说明。
本文会是多篇文章拼凑在一起的系列,说是系列,但并没有严格的渐进关系,只是整体上希望能有一个相对全面的WCF入门介绍。
此外,笔者也希望能通过此文抛砖引玉,这样也能让我的WCF学习之旅更轻松一点。
一、什么是WCF?根据微软官方的解释,WCF(之前的版本名为“Indigo”)是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。
它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。
WCF是微软分布式应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术,例如.Net Remoting、ASMX、WSE和MSMQ。
以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于Internet;以宿主程序而论,可以以,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。
网上的WCF教程
无废话WCF入门教程之一什么是WCF一、概述Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。
由 .NET Framework 3.0 开始引入。
WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet 收发客户和服务之间的消息。
WCF合并了Web服务、.net Remoting、消息队列和Enterprise Services的功能并集成在Visual Studio中。
WCF专门用于面向服务开发。
二、基于 的应用程序开发与面向服务开发在基于 的应用程序开发中,我们由客户机的浏览器访问应用程序服务器,然后通过应用程序服务器中的数据库连接去连接数据库服务器,读取或是操作数据,有时候可能会多一个文件服务器。
大家可以观察到,基本上所有的应用都放在了一台服务器上,但对于一个,由于业务上的需要(如:与外部系统交互),一台服务器很难支持所有的应用。
我们再看下面的图:客户机使用浏览器访问服务器A,服务器A为了业务需要与其他各种应用部署在服务器B、C、D....再通过WCF技术互相通信,相互访问...然而面向服务的好处不仅仅在此,他还提供了不同语言不同操作系统的可交互性..由于本文不是介绍SOA的文章,感兴趣的同学可以参见:SOA三、第一个WCF程序1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序。
建立完成后如下图所示:2.删除系统生成的两个文件IService1.cs与Service1.svc。
3.添加自定义的WCF【服务文件】User.svc,此时vs2010会自动生成WCF 接口文件IUser.cs,我们在IUser中定义WCF方法ShowName,在User.svc.cs 对该接口的方法进行实现。
代码如下:1using System.ServiceModel;23namespace WCFService4 {5[ServiceContract]6public interface IUser7{8[OperationContract]9string ShowName(string name);10}11 }121314namespace WCFService15 {16public class User : IUser17{18public string ShowName(string name)19{20string wcfName = string.Format("WCF服务,显示姓名:{0}", name); 21return wcfName;22}23}24 }大家可以看到,在WCF中的接口与普通接口的区别只在于两个上下文,其他的和我们正常学习的接口一样。
WCF教程(一)
WCF是对现有技术的统 是对现有技术的统一
Windows Communication Foundation
什么是WCF?
• • 全新的 Web Service 界面 属性化编程
[ServiceContract ServiceContract] ] Public interface IHelloService { [OperationContract OperationContract] ] string Hello(); } public class HelloService : IHelloService { public string Hello () { return “Hello”; } }
• 使用 WCF,该解决方案的实现就容易得多了。 如图中所示,WCF 可用于前述所有情况 因此,租车预定应用程序使用这一种技术就可 可用于前述所有情况。 因此 租车预定应用程序使用这一种技术就可 以实现其所有应用程序间的通信。 WCF 可使用 Web 服务进行通信,因此与同样支持 SOAP 的其他平 台(例如基于 J2EE 的主流应用程序服务器)间的互操作性就变得简 单明了。 还可以对 WCF 进行配置和扩展,以便与使用并非基于 SOAP 的消息 (例如像 RSS 这种简单的 XML 格式)的 Web 服务进行通信。 性能是大多数业务中至关重要的考虑事项。开发 性能是大多数业务中至关重要的考虑事项 开发 WCF 的目标就是要 使之成为 Microsoft 所开发的速度最快的分布式应用程序平台之一。
汽车预定程序
WCF .NET NET Framework
现有预定 应用程序 J2EE应用程序服 务器
Internet
合作伙伴 应用程序 各种平台
WCF 就是针对这种繁杂却又切实存在的情况 而设计的 是公开和访问服务的 Windows 而设计的,是公开和访问服务的 Wi d 应用程序的首选技术
wcf之旅(1)创建一个简单的wcf程序
WCF之旅(1):创建一个简单的WCF程序[原创]我的WCF之旅(1):创建一个简单的WCF程序写在前面在Microsoft提出.NET战略以来,先后推出了一系列产品和技术,这些产品和技术为我们在.NET平台下建立企业级的分布式应用提供了很大的便利。
这些技术和产品包括:.NET Remoting,XML WebSerivce,WSE(2.0,3.0),Enterprise Service,MSMQ ......我们知道,和一个相对独立的应用不同,我们开发一个分布式应用,尤其是开发一个企业级的分布式应用,我们需要考虑较多的东西。
比如我们要考虑数据在不同的应用之间传递时采取什么样的机制,这种数据传递是否是安全的,可靠的;如何在分布式的环境下进行异常处理;如何把分别在不同应用中执行的操作纳入同一个事务……对于我们上面提到的这些问题,这些都是开发分布式应用考虑的典型的问题。
值得庆幸的是,Microsoft开发的分布式的产品能够部分的解决这些问题。
.NET Remoting 为我们在.NET平台下提供了非常好的解决方案(我个人认为,.NET Remoting是.NET平台下最为成熟的分布式技术。
比如相较于另一个使用更为广泛的技术XML Web Service,它具有一些自己独特的特性:可以使用不同的传输层协议进行通信——Http & TCP;可以使用不同的消息编码方式——Bianry & Text (XML);可以寄宿到IIS和任何一种托管的应用下——Console Application 、WinForm Application、Windows Service……;Server端可以通过双向通信回调(Callback)客户端的操作;……)XML Web Service为使我们实现跨平台的系统能够集成显得如此简单。
Visual Studio2010搭建WCF之基础篇
VS2010搭建WCF之基础篇在看本篇之前,我先介绍以下代码和案例图片所运行的环境,如有不同,还请见谅:操作系统:win7旗舰版64位已装IIS,版本6.1(内部版本7600),(先装IIS后装VS2010)软件开发工具:Visual Studio2010专业版,版本10.0.30319.341,已打补丁,VS 启动开发语言我选C#。
和已安装什么是WCF?答:微软发展的通信方法有Web Service (SOAP with HTTP communication),.NET Remoting (TCP/HTTP/Pipeline communication) 以及基础的Winsock 等通信技术。
由于各个通信方法的设计方法不同,而且彼此之间也有相互的重叠性,对于开发人员来说,不同的选择会有不同的程序设计模型,而且必须要重新学习,让开发人员在使用中有许多不便。
同时,面向服务架构(Service-Oriented Architecture) 也开始盛行于软件工业中,因此微软重新查看了这些通信方法,并设计了一个统一的程序开发模型,对于数据通信提供了最基本最有弹性的支持,这就是Windows Communication Foundation。
下面我们开始搭建WCF。
1、创建程序文件夹:首先在D盘新建一个文件夹“Demo”。
(啥,你没有D盘。
吐血三百升)2、创建解决方案:打开VS2010,右上角菜单栏选择“文件、新建、项目、”在弹出的窗口左边区选择“windows”,然后窗口中部选择“空项目”窗口底部设置名称为“WcfDemo”,同时解决方案名称也会跟着一致,位置设置为第一步D盘创建的文件夹Demo,“为解决方案创建目录”打钩,最后单击“确定”,解决方案就新建好了。
可惜不是完全真的空,里面还是带了一个类库项目,右键点击WcfDemo选择移除清了它。
(D:/Demo/WcfDemo/ WcfDemo文件夹也完全删除)3、新建合约层:合约是用来定义沟通的协议,共分四种。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
开发环境:vs2008英文版(SP1) + IIS + Windows2003整个解决方案有4个项目01.WCF ---Class Libary项目,用于生成WCF所需的类/接口文件02.BLL ---Class LIbary项目,演示用的业务逻辑层(仅做分层演示用,无实际意义)03.WEB ---Web Application,WCF服务将发布在这个项目中(即本例是把WCF宿主在IIS里)04.Client--Console Application,命令行程序,用于演示调用WCF的客户端程序项目引用关系:01.WCF ---独立项目,无引用02.BLL ---引用WCF,即业务逻辑层,引用Wcf03.web ---引用BLL,即Web UI层引用BLL04.Client --独立项目,无引用步骤:1.打开vs2008,File-->new project-->Visual C#/Windows-->Class Libary,命名为01_WCF2.WCF项目上右击,Add-->New Item-->WCF Service ,命名为CalculateService.cs,确认后,系统会同时生成一个ICalculateService.cs的接口文件ICalculateService.cs的内容如下(本例中,仅写了二个示例方案,Add与Sub,用于实现数字的加减):1using System;2using System.Collections.Generic;3using System.Linq;4using System.Runtime.Serialization;5using System.ServiceModel;6using System.Text;78namespace WCF9{10// NOTE: If you change the interface name "ICalculateService" here, you must also update the refe rence to "ICalculateService" in App.config.11 [ServiceContract]12public interface ICalculateService13 {14 [OperationContract]15double Add(double x, double y);1617 [OperationContract]18double Sub(double x, double y);19 }20}这里可以看出,除了类前面加了[ServiceContract],以及方法签名前加了[OperationContract],其它跟普通的接口文件完全一样。
这部分也称为WCF的契约再来看CalculateService.cs,即实现契约的部分1using System;2using System.Collections.Generic;3using System.Linq;4using System.Runtime.Serialization;5using System.ServiceModel;6using System.Text;78namespace WCF9{10// NOTE: If you change the class name "CalculateService" here, you must also update the reference to "CalculateService" in App.config.11public class CalculateService : ICalculateService12 {13public double Add(double x, double y)14 {15return x + y;16 }1718public double Sub(double x, double y)19 {20return x - y;21 }22 }23}这个类实现了刚才的ICalculateService接口,其它与普通类文件完全一样build一下,如果没错的话,wcf这个项目就算完工了3.解决方案上右击,add-->new Project-->class Libary 命名为BLL,即业务逻辑层,然后在BLL项目的References 上右击-->add References-->Projects-->选择01_WCF项目,完成对项目WCF的引用4.把BLL中默认的Class1.cs删除,新建一个Test.Cs,内容如下:1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;56namespace BLL7{8public class Test9 {10public string HelloWorld()11 {12return"Hello World!";13 }1415public double Add(double x, double y)16 {17return new WCF.CalculateService().Add(x, y);18 }19 }20}这里仅做了一个示例,写了一个Add方法,用来调用WCF.CalculateService中的Add方法,到目前为止,可以看出,这跟普通项目的引用,以及普通类的引用没有任何区别,Build一下,如果没有问题的话,BLL项目也告一段落了5.解决方案右击,add-->new project--> Web Applicatin或 3.5 Extenstions Web Application都可以,命名为03_WEB,同样添加对BLL项目的引用6.在WEB项目中,新建一个WCF目录,然后在该目录下Add-->new Item-->WCF Service,命名为CalculateService.svc,添加后,这里有一个关键步骤,把WCF目录下,除CalculateService.svc以外的文件都删除,然后双击CalculateService.svc,修改内容为<%@ ServiceHost Language="C#" Debug="true" Service="WCF.CalculateService" %>因为实际上WCF的主要内容已经在WCF项目中实现了,所以这里只要标明Service="WCF.CalculateService"就可以了,顺便给出web.config的一段关键配置12<system.serviceModel>3<behaviors>4<serviceBehaviors>5<behavior name="WEB.DemoServiceBehavior">6<serviceMetadata httpGetEnabled="true"/>7<serviceDebug includeExceptionDetailInFaults="false"/>8</behavior>9</serviceBehaviors>10</behaviors>11<bindings>12<wsHttpBinding>13<binding name="WSHttpBinding_ICalculateService">14<security mode="None">15</security>16</binding>17</wsHttpBinding>18</bindings>19<services>20<service behaviorConfiguration="WEB.DemoServiceBehavior" name="WCF.CalculateService ">21<endpoint address="wcf" binding="wsHttpBinding" contract="WCF.ICalculateService" bind ingConfiguration="WSHttpBinding_ICalculateService" name="WCF.ICalculateService"/>22<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>23</service>24</services>25</system.serviceModel>267.WCF在IIS里的配置iis里新建一个站点,指向WEB项目所在的目录,端口在本例中设置为90,如果在浏览器直接浏览http://localhost:90/WCF/CalculateService.svc,表明IIS的环境没问题,如果不行,建议重新安装.net framework3.5(当然也有其它办法,就是增加svc后缀的映射,这个百度一下N多,就不重复了)8.刚才的WEB项目里,应该还有一个Default.aspx的页面,这里我们简单示例一下调用BLL层代码(Default.aspx.cs 内容)1namespace WEB2{3public partial class _Default : System.Web.UI.Page4 {5protected void Page_Load(object sender, EventArgs e)6 {7//通过BLL层来调用WCF中的方法8 BLL.Test _Test = new BLL.Test();9double z= _Test.Add(5, 10);10 Response.Write(z.ToString());11 }12 }13}编译浏览该页面,如果能显示15,表示ok了,Web项目完工9.解决方案中,再添加一个Console Application,命名为04_Client,我们将在这个项目中,调用WEB中的WCF,注意要添加对System.ServiceModel的引用10.关键步骤:浏览http://localhost:90/WCF/CalculateService.svc时,会发现页面上有一个提示:若要测试此服务,需要创建一个客户端,并将其用于调用该服务。