2008年3月23日

     摘要: 我们知道,WCF是MS基于SOA建立的一套在分布式环境中各个相对独立的Application进行Communication的构架。他实现了最新的基于WS-*规范。按照SOA的原则,相对独自的业务逻辑以service的形式封装,调用者通过Messaging的方式调用Service。对于承载着某个业务功能的实现的Service应该具有Context无关性、甚至是Solution无关性,Service才能实现最大限度的重用。
在一个C/S(Client/Service)场景中,Context无关性体现在Client对Service的每次调用都是完全不相关的。但是在有些情况下,我们却希望系统为我们创建一个Session来保留某个Client和Service的进行交互的状态。所以,像Web Service一样,WCF也提供了对Session的支持。对于WCF来说,Client和Service之间的交互都通过Soap Message来实现的,每次交互的过程就是一次简单的Message Exchange。所以从Messaging的角度来讲,WCF的Session就是把某个把相关的Messag  阅读全文

Artech 2007-06-13 01:59 发表评论

文章来源:http://www.cnblogs.com/artech/archive/2007/06/13/781216.html

posted @ 2008-03-23 22:50 碎蜂 阅读(19) 评论(0)  编辑

     摘要: 无论对于Web Service还是WCF,Client和Service之间交互的唯一形式是通过发送和接收Soap Message。在我们对Web Service和WCF进行深入学习的时候,借助一些Soap Trace 工具对Soap Message进行深入剖析是非常有必要的。在这些工具之中,我觉得最好用的就是Microsoft Soap Toolkit中的Soap Trace Utility和tcpTrace。我们今天就来讲讲如何在WCF中使用tcpTrace这个工具。  阅读全文

Artech 2007-06-14 00:19 发表评论

文章来源:http://www.cnblogs.com/artech/archive/2007/06/14/782845.html

posted @ 2008-03-23 22:50 碎蜂 阅读(13) 评论(0)  编辑

     摘要: 在任何Application的开发中,对不可预知的异常进行troubleshooting时,异常处理显得尤为重要。对于一般的.NET系统来说,我们简单地借助try/catch可以很容易地实现这一功能。但是对于 一个分布式的环境来说,异常处理就没有那么简单了。按照面向服务的原则,我们把一些可复用的业务逻辑以Service的形式实现,各个Service处于一个自治的环境中,一个Service需要和另一个Service进行交互,只需要获得该Service的描述(Description)就可以了(比如WSDL,Schema和Strategy)。借助标准的、平台无关的通信构架,各个Service之间通过标准的Soap Message进行交互。Service Description、Standard Communication Infrastructure、Soap Message based Communication促使各Service以松耦合的方式结合在一起。但是由于各个Service是自治的,如果一个Service调用另一个Service,在服务提供方抛出的Exception必须被封装在S  阅读全文

Artech 2007-06-15 02:18 发表评论

文章来源:http://www.cnblogs.com/artech/archive/2007/06/15/784090.html

posted @ 2008-03-23 22:50 碎蜂 阅读(11) 评论(0)  编辑

     摘要: 在一个基于面向服务的分布式环境中,借助一个标准的、平台无关的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为我们实现底层的通信细节,使得我们把精力转移到业务逻辑的实现,进行Transport无关的编程,但是对底层Transport的理解有利于我们根据所处的具体环境选择一个合适的Transport。说到Transport, WCF 经常使用的是以下4个:Http,TCP,Named Pipe,MSMQ。由于不同协议自身的差异,他们对具体MEP的支持方式也会不同,我们今天就来谈谈Http和TCP对Duplex  阅读全文

Artech 2007-06-18 18:32 发表评论

文章来源:http://www.cnblogs.com/artech/archive/2007/06/18/788071.html

posted @ 2008-03-23 22:50 碎蜂 阅读(14) 评论(0)  编辑

     摘要: 在一个分布式的环境中,我们往往需要根据具体的情况采用不同的方式进行数据的传输。比如在一个Intranet内,我们一般通过TCP进行高效的数据通信;而在一个Internet的环境中,我们则通常使用Http进行跨平台的数据交换。而这些通信方式具有一个显著的特点,那就是他们是基于Connection的,也就是说,交互双方在进行通信的时候必须保证有一个可用的Connection存在于他们之间。而在某些时候,比如那些使用拨号连接的用户、以及使用便携式计算机的用户,我们不能保证在他们和需要访问的Server之间有一个的可靠的连接,在这种情况下,基于Messaging Queue的连接就显得尤为重要了。我们今天就来谈谈在WCF中如何使用MSMQ。  阅读全文

Artech 2007-06-29 00:57 发表评论

文章来源:http://www.cnblogs.com/artech/archive/2007/06/29/799529.html

posted @ 2008-03-23 22:50 碎蜂 阅读(13) 评论(0)  编辑

     摘要: 我们知道MSMQ天生就具有异步的特性,它只能以One-way的MEP(Message Exchange Pattern)进行通信。Client和Service之间采用One-way MEP的话就意味着Client调用Service之后立即返回,它无法获得Service的执行结果,也无法捕捉Service运行的Exception。
但是在有些场景 中,这是无法容忍的。再拿我在上一篇文章的Order Delivery的例子来说。Client向Service提交了Order,却无法确认该Order是否被Service正确处理,这显然是不能接受的。我们今天就来讨论一下,如何创建一个Responsive Service来解决这个问题:Client不再是对Service的执行情况一无所知,它可以获知Order是否被Service正确处理了。  阅读全文

Artech 2007-07-01 16:06 发表评论

文章来源:http://www.cnblogs.com/artech/archive/2007/07/01/802069.html

posted @ 2008-03-23 22:50 碎蜂 阅读(6) 评论(0)  编辑

     摘要: 前几天在给人解释Windows是如何通过Kerberos进行Authentication的时候,讲了半天也别把那位老兄讲明白,还差点把自己给绕进去。后来想想原因有以下两点:对于一个没有完全不了解Kerberos的人来说,Kerberos的整个Authentication过程确实不好理解——一会儿以这个Key进行加密、一会儿又要以另一个Key进行加密,确实很容易把人给弄晕;另一方面是我讲解方式有问题,一开始就从Kerberos的3个Sub-protocol全面讲述整个Authentication 过程,对于一个完全不了解Kerberos的人来说要求也忒高了点。为此,我花了一些时间写了这篇文章,尽量以由浅入深、层层深入的方式讲述我所理解的基于Kerberos的Windows Network Authentication,希望这篇文章能帮助那些对Kerberos不明就里的人带来一丝帮助。对于一些不对的地方,欢迎大家批评指正。  阅读全文

Artech 2007-07-05 18:44 发表评论

文章来源:http://www.cnblogs.com/artech/archive/2007/07/05/807492.html

posted @ 2008-03-23 22:50 碎蜂 阅读(40) 评论(0)  编辑

     摘要: 通过[原创]谈谈基于Kerberos的Windows Network Authentication - Part I 的介绍,我们发现Kerberos实际上一个基于Ticket的认证方式。Client想要获取Server端的资源,先得通过Server的认证;而认证的先决条件是Client向Server提供从KDC获得的一个有Server的Master Key进行加密的Session Ticket,可以这么说,Session Ticket是Client进入Server领域的一张门票。而这张门票必须从一个合法的Ticket颁发机构获得,这个颁发机构就是Client和Server双方信任的KDC, 同时这张Ticket具有超强的防伪标识:它是被Server的Master Key加密的... ...  阅读全文

Artech 2007-07-07 15:15 发表评论

文章来源:http://www.cnblogs.com/artech/archive/2007/07/07/809545.html

posted @ 2008-03-23 22:50 碎蜂 阅读(21) 评论(0)  编辑

     摘要: 在C#3.0中,引入了一个新的Feature:Anonymous Method,允许我们已Inline的方式来定义Delegate,为Developer在Coding的时候带来了很大的便利。在C#3.0中,我们又有了另一个相似的Feature:Anonymous Type。Anonymous Type允许我们已Inline的方式的创建一个基于未知类型、具有所需数据结构的对象。  阅读全文

Artech 2007-07-15 21:50 发表评论

文章来源:http://www.cnblogs.com/artech/archive/2007/07/15/818980.html

posted @ 2008-03-23 22:50 碎蜂 阅读(15) 评论(0)  编辑

     摘要: 在C#3.0中,引入了一些列新的特性,比如: Implicitly typed local variable, Extension method,Lambda expression, Object initializer, Anonymous type, Implicitly typed array, Query expression, Expression tree. 个人觉得在这一系列新特性的,最具创新意义的还是Extension method,它从根本上解决了这样的问题:在保持现有Type原封不动的情况下对其进行扩展,你可以在对Type的定义不做任何变动的情况下,为之添加所需的方法成员。在继 深入理解C# 3.0的新特性(1): Anonymous Type 之后,在这篇文章中,我将介绍我自己对Extension method这个新特性的理解。  阅读全文

Artech 2007-07-18 01:30 发表评论

文章来源:http://www.cnblogs.com/artech/archive/2007/07/18/821881.html

posted @ 2008-03-23 22:50 碎蜂 阅读(11) 评论(0)  编辑