1 / 22
文档名称:

wcf之旅(1)创建一个简单的wcf程序.docx

格式:docx   大小:40KB   页数:22页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

wcf之旅(1)创建一个简单的wcf程序.docx

上传人:玥玥 2022/11/27 文件大小:40 KB

下载得到文件列表

wcf之旅(1)创建一个简单的wcf程序.docx

文档介绍

文档介绍:该【wcf之旅(1)创建一个简单的wcf程序 】是由【玥玥】上传分享,文档一共【22】页,该文档可以免费在线阅读,需要了解更多关于【wcf之旅(1)创建一个简单的wcf程序 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
WCF之旅(1):创立一个简单的WCF程序
[原创]我的WCF之旅(1):创立一个简单的WCF程序
写在前面
,先后推出了一系列产品和技术,
散布式应用供给了很大的便利。这些技术和产品包含:.NET
Remoting,XMLWebSerivce,WSE(,),Enterprise
Service,MSMQ......
我们知道,和一个相对独立的应用不同,我们开发一个散布
式应用,特别是开发一个公司级的散布式应用,我们需要
考虑许多的东西。比方我们要考虑数据在不同的应用之间传
递时采纳什么样的体制,这类数据传达是不是安全的,可
靠的;如安在散布式的环境下进行异样办理;如何把分别在
不同应用中执行的操作归入同一个事务……
关于我们上边提到的这些问题,这些都是开发散布式应用
考虑的典型的问题。值得有幸的是,Microsoft开发的散布式
的产品能够部分的解决这些问题。.NETRemoting为我们
(我个人认为,.NET
。比方相较
于另一个使用更加宽泛的技术XMLWebService,它拥有一
些自己独到的特征:能够使用不同的传输层协议进行通讯—
—Http&TCP;能够使用不同的信息编码方式——
Bianry&Text(XML);能够寄宿到IIS和任何一种托
管的应用下——ConsoleApplication、WinForm
Application、WindowsService……;Server端可
以经过双向通讯回调(Callback)客户端的操作;
……)XMLWebService为使我们实现跨平台的
系统能够集成显得这样简单。跟着技术的不停发展,有关的
技术规范(WS-*Specification)不停完美,XMLWebService
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
此刻已经成为使用最为宽泛的散布式技术了。

XMLWeb
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
Service

能够获取这样宽泛的推行,这得受益于

Microsoft


wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
后两次推出的WebServiceEnhancement(、WSE
)。假如没有WSE,纯真的asmx下的这样的担保和不
靠谱。WSE为WebService解决了几大难题:Security、Reliable
Messaging、transactionHandling以及大数据的有效传输。
MSMQ作为一种简单而有效的体制为不同应用之间数据的
传达供给了保障。
其实,经过合理利用上边这些散布式的技术完整能够为我们
成立的一套合适不同层次需要的散布式构架。但这里面仍旧
存在一些问题,那就是上边这些技术和产品只好解决某一方
面的问题;
很好的依赖,可是考虑到他不可以供给不同平台之间的互操
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
作性。此外,这些技术适适用了完整不同的编程方式,使得
我们很难冷静地从此中一种转移到另一种上来。鉴于这些原
因,我们需要一套崭新的技术整合以上都这些技术,于
是我们有了今日的WCF——WindowsCommunication
Foundation。WCF成立一套框架,是我们经过一致的编程模
式,使用不同的技术建立我们的散布式应用。
固然很早开始接触WCF,但所学的老是零琐碎碎。此刻开始
系统地研究WCF,希望与大家一起分享我的一些所得,同
时希望能经过这样的一个时机与大家一些商讨WCF,不对的
地方希望大家指正。
一开始我们先成立一个简单程序看WCF如何工作:
成立整个应用的简单构架
整个构架以下图,这个Solution由5个Project构成:
;;
;;
http://localhost/WCFService。:
ClassLibraryProject,用来保留Contract(ServiceContact、
MessageContract、DataContract),之因此把Contract独立
出来的原由是考虑到他同时被Server端——Service自己和
ServiceHosting和Client端使用。(此刻好多的参照书,包含
MSDN都使用ServiceModelMetadataUtilityTool()
这样的一个工具来接见Service的MetadataEndpoint来生成
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
我们的客户段代码,这些代码就包含ServiceContract(一般是
一个Interface),实现了这个Contract的ProxyClass(一个集成自的一个Class)和相应的
Configuration。这个工具的确给我供给了很大的方便。但
我不介绍使用这样的方法(我天生不偏向关于这些代码生成
器),因为我感觉,在Contract可得的状况下-比方Service
和Client都是自己开发,让Service和Client实现的Contract
是同一个Contract能够保证一致性。这个Project引用

:ClassLibraryProject,Service
的业务逻辑,。
:ConsoleApplication,用于
以Self-Hosting的方式HostService。这个Project引用

。。
:ConsoleApplication,用以模拟现实中的调用Service的Clinet。这个Project引用Project和
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
DLL。
http://localhost/WCFService:WebSiteProject,用于模拟如
何把ServiceHost到IIS中。这个Project引用、和

2创立ServiceContract
在这个例子中我们成立一个简单的事例,做一个计算器,
假定我们只需求他做简单的加法运算就能够了。在
增添一个interface,名称叫做
ICalculator。
;
;
;namespace{
[ServiceContract]
publicinterfaceICalculator
{
[OperationContract]
doubleAdd(doublex,doubley);
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
}
}使一个Interface成为ServiceContract的方法很简单,就是把ServiceContractAttribute应用到这个interface上,并在代表单个Operation的方法上应用OperationContractAttribute。
这个使用CustomAttribute的编程模式被称为申明式的编程
(Declarative)方式,,,,这类方式已经变得随地可见了。
我们能够把Contract定义成一个Interface,也能够把它定义
到一个Class中——这个Class中既海涵Service自己又作为
一个Contract而存在。但我介绍使用第一种方法——Serive
和Contract相分别。
在WCF中,Contract的功能实质上就定义一个Service包含
哪些可用的Operation,以及的每个Opertaion的方法署名。
从信息互换(MessageExchange)的角度讲,Contract定义了
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
调用相应的

Serive

采纳的信息互换的模式(

Message
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
ExchangePattern-MEP),我们常常使用的

MEP

包含三种:
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
Oneway,Request/Response,和Duplex。因为调用Service
的过程实质就是信息互换的过程,以常有的
Request/Response为例。Client调用某个方面远程接见
Service,所有的输入参数被封装到RequestSoapMessage并
被发送到Service端,Service端监听到这个SoapRequest,
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
创立相应的ServiceObject并调用有关的操作,最后将Result
(这能够是ReturnValue,ReferenceParameter和Output
Parameter)封装成SoapMessage发送回Client端。这里需要
注意,假如采纳的是Request/Response的模式,即便相应的
操作没有ReturnValue,ReferenceParameter和OutputParameter(它被标志为void),Service仍旧会返回一个空的SoapMessage给Client端。
3创立Service
前面我们已经创立了我的。其实
我们从Contract这个单词上讲,它就是一种契约,一种许诺。他表示在上边签了字你就的执行Contract上义务。就是这样一个需要执行Contract义务的人。在这个例Service
子中,Contract以Interface的方式定义的一些Operation。作为Service,在Contract上署名的方式就是实现这样的一
个Interface。下边的Service获取code,很简单。usingSystem;;using
;;;{publicclassCalculatorService:ICalculator{#regionICalculatorMemberspublicdoubleAdd(doublex,doubley){returnx+y;}
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
#endregion}}
就像Remoting相同,我们继承自
的对象一定Host到某一个运转的进度中,他才开始监听来
自Client端的恳求,当Client才能经过Proxy远程的调用,
RemotingInfrastructure监听到来自Client端的恳求,他会激
活相应的remoteObject(我们只考虑ServerActivateObject
——SAO)。实质上关于WCFService也需要一个Host环境才有其发挥作用的舞台。就像Remoting相同,你能够使用任何一种ManagedApplication——ConsoleApplication、
WinFormApplication、——作为它的
Host环境。你甚至能够用它Host到WindowsService中和
IIS中(后边我将会讲到如何做)。
我们知道WCF中,Client端和Service端是经过Endpoint来通讯的,Endpoint有包含3个部分,经典地称为ABC.
A代表Address,它包含一个URI,它指明Service存在于网
络的某个地方,也就是说它为Client断指明在什么地方去找
到这个Service。好多人认识Address不过不过一个拥有
Identity的URI,实质上否则,Address不只于此,它还
包含一些Header,这些信息在某些状况下关于如何寻址有很
大的意义(比方在client的最后Service之间还有一些
Intermediary节点的状况下)。,Address用
来表示。
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
B代表Binding,Binding封装了所有Client和Service段信息
互换的通讯细节。比方他定义了通讯应当采纳的Transport
-比方我们是因该采纳Http,TCP,NamedPipe或许是
MSMQ;通讯的内容应当采纳如何的编码——比方是
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
Text/XML

,Binary

仍是

MTOM

。以上这些都得一个

Binding
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
所一定定义的内容,

别的,Binding

还能够定义一些其余
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
的有关通讯的内容,

比方

Security,ReliableMessaging,
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
Session,

Transaction

等等。正因为

Binding

关于通讯的重
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
要性,只有

Service

端的

Binding



Client



Binding

互相匹
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
配的时候,他们之间在能够互相通讯。如何使ClientBinding
般配ServiceBinding呢?最简单也是最直接的方法就是使用相同的Binding。WCF为我们定义了一系列的SystemDefinedBinding,这些Binding在Transport,Interoperability,Security,SessionSupport,以及TransactionSupport方面各有重视。基本上WCF为我们定义的这些Binding已经够我们
使用的了,假如,实在知足不了要求,你还能够成立自己
的CustomBinding。
代表Contract这在上边已经说起,这里不再负担。
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
Host

的实质就是把一个

Service

置于一个运转中的进度中,
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
并以

Endpoint

的形式裸露出来,

并开始监听来自

Client

端的
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
恳求。这里值得注意的是,同一个

Service

能够注册若干不
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
同的Endpoint,这样不同的Client就能够以不同的方式来访
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
,同一个Intranet的Client能够以TCP的方式接见Service,另一个存在已Internet中的Client则只好以Http的方式接见。
usingSystem;;using
;;using
;using
;using
;namespace
{classProgram
{staticvoidMain(string[]args)
{HostingServiceViaCode( );}
staticvoidHostingServiceViaCode( )
{//SpecifythebaseAddressUri
baseUri=newUri("http://localhost:8080/calculatorService");//createanewServiceHostobjectandspecifythecorresponding
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序
wcf之旅(1)创立一个简单的wcf程序

最近更新

监理工程师之监理概论附解析答案 41页

监理工程师之监理概论完整题库附答案(名师推.. 41页

监理工程师之监理概论完整版附答案AB卷 42页

监理工程师之监理概论大全附答案(完整版) 41页

监理工程师之监理概论含答案【模拟题】 41页

监理工程师之监理概论内部题库带答案(轻巧夺.. 42页

监理工程师之合同管理题库(考点提分) 42页

监理工程师之合同管理题库大全完整版 43页

监理工程师之合同管理题库【名校卷】 43页

监理工程师之合同管理精选题库及参考答案(典.. 42页

监理工程师之合同管理大全带答案(新) 42页

监理工程师之合同管理内部题库【真题汇编】 42页

环境影响评价工程师之环评技术方法题库大全(.. 41页

环境影响评价工程师之环评技术方法题库含答案.. 41页

环境影响评价工程师之环评技术方法精选题库附.. 41页

环境影响评价工程师之环评技术方法带答案(基.. 41页

环境影响评价工程师之环评技术方法完整版(轻.. 41页

环境影响评价工程师之环评技术方法完整版【A卷.. 41页

环境影响评价工程师之环评技术方法大全【A卷】.. 41页

环境影响评价工程师之环评技术方法包过题库精.. 41页

人民币汇率制度改革的论文 4页

环境影响评价工程师之环评技术导则与标准(模.. 43页

环境影响评价工程师之环评技术导则与标准题库.. 43页

环境影响评价工程师之环评技术导则与标准题库.. 43页

环境影响评价工程师之环评技术导则与标准精选.. 43页

环境影响评价工程师之环评技术导则与标准完整.. 43页

GJB9001C标准及内审员培训考试题及答案 12页

全国各省殷氏辈分收集 25页

GB50108-《地下工程防水技术规范》 3页

化学品安全技术说明MSDS-次氯酸钠(中英文对照.. 8页