WCF系列一完全不使用配置文件构建和使用WCF服务

合集下载

wcf服务编程 ch3_如何配置和承载服务

wcf服务编程 ch3_如何配置和承载服务

配置服务:Endpoint元素

每个终结点都需要以下属性表示的地址、绑定和协定: address:指定服务的统一资源标识符(URI),它可以是一个绝对地址或是一个 相对于服务基址给定的地址,如果设置为空字符串,则指示在创建服务的 ServiceHost时,终结点在指定的基址上可用。
Binding:通常,指定一个类似WsHttpBinding的系统提供的绑定,但也可以指定一个用 户定义的绑定。 指定的绑定确定传输协议类型、安全和使用的编码,以及是否支持 或启用可靠会话、事务或流。
配置服务:<behaviors>配置节

当我们在定义一个实现了Service Contract的类时, binding和address信息是客户端必须 知道的,否则无法调用该服务。然而,如果需要指定服务在执行方面的相关特性时, 就必须定义服务的behavior。
<behaviors> <serviceBehaviors> <behavior name="metadataSupport"> <serviceMetadata httpGetEnabled="true" httpGetUrl=""/> </behavior> <serviceBehaviors> <behaviors> 这个名字将来在 Service配置节中使用
配置服务:现场编程

实用配置文件配置
配置服务:使用代码实现
Uri baseAddress = new Uri("http://localhost:8000/HelloService"); string address = "http://localhost:8000/HelloService/MyService"; using (ServiceHost serviceHost = new ServiceHost(typeof(HelloService), baseAddress)) { serviceHost.AddServiceEndpoint(typeof(IHello), new BasicHttpBinding(), address); serviceHost Open(); Console.WriteLine("Press <enter> to terminate service"); Console.ReadLine(); serviceHost.Close(); serviceHost.Close(); }

WCF的综述

WCF的综述

毕业论文论文题目WCF的综述摘要WCF (Windows Communication Foundation )是微软基于SOA(Service Oriented Architecture)推出的.Net平台下的框架产品,它是微软分布式应用程序开发的集大成者,代表了软件架构设计与开发的一种发展方向,在微软的战略计划中也占有非常重要的地位。

了解和掌握WCF,对于程序员特别是基于微软产品开发的程序员而言,是非常有必要的。

WCF在现实运用上也越来越频繁,因为其具有统一性,综合了ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技术;其次WCF可以跨进程、跨机器甚至于跨平台通信的互操作性对于程序员在编程过程中大大提高效率。

本文通过几个方面介绍WCF的主要功能和特点。

关键词:WCF 面向服务架构地址绑定契约目录1 绪论 (1)2 WCF的产生原因 (2)3 WCF的优势 (3)3.1实例介绍优势 (3)3.2总结WCF的优势 (6)3.2.1 统一性 (6)3.2.2 互操作性 (6)3.2.3 安全与可信赖 (7)兼容性 (7)3.3WCF的可适配体系 (8)3.4WCF的服务结构 (8)3.5WCF的技术要素 (9)4.创建一个简单的WCF程序实例 (22)4.1整体框架 (22)4.2创建服务端 (22)4.3创建宿主 (22)4.4创建客户端项目 (23)4.5程序运行结果 (24)5 WCF的主要内容的应用 (24)5.1学习WCF的主要内容 (24)5.2WCF的应用 (25)6 总结 (26)参考文献: (27)英文摘要............................................... 错误!未定义书签。

致谢.................................................. 错误!未定义书签。

WCF入门教程

WCF入门教程

MSDN一篇很好的WCF入门教程2010-06-04 10:36转载自展翅高飞的空间最终编辑展翅高飞的空间很多学习WCF的例子,感觉受益匪浅,但是由于每个人学习的侧重点不同,一些很详细的细节例如每一个属性都是用来干什么的,建立不同的项目类型对创建的服务有什么区别等等,都不得而知。

终于,在MSDN上发现了一篇入门教程。

讲解的十分基本,十分详细,想进到每一个细节,然我彻底了解入门的每一个细节,整个教程结构清晰,代码简洁,讲解细致,值得推荐。

地址:/en-us/library/ms734712.aspx做这分5部来讲解创建一个最基本的基于B/S构架的WCF应用。

服务是根据输入的两个数字,返回这两个数字的加减乘除运算结果。

第一步:定义WCF服务契约(创建项目,加入引用,定义Interface)第二部:引入WCF服务契约(添加具体服务函数)第三部:构架WCF服务,运行WCF服务(添加Uri,定义服务对象地址,运行服务)第四部:利用工具访问服务,自动生成WCF服务代理的代码文件第五部:配置一个简单的WCF客户端(用客户端引入服务代理,通过服务代理来访问服务)第六部:运行程序How to: Define a Windows Communication Foundation Service Contract How to: Implement a Windows Communication Foundation Service Contract How to: Host and Run a Basic Windows Communication Foundation ServiceHow to: Create a Windows Communication Foundation ClientHow to: Configure a Basic Windows Communication Foundation ClientHow to: Use a Windows Communication Foundation Client先建立一个解决方案。

WCF服务编程

WCF服务编程

序序 (1)前言 (8)第1章WCF基础 (13)什么是WCF (14)服务 (15)服务的执行边界 (16)WCF与位置透明度 (17)地址 (18)TCP地址 (19)HTTP地址 (20)IPC地址 (20)MSMQ地址 (20)对等网地址 (21)契约 (21)服务契约(Service Contract) (21)数据契约(Data Contract) (21)错误契约(Fault Contract) (22)消息契约(Message Contract) (22)服务契约 (22)应用ServiceContract特性 (25)名称与命名空间 (28)托管 (30)IIS托管 (30)使用Visual Studio 2005 (31)Web.Config文件 (32)自托管 (32)使用Visual Studio 2005 (35)自托管与基地址 (35)托管的高级特性 (38)ServiceHost<T>类 (39)WAS托管 (41)绑定 (41)标准绑定 (42)基本绑定(Basic Binding) (43)TCP绑定 (43)对等网绑定 (43)IPC绑定 (43)WS联邦绑定(Federated WS Binding) (44)WS双向绑定(Duplex WS Binding) (44)MSMQ绑定 (44)格式与编码 (44)选择绑定 (45)使用绑定 (47)终结点 (47)管理方式配置终结点 (48)绑定配置 (52)编程方式配置终结点 (53)绑定配置 (56)元数据交换 (56)编程方式启用元数据交换 (59)元数据交换终结点 (62)编程方式添加MEX终结点 (64)简化ServiceHost<T>类 (65)元数据浏览器 (71)客户端编程 (71)生成代理 (72)管理方式配置客户端 (76)绑定配置 (78)生成客户端配置文件 (78)进程内托管配置 (79)SvcConfigEditor编辑器 (80)创建和使用代理 (81)关闭代理 (82)调用超时 (84)编程方式配置客户端 (85)编程方式配置与管理方式配置 (86)WCF体系架构 (87)宿主体系架构 (88)使用通道 (89)InProcFactory<T>的实现 (94)可靠性 (98)绑定与可靠性 (99)有序消息 (100)配置可靠性 (100)必备有序传递 (103)第2章 服务契约 (107)操作重载 (107)契约的继承 (112)例 2-3:服务端契约层级 (112)客户端契约层级 (114)恢复客户端层级 (116)例2-6:代理链 (121)服务契约的分解与设计 (123)契约分解 (123)分解准则 (127)契约查询 (130)编程处理元数据 (130)MetadataHelper类 (135)第6章错误 (144)错误与异常 (145)异常与实例管理 (146)单调服务与异常 (146)会话服务与异常 (146)单例服务与异常 (146)错误 (147)错误与异常 (151)对于分布式系统,或者说业界不断提及的互联系统的设计与构建,我与本书作者Juval L歸y可谓志同道合。

详解WCF服务中的svc文件

详解WCF服务中的svc文件

详解WCF服务中的svc⽂件⼀、新建⼀个WCF服务应⽤程序:⽂件->新建->项⽬:选择WCF下⾯的WCF服务应⽤程序⼆、分析WcfSvcDemo项⽬,该项⽬的结构如下:在该项⽬中,会默认⽣成⼀个IService1.cs的⽂件和Service1.svc⽂件。

Service1.svc⽂件封装的就是提供给客户端的服务引⽤。

⾸先查看IService1.cs⽂件,从名字上⾯就可以看出这是⼀个接⼝⽂件,⾥⾯定义了⼀个接⼝IService1,接⼝上⾯使⽤了ServiceContract,意思是把这个接⼝声明为服务契约,服务契约是对客户端⽽⾔的,就是这个接⼝可以暴露出来让客户端可以看见。

接⼝⾥⾯定义了两个⽅法,每个⽅法上⾯都使⽤了[OperationContract],意思是把这两个⽅法声明为操作契约。

只有把接⼝⾥⾯的⽅法声明为操作契约,在客户端⾥⾯才可以看到相应的⽅法,否则在客户端⾥⾯看不到在接⼝⾥⾯定义的⽅法。

在来看Service.svc⽂件,可以看到下⾯有⼀个Service.svc.cs⽂件,这个⽂件⾥⾯定义了⼀个继承IService1接⼝的类Service1,并实现了IService1接⼝⾥⾯的⽅法。

删除Service.svc.cs⽂件,可以查看Service.svc⽂件,该⽂件⾥⾯就⼀⾏代码;<%@ ServiceHost Language="C#" Debug="true" Service="WcfSvcDemo.Service1" CodeBehind="Service1.svc.cs" %>这⾥⾯有两个重要的参数:Service和CodeBehind。

Service是属性值是WCF的服务实现类的完全限定名。

CodeBehind是服务实现类所在的⽂件名。

在运⾏的时候,宿主程序从svc⽂件中的Service属性得到WCF服务的完全限定名,然后从配置⽂件中找到同名的servicce,进⽽找到所有的EndPoint,并根据其属性进⾏实例化。

我的WCF之旅(1):创建一个简单的WCF程序

我的WCF之旅(1):创建一个简单的WCF程序

我的WCF之旅(1):创建一个简单的WCF程序我的WCF之旅(1):创建一个简单的WCF程序为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用。

本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构。

对那些对WCF不是很了解的读者来说,这个例子将带领你正式进入WCF的世界。

在这个例子中,我们将实现一个简单的计算服务(CalculatorService),提供基本的加、减、乘、除的运算。

和传统的分布式通信框架一样,WCF本质上提供一个跨进程、跨机器以致跨网络的服务调用。

在本例中,客户端和服务通过运行在相同的同一台机器上不同进程模拟,图1体现了客户端和服务端进程互相调用的关系。

图1 计算服务应用运行环境WCF的服务不能孤立地存在,需要寄宿于一个运行着的进程中,我们把承载WCF服务的进程称为宿主,为服务指定宿主的过程称为服务寄宿(Service Hosting)。

在我们的计算服务应用中,采用了两种服务寄宿方式:通过自我寄宿(Self-Hosting)的方式创建一个控制台应用作为服务的宿主(寄宿进程为Hosting.exe);通过IIS寄宿方式将服务寄宿于IIS中(寄宿进程为IIS的工作进行W3wp.exe)。

客户端通过另一个控制台应用模拟(进程为Client.exe)。

接下来,我们就一步一步来构建这样的一个WCF应用。

步骤一:构建整个解决方案通过VS 2008创建一个空白的解决方案,添加如下四个项目。

项目的类型、承载的功能和相互引用关系如下,整个项目在VS下的结构如图2所示。

Contracts:一个类库项目,定义服务契约(Service Contract),引用System.ServiceMode程序集(WCF框架的绝大部分实现和API定义在该程序集中);Services:一个类库项目,提供对WCF服务的实现。

定义在该项目中的所有WCF服务实现了定义在Contracts中相应的服务契约,所以Services具有对Contracts项目的引用;Hosting:一个控制台(Console)应用,实现对定义在Services 项目中的服务的寄宿,该项目须要同时引用Contracts和Services两个项目和System.ServiceMode程序集;Client:一个控制台应用模拟服务的客户端,该项目引用System.ServiceMode程序集。

WCF教程

WCF教程

WCF教程首先,让我们了解WCF的核心概念。

WCF服务由三个主要组件构成:契约(Contract)、绑定(Binding)和终结点(Endpoint)。

契约定义了服务要提供的操作和数据类型。

绑定定义了服务与客户端之间的通信方式。

终结点定义了网络地址和协议,用于访问服务。

在WCF中,契约定义了服务的操作和数据类型。

它们可以是简单的方法调用,也可以是消息传递。

契约可以分为服务契约和数据契约。

服务契约包含操作契约和消息契约,操作契约定义了服务要提供的操作,消息契约定义了操作契约的输入和输出消息的报文格式。

数据契约定义了在服务和客户端之间传输的数据类型。

绑定定义了服务与客户端之间的通信方式。

WCF提供了多种不同的绑定选项,可以选择适合应用程序需求的绑定类型。

常见的绑定类型包括基本绑定、TCP绑定、HTTP绑定等。

终结点定义了服务的网络地址和协议,用于访问服务。

WCF支持多种不同的终结点类型,包括基本终结点、TCP终结点、HTTP终结点等。

每个终结点可以指定一个绑定和一个契约。

现在,让我们开始创建第一个WCF服务。

第一步是创建WCF服务项目。

打开Visual Studio,选择“新建项目”,然后选择“WCF服务应用程序”模板。

接下来,给项目起一个名称,并选择创建的位置。

点击确定开始创建项目。

创建了WCF服务项目后,我们需要定义一个契约。

在项目中添加一个新的接口文件,然后在接口中定义服务的操作和数据类型。

例如,我们可以定义一个简单的计算器服务,包含添加和乘法操作。

接下来,我们需要实现契约中定义的操作。

在项目中添加一个新的类文件,并实现接口中定义的操作。

在实现操作时,我们可以使用C#或其他语言来编写逻辑。

接下来是配置WCF服务。

在项目中添加一个新的配置文件,然后在文件中定义服务的终结点和绑定。

我们可以选择使用哪种协议和地址来访问服务。

在配置完成后,我们可以运行WCF服务。

运行服务后,会在本地启动一个宿主进程,等待客户端的请求。

wcf体系架构运行流程

wcf体系架构运行流程

wcf体系架构运行流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!WCF(Windows Communication Foundation)是微软推出的用于构建面向服务的应用程序的框架。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

只使用代码而不用配置文件的情况不适合IIS为宿主的情况,IIS宿主必须使用配置文件配置WCF的ServiceHost。

1、服务端1.1.准备Contract和实现Contract的服务很简单的一个Contract(Interface)和实现这个Contract(实现这个接口的类)的服务。

这是VS2005中使用add new item,选WCF Service后自动生成的一个模板例子服务代码。

1.2.建立ServiceHost一般使用public ServiceHost(Type serviceType, params Uri[] baseAddresses)构造方法建立ServicesHost。

参数:Type serviceType -- 为实现了某些Contract的类的类型,为这个服务主机要host的服务。

params Uri[] baseAddresses -- 为任意数量的baseAddress。

一个ServiceHost内只能驻留一个Service类,但是这个Service类可以实现多个Contract,每个Contract都能通过一个或多个(不同的bind)Endpoint向客户端暴露。

1.3.给ServiceHost添加EndpointEndpoint是直接暴露给客户端就行通讯的接口,经典的一个Endpoint可以用ABC来描述,即address –这个Endpoint对外的访问地址,binding –这个Endpoint是通过什么样的通讯手段暴露给客户端的,Contract -- 这个Endpoint对外暴露的是哪个Contract。

通过两个方法给ServiceHost添加EndpointServiceHost.AddServiceEndpoint AddServiceEndpoint方法有8种重载,ServiceHost提供了四种:ServiceEndpoint AddServiceEndpoint(Type implementedContract, Binding binding, string address);ServiceEndpoint AddServiceEndpoint(Type implementedContract, Binding binding, Uri address);ServiceEndpoint AddServiceEndpoint(Type implementedContract, Binding binding, string address, Uri listenUri);ServiceEndpoint AddServiceEndpoint(Type implementedContract, Binding binding, Uri address, Uri listenUri);ServiceHost的父类ServiceHostBase也提供了四种:ServiceEndpoint AddServiceEndpoint(string implementedContract, Binding binding, string address);ServiceEndpoint AddServiceEndpoint(string implementedContract, Binding binding, Uri address);ServiceEndpoint AddServiceEndpoint(string implementedContract, Binding binding, string address, Uri listenUri);ServiceEndpoint AddServiceEndpoint(string implementedContract, Binding binding, Uri address, Uri listenUri);其中参数implementedContract为Contract的完全名称,即名称空间.类名。

item)ServiceHost.Description是一个ServiceDescription 类型的对象。

ServiceDescription 是一个Service在内存中的一个完整的描述,包括服务的所有Endpoint,和每个Endpoint的各自的address、binding、contract和behaviors。

使用此方法先要根据Endpoint的ABC构造一个ServiceEndpoint 对象。

ServiceEndpoint(ContractDescription contract, Binding binding, EndpointAddress address)其中ContractDescription这样通过ContractDescription的静态方法GetContract构造:ContractDescription.GetContract(Type contractType);1.4.视需要给ServiceHost添加behaviorServiceHost.Behaviors是一个IServiceBehavior类型的对象集合。

IserviceBehavior 提供了一个在整个服务范围内修改或则插入定制扩展的机制。

如果需要把服务通过WSDL对外暴露对服务的Metadata描述,就需要加一个ServiceMetadataBehavior类型的Behavior:要发布Metadata,ServiceHost必须有一个http的baseAddress,所以在构造ServiceHost实例时,就需要在构造方法中加入这个http的baseAddress,这个http的baseAddress就是对外发布的Metadata地址。

1.5.打开ServiceHost,开始提供服务ServiceHost构建好了,添加了需要的Endpoint、behavior后,使用ServiceHost.Open()方法开发ServiceHost实例,开始对外提供服务。

2、客户端2.1.引用service客户端要访问服务端的服务,首先要知道服务端的服务提供了什么方法,就是要知道服务的Contract。

如何取得服务端的Contract有几种方法直接把服务端的Contract的副本拷贝到客户端这个方法是最原始的一种方法,这样保证了服务端跟客户端使用同一份Contract。

但是,这个方法不值得提倡,因为双方的Contract是同一个来源,但是毕竟是两个独立的物理存在,它们之间只能人为的来保证其一致性。

使用Svcutil.exe工具获得服务端Contract并生成本地服务代理类大家知道,web service是通过WSDL对外提供服务的描述,以便客户端能够通过wsdl 知道这个web service所包含的方法、方法的签名等等信息,客户端通过wsdl就能知道怎么去调用这个web service。

到了WCF时代,微软依然采用WSDL来提供对WCF服务的描述。

前面服务端给ServiceHost添加了一个ServiceMetadataBehavior类型的Behavior,目的就是让服务端对外提供WSDL形式的服务Metadata描述。

微软提供了Svcutil.exe工具用来通过WSDL生成客户端Contract和代理功能:httpbaseAddress 就是服务端设置的http的baseAddress。

当然前提是服务端在ServiceHost.Behaviors添加一个ServiceMetadataBehavior类型的Behavior,并设置HttpGetEnabled属性为true,允许对外暴露服务端Metadata描述运行Svcutil.exe后,生成两个文件,一个是WCF配置文件,一个是包含了服务端Contract和对应于服务端service的本地代理类的cs文件。

生成的cs文件有下面的规律:●引用服务端的服务所涉及的Contract(Interface类型)基本都原样引用到客户端(可能会自动给Contract添加一些Attribute)。

●服务端的Endpoint到了客户端,每个具有不同Contract的Endpoint都会在客户端生成一个代理类。

Contract相同,binding不同的Endpoint使用同一个客户端代理类。

在客户端项目中添加Service reference 在vs2005中安装了WCF的extention后,在项目的References上点击右键,会多出来一个“Add Service Reference”的选项,这就是用来引用WCF服务的,引用地址就是服务端设置的http的baseAddress。

在这里引用WCF服务,跟使用Svcutil.exe命令一样,会在项目中生成同样的两个文件。

2.2.生成客户端service代理实例引用服务后,客户端生成了配置文件和包含了Contract和本地代理类的cs文件,这里我们完全不使用配置文件,所以把生成的配置文件从项目中排除。

使用ChannelFactory Generic 使用ChannelFactory Generic类的CreateChannel静态方法CreateChannel,返回一个客户端代理。

static TChannel CreateChannel(Binding binding, EndpointAddress endpointAddress);这个方法包含了一个Endpoint的ABC三个主要元素:Address –new EndpointAddress("")是地址。

Bingding –new BasicHttpBinding() 是绑定。

Contract -- localhost. IService是引用服务后在在客户端生成的来自服务端的Contract(interface类型)。

直接使用引用服务后形成的本地代理类上面使用ChannelFactory的CreateChannel静态方法建立代理只使用到了引用WCF服务后在客户端生成的Contract,同时前面也说过,引用WCF服务后,还会在同时给每个Contract不同的Endpoint生成一个继承自客户端可以直接使用多个重载的代理类构造方法实例化这些代理类。

如果不使用配置文件,使用这个构造方法:SecondServiceClient(Binding binding, EndpointAddress remoteAddress)其中SecondServiceClient为本地的一个代理类。

实例化一个代理类的代码是这样的:同样,实例化的proxy也包含了一个Endpoint的ABC三个主要元素:Address –new EndpointAddress("")是地址。

相关文档
最新文档