摘要:
一、为什么要使用MSMQ在一个分布式的环境中,我们往往需要根据具体的 情况采用不同的方式进行数据的传输。比如在一个Intranet内,我们一般通过TCP进行高效的数据通信;而在一个Internet的环境中,我们则通 常使用Http进行跨平台的数据交换。而这些通信方式具有一个显著的特点,那就是他们是基于Connection的,也就是说,交互双方在进行通信的时候 必须保证有一个可用的Connection存在于他们之间。而在某些时候,比如那些使用拨号连接的用户、以及使用便携式计算机的用户,我们不能保证在他们 和需要访问的Server之间有一个的可靠的连接,在这种情况下,基于Messaging Que 阅读全文
随笔档案-2012年9月10日
我的WCF之旅(13):创建基于MSMQ的Responsive Service(转载)
2012-09-10 13:21 by C#与.NET探索者, 180 阅读, 收藏,
摘要:
一、One-way MEP V.S. Responsible Service我们知道MSMQ天生就具有异步的特性,它只能 以One-way的MEP(Message Exchange Pattern)进行通信。Client和Service之间采用One-way MEP的话就意味着Client调用Service之后立即返回,它无法获得Service的执行结果,也无法捕捉Service运行的 Exception。下图简单表述了基于MSMQ的WCF Service中Client和Service的交互。但是在有些场景 中,这是无法容忍的。再拿我在上一篇文章的Order Delivery的例子来说。Cli 阅读全文
我的WCF之旅(10): 如何在WCF进行Exception Handling(转载)
2012-09-10 13:20 by C#与.NET探索者, 189 阅读, 收藏,
摘要:
在任何Application的开发中, 对不可预知的异常进行troubleshooting时,异常处理显得尤为重要。对于一般的.NET系统来说,我们简单地借助try/catch可以很容 易地实现这一功能。但是对于 一个分布式的环境来说,异常处理就没有那么简单了。按照面向服务的原则,我们把一些可复用的业务逻辑以Service的形式实现,各个Service处于 一个自治的环境中,一个Service需要和另一个Service进行交互,只需要获得该Service的描述(Description)就可以了(比如 WSDL,Schema和Strategy)。借助标准的、平台无关的通信构架,各个Service 阅读全文
我的WCF之旅(11):再谈WCF的双向通讯-基于Http的双向通讯 V.S. 基于TCP的双向通讯(转载)
2012-09-10 13:20 by C#与.NET探索者, 231 阅读, 收藏,
摘要:
在一个基于面向服务的分布式环境中,借助 一个标准的、平台无关的Communication Infrastructure,各个Service通过SOAP Message实现相互之间的交互。这个交互的过程实际上就是Message Exchange的过程。WCF支持不同形式的Message Exchange,我们把这称之为Message Exchange Pattern(MEP), 常见的MEP包括: Request/Reply,Request/Forget(One-way)和Duplex。通过采用Duplex MEP,我们可以实现在Service端Callback Client的操作。虽然WCF为 阅读全文
我的WCF之旅(8):WCF中的Session和Instancing Management(转载)
2012-09-10 13:19 by C#与.NET探索者, 217 阅读, 收藏,
摘要:
WCF中的Session我们知道,WCF是MS基于SOA建立的一套在 分布式环境中各个相对独立的Application进行Communication的构架。他实现了最新的基于WS-*规范。按照SOA的原则,相对独自 的业务逻辑以service的形式封装,调用者通过Messaging的方式调用Service。对于承载着某个业务功能的实现的Service应该具有 Context无关性、甚至是Solution无关性,也就是说个构成Service的operation不应该绑定到具体的调用上下文,对于任何调用, 具有什么样的输入,就会有与之对应的输出。因为SOA的一个最大的目标就是尽可能地实现重用,只有 阅读全文
我的WCF之旅(9):如何在WCF中使用tcpTrace来进行Soap Trace(转载)
2012-09-10 13:19 by C#与.NET探索者, 141 阅读, 收藏,
摘要:
无论对于Web Service还是WCF,Client和Service之间交互的唯一形式是通过发送和接收Soap Message。在我们对Web Service和WCF进行深入学习的时候,借助一些Soap Trace 工具对Soap Message进行深入剖析是非常有必要的。在这些工具之中,我觉得最好用的就是Microsoft Soap Toolkit中的Soap Trace Utility和tcpTrace。我们今天就来讲讲如何在WCF中使用tcpTrace这个工具。首先我们来讲讲tcpTrace实现的基本原 理。说的简单点TcpTrace就是一个监听/转发器(Listening/Forwa 阅读全文
我的WCF之旅(6):在Winform Application中调用Duplex Service出现TimeoutException的原因和解决方案(转载)
2012-09-10 13:18 by C#与.NET探索者, 165 阅读, 收藏,
摘要:
几个星期之前写了一篇关于如何通过WCF进行 双向通信的文章([原创]我的WCF之旅(3):在WCF中实现双向通信(Bi-directional Communication) ), 在文章中我提供了一个如果在Console Application 调用Duplex WCF Service的Sample。前几天有个网友在上面留言说,在没有做任何改动得情况下,把 作为Client的ConsoleApplication 换成Winform Application,运行程序的时候总是出现Timeout的错误。我觉得这是一个很好的问题,通过这个问题,我们可以更加深入地理解WCF的消息交 换的机制。1.问题 阅读全文
我的WCF之旅(7):面向服务架构(SOA)和面向对象编程(OOP)的结合——如何实现Service Contract的继承(转载)
2012-09-10 13:18 by C#与.NET探索者, 271 阅读, 收藏,
摘要:
当今的IT领域,SOA已经成为了一个非常时髦的词,对SOA风靡的程度已经让很多人对 SOA,对面向服务产生误解。其中很大一部分人甚至认为面向服务将是面向对象的终结,现在的面向对象将会被面向服务完全代替。在开始本Blog之前,我先 来谈谈我对SOA和OO的区别,首先申明,这只是一家之言,欢迎大家批评指正,并且关于SO的谈论不是本Blog的主题,只是主题的引子,在这里只是简单 讨论而已 。OO和SO之间具有共同的部分,在运用的领域上存在交集,只有在基于他们交集层面上谈论谁是谁非才有意义,下面是我对SO和OO的区别。OO关注的是如何通过对实体属性和行为的封装来 重塑模拟软件环境的真实实体。对SO关注 阅读全文
我的WCF之旅(4):WCF中的序列化(Serialization)- Part II (转载)
2012-09-10 13:17 by C#与.NET探索者, 186 阅读, 收藏,
摘要:
... ...续Part I([原创] 我的WCF之旅(4):WCF中的序列化(Serialization)- Part I)XMLSerializer提到XMLSerializer,我想绝大多数人都知道这是asmx采用的Serializer。首先我们还是来看一个例子,通过比较Managed Type的结构和生成的XML的结构来总结这种序列化方式采用的是怎样的一种Mapping方式。和DataContractSerialzer Sample一样,我们要定义用于序列化对象所属的Type——XMLOrder和XMLProduct,他们和相面对应的DataContractOrder和DataCont 阅读全文
我的WCF之旅(5):Service Contract中的重载(Overloading)(转载)
2012-09-10 13:17 by C#与.NET探索者, 212 阅读, 收藏,
摘要:
对于.NET重载(Overloading) ——定义不同参数列表的同名方法(顺便提一下,我们但可以在参数列表上重载方法,我们甚至可以在返回类型层面来重载我们需要的方法——页就是说,我们可以 定义两个具有相同参数列表但不同返回值类型的两个同名的方法。不过这种广义的Overloading不被我们主流的.NET 语言所支持的——C#, VB.NET, 但是对于IL来说,这这种基于返回值类型的Overloading是支持的)。相信大家听得耳朵都要起老茧了。我想大家也清楚在编写传统的XML Web Service的时候,Overloading是不被支持的。原因很简单,当我们用某种支持.NET的高级语 言 阅读全文
我的WCF之旅(4):WCF中的序列化(Serialization)- Part I(转载)
2012-09-10 13:16 by C#与.NET探索者, 201 阅读, 收藏,
摘要:
SOA 和MessageWindows Communication Foundation (WCF) 是基于面向服务架构(Service Orientation Architecture——SOA)的一种理想的分布式技术(Distributed Technology), 相信在今后在建立基于SOA企业级别的解决方案和进行系统集成方面将会大有作为。一个基于SOA结构的互联系统(Connected System)通常由若干相互独立的子系统(Sub-System)组成,这些子系统可能一个独立的Application,也可能是由若干Application相互集成共同完成一组相关的任务的小系统。这些子系 阅读全文
我的WCF之旅(3):在WCF中实现双向通信(Bi-directional Communication)(转载)
2012-09-10 13:15 by C#与.NET探索者, 219 阅读, 收藏,
摘要:
双工(Duplex)模式的消息交换方式体现在消息交换过程中,参与的双方均可以向对方发送消息。基于双工MEP消息交换可以看成是多个基本模式下 (比如请求-回复模式和单项模式)消息交换的组合。双工MEP又具有一些变体,比如典型的订阅-发布模式就可以看成是双工模式的一种表现形式。双工消息交 换模式使服务端回调(Callback)客户端操作成为可能。一、两种典型的双工MEP1.请求过程中的回调这是一种比较典型的双工消息交换模式的表现形式,客户端在进行服务调用的时候,附加上一个回调对象;服务在对处理该处理中,通过客户端附加的回调对 象(实际上是调用回调服务的代理对象)回调客户端的操作(该操作在客户端执行 阅读全文
我的WCF之旅(2):Endpoint Overview(转载)
2012-09-10 13:14 by C#与.NET探索者, 193 阅读, 收藏,
摘要:
WCF实际上是构建了一个框架,这个框架实现了 在互联系统中各个Application之间如何通信。使得Developers和Architect在构建分布式系统中,无需在考虑如何去实现通信相关 的问题,更加关注与系统的业务逻辑本身。而在WCF Infrastructure中,各个Application之间的通信是由Endpoint来实现的。Endpoint的结构Endpoint包含以下4个对象:Address: Address通过一个URI唯一地标识一个Endpoint,并告诉潜在的WCF service的调用者如何找到这个Endpoint。所以Address解决了Where to locate 阅读全文
我的WCF之旅(1):创建一个简单的WCF程序(转载)
2012-09-10 13:12 by C#与.NET探索者, 148 阅读, 收藏,
摘要:
为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用。本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构。对那些对WCF不是很了解的读者来说,这个例子将带领你正式进入WCF的世界。在这个例子中,我们将实现一个简单的计算服务(CalculatorService),提供基本的加、减、乘、除的运算。和传统的分布式通信框架一 样,WCF本质上提供一个跨进程、跨机器以致跨网络的服务调用。在本例中,客户端和服务通过运行在相同的同一台机器上不同进程模拟,图1体现了客户端和服务端进程互相调用的关系。图1 计算服务应用运行环境WCF的服务不能孤立地存在,需要寄 阅读全文