上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 22 下一页
摘要: WCF从第一个版本的推出到现在,整个架构体系基本上没有出现大的变化。在我看来,可扩展性的设计是WCF的架构体系能够在一段不短的时期内保持稳定的一个最主要的原因。而反观于WCF几乎同时推出的WF,各个版本演进的历史,你会发现几乎WF推出的每一个版本都是“革新性”的改变。正是因为WCF具有极大的扩展性,WCF新的版本的功能本身就可以通过这些丰富的扩展点来实现,而作为最终使用者的我们也可以实现我们自己的扩展,使WCF能够按照我们希望的方式来运作。 阅读全文
posted @ 2011-09-16 09:05 Artech 阅读(9271) 评论(19) 推荐(16) 编辑
摘要: 今天写《WCF技术剖析(卷2)》关于《WCF扩展》一章,举了“如何通过WCF扩展实现与IoC框架(以Unity为例)集成”(《通过自定义ServiceHost实现对WCF的扩展[实例篇]》)的例子。为了展示Unity如何实现几种典型的注入方式(构造器注入、属性注入和方法注入),我写了一个简单的小程序。如果读者对Unity或者IoC没有太多概念,我觉得这个小程序对于你初步地认识它们具有一定的帮助意义。如果你对Unity或者IoC有深入的认识,请忽略本文。 阅读全文
posted @ 2011-09-15 17:52 Artech 阅读(21002) 评论(36) 推荐(41) 编辑
摘要: 在《原理篇》中我们谈到了通过自定义ServiceHost对WCF进行扩展的本质,以及在IIS/WAS寄宿情况下ServiceHostFactory的作用。接下来通过一个具体的例子来演示如何通过WCF扩展实现以Unity为代表的IoC框架的集成,以及应用该扩展的ServiceHost和ServiceHostFactory如何定义。 阅读全文
posted @ 2011-09-15 11:30 Artech 阅读(11191) 评论(33) 推荐(19) 编辑
摘要: 在创建ServiceHost的时候,WCF会加载服务相关的配置并将其作为服务的描述信息附加到ServiceHost对象上,我们也可以在开启ServiceHost之前对其服务描述信息进行相应的修改。ServiceHost在开启之前具有的服务描述信息将会决定在开启之后创建的服务端运行时框架。所以如果我们通过自定义ServiceHost对象并根据具体应用场景的具体需求对其服务描述进行定制,同样可以起到对WCF服务端进行扩展的目的。 阅读全文
posted @ 2011-09-14 09:51 Artech 阅读(6348) 评论(3) 推荐(5) 编辑
摘要: 为了让读者对如何利用相应的行为对WCF进行扩展有个深刻的认识,在这里我提供一个简单的实例演示。本实例模拟的场景是这样的:我们创建一个支持多语言的资源服务,该服务旨在为调用者提供基于某种语言的文本型资源。但是,我们不希望客户端在每次调用服务的时候都显式地制定具体的语言,而是根据客户端服务调用线程表示语言文化的上下文来自动识别所需的语言。 阅读全文
posted @ 2011-09-13 08:27 Artech 阅读(6131) 评论(30) 推荐(16) 编辑
摘要: 作为最为常用的扩展方式,WCF的四大行为的使用主要体现在两个方面:其一、WCF自身提供的很多特性和功能是通过行为的方式来实现的;其二、作为使用WCF的应用,可以通过自定义的行为来实现解决具体问题的扩展。本篇文章为你讲述WCF四大行为(服务行为、终结点行为、契约行为和操作行为)的本质。 阅读全文
posted @ 2011-09-12 10:09 Artech 阅读(6296) 评论(11) 推荐(11) 编辑
摘要: 当基于某个终结点创建的ChannelFactory被开启的之后,位于服务模型层的客户端运行时框架被成功构建。站在编程的角度看ChannelFactory,它就是一个创建用于服务调用的服务代理对象的工厂。由于服务调用需要借助于服务代理来完成,我们很有必要从整个客户端运行架构层面来了解服务代理和基于服务代理的服务调用是如何实现的。 阅读全文
posted @ 2011-09-10 11:04 Artech 阅读(3958) 评论(12) 推荐(5) 编辑
摘要: 对于一般的编程人员来说,进行WCF的服务调用之需要通过添加服务引用通过获取元数据生成服务代理类型,或者直接通过ChannelFactory创建用于服务调用的代理对象即可。但是比是否知道当我们创建、开启ChannelFactory的时候,以及用它来创建服务代理的是否WCF内部为我们作了哪些工作?对于一个简单的服务调用,WCF客户端又是采用怎样的处理流程?本篇文章将会给你答案。 阅读全文
posted @ 2011-09-09 18:30 Artech 阅读(5947) 评论(25) 推荐(18) 编辑
摘要: 对于需要进行大规模数据传输的WCF应用来说,对于请求消息和回复消息进行传输前的压缩,不但可以降低网络流量,也可以提高网络传输的性能。由于WCF的扩展性,我们可以采用不同的方式实现对消息的压缩,本文提供一种比较简单的实现方式。 阅读全文
posted @ 2011-08-07 08:50 Artech 阅读(14699) 评论(85) 推荐(40) 编辑
摘要: 终结点分发器在自己的运行时中对请求消息的处理最终肯定体现在相应操作的执行。如果从服务描述的角度来看,操作是一个OperationDescription对象。而服务端分发运行时中的操作则代表的是一个DispatchOperation对象。作为服务描述的一部分,服务所有终结点的所有操作描述(OperationDescription)在ServiceHost创建过程中被创建。而当ServiceHost被正常开始时,这些操作描述最终转换成分发操作(DispatchOperation)。而DispatchRuntime的Operations属性代表了对应终结点的所有分发操作。 阅读全文
posted @ 2011-07-24 22:07 Artech 阅读(5716) 评论(8) 推荐(7) 编辑
摘要: 作为WCF中一个核心概念,终结点在不同的语境中实际上指代不同的对象。站在服务描述的角度,我们所说的终结点实际上是指ServiceEndpoint对象。如果站在WCF服务端运行时框架来说,终结点实际上指代的是终结点分发器(EndpointDispatcher)。两者是一一匹配的,并且前者是创建后者的基础。而终结点分发器具有自己的运行,即分发运行时(DispatchRuntime)。 阅读全文
posted @ 2011-07-23 15:07 Artech 阅读(6106) 评论(19) 推荐(10) 编辑
摘要: 在这篇文章中,我们对信道分发器(ChannelDispatcher)本身作一个深入的了解,首先来看看它具有哪些可供扩展的组件,以及我们可以针对信道分发器对WCF实现哪些可能的扩展。 阅读全文
posted @ 2011-07-18 22:12 Artech 阅读(6377) 评论(16) 推荐(9) 编辑
摘要: WCF的服务端架构体系又可以成为服务寄宿端架构体系。我们知道,对于一个基于某种类型的服务进行寄宿只需要使用到一个唯一的对象,那就是ServiceHost。甚至在某种语境下,我们所说的服务实际上就是指的对应的ServiceHost对象。整个服务寄宿过程包括两个阶段,即服务描述的创建和服务端运行框架的建立。而第一个阶段创建的服务描述是为了第二个阶段对服务端运行时框架建立服务的。 阅读全文
posted @ 2011-07-17 22:10 Artech 阅读(10727) 评论(18) 推荐(18) 编辑
摘要: 对于WCF服务来说,一个服务具有若干操作,而这些操作由于提供的功能或者内部访问的资源不同,需要进行不同的权限设置。借助于.NET安全相关的应用编程接口,我们可以通过声明的方式将某个服务操作与调用该操作应当具有的权限集进行关联。在运行时,当调用某个服务操作的用户被成功认证后,它具有的权限集被获取出来并绑定到当前安全上下文。WCF框架本身在试图执行目标操作之前可以根据当前安全上下文确定该用户是否有权限执行该服务操作。 阅读全文
posted @ 2011-07-12 22:13 Artech 阅读(9794) 评论(12) 推荐(10) 编辑
摘要: 在《模拟(Impersonation)与委托(Delegation)》一文中,我们对模拟和委托这两个概念以及相关编程实现进行了详细说明。如果将模拟使用在WCF上面,就意味着WCF可以模拟客户端身份(而不是启动寄宿进程的Windows帐号)执行服务操作。这篇文章主要介绍WCF关于模拟的编程。 阅读全文
posted @ 2011-07-12 22:05 Artech 阅读(3778) 评论(0) 推荐(3) 编辑
摘要: 在《原理篇》中,我们谈到WCF自定义授权体系具有两个核心的组件:AuthorizationPolicy和ServiceAuthorizationManager,已经它们是如何写作最终提供一种基于声明的授权实现。为了让自定义授权有深刻的理解,我们来进行一个简单实例来演示如何通过自定义这两个组件实现“非角色授权策略”。 阅读全文
posted @ 2011-07-11 22:16 Artech 阅读(9560) 评论(16) 推荐(13) 编辑
摘要: 到目前为止,我么介绍的授权策略都是围绕着安全主体进行的,基本上都是基于角色的授权。虽然角色是定义权限最为常用的形式,但是它解决不了授权的所有问题。有时候授权需要通过一个复杂的表达式来表示,而且其中会涉及诸多元素,比如身份、角色和组织等。一句话,如果简单的基于角色的授权不能解决我们的问题,我们需要自定义授权策略。 阅读全文
posted @ 2011-07-11 21:13 Artech 阅读(8586) 评论(6) 推荐(10) 编辑
摘要: 在《原理篇》中我们谈到:如果采用自定义安全主体权限模式,我们可以通过自定义AuthorizationPolicy或者ServiceAuthorizationManager实现对基于当前认证用于相关的安全主体的提供,进而达到授权的目的。为了让大家对此有个更加深刻的认识,在这篇文章中我们会提供一个具体的例子。 阅读全文
posted @ 2011-07-09 20:35 Artech 阅读(6002) 评论(29) 推荐(5) 编辑
摘要: 在《通过扩展自行实现服务授权》一文中,我通过自定义CallContextInitializer的方式在操作方法之前之前根据认证用户设置了当前线程的安全主体,从而实现授权的目的。实际上,WCF的安全体系本就提供相应的扩展,使你能够自由地实现安全主体的提供方式。具体来说,安全主体的提供可以通过自定AuthorizationPolicy或者ServiceAuthorizationManager来实现。 阅读全文
posted @ 2011-07-07 22:07 Artech 阅读(6516) 评论(5) 推荐(12) 编辑
摘要: 其实针对安全主体的授权实现的原理很简单,原则上讲,只要你能在服务操作执行之前能够根据本认证的用户正确设置当前的安全主体就可以了。如果你了解WCF的整个运行时框架结构,你会马上想到用于授权的安全主体初始化可以通过自定义CallContextInitializer来实现。 阅读全文
posted @ 2011-07-05 19:01 Artech 阅读(7415) 评论(20) 推荐(8) 编辑
摘要: 为了让读者对基于ASP.ENT Roles授权方式有一个全面的认识,我们现在来做一个实例演示。在这个实例中,我们将采用不同的认证方式,包括Windows认证和证书认证(ASP.NET Membership + Roles为常见的组合方式,在这里就不多作演示)。 阅读全文
posted @ 2011-07-04 19:43 Artech 阅读(5117) 评论(11) 推荐(10) 编辑
摘要: 在采用Windows认证的情况下,使用基于Windows用户组安全主体权限模式是一个不错的选择,但是采用ASP.NET Roles却可以使用与任何类型的客户端凭证和认证模式。甚至可以这么说,绝大部分基于角色的授权都可以通过ASP.NET Roles来实现。 阅读全文
posted @ 2011-07-04 13:46 Artech 阅读(7577) 评论(3) 推荐(14) 编辑
摘要: 由于服务操作是在寄宿进程中执行,在默认的情况下,服务操作是否具有足够的权限访问某个资源(比如文件)决定于执行寄宿进程Windows帐号的权限设置,而与作为客户端的Windows帐号无关。在有多情况下,我们希望服务操作执行在基于客户端的安全上下文中执行,以解决执行服务进行的帐号权限不足的问题。这就涉及到一个重要的话题——模拟与委托。 阅读全文
posted @ 2011-07-03 15:00 Artech 阅读(8035) 评论(11) 推荐(8) 编辑
摘要: 为了让读者对基于Windows用户组的授权具有深刻的认识,接下来我们通过一个简单的事例来讲解在真正的应用中该授权模式如何使用。对于接下来演示的事例,我们将采用Windows认证和授权。至于授权的最终实现,我们采用的是在服务方法上面应用PrincipalPermissionAttribute特性方式的声明式授权。 阅读全文
posted @ 2011-07-02 22:58 Artech 阅读(5674) 评论(23) 推荐(6) 编辑
摘要: Windows用户组安全主体权限模式,顾名思义,就是将利用Windows安全系统将对应的Windows帐号所在的用户组作为该用户权限集的授权方式。认证和授权密不可分,但是对于认证和授权在WCF安全体系中的实现来说,它们则是相对独立的。认证属于安全传输的范畴,是在信道层实现的,而授权则是在服务模型层实现的。但是对于基于Windows用户组的授权来说,最终体现出来的授权行为却和采用何种认证具有密切的关系。 阅读全文
posted @ 2011-07-02 11:35 Artech 阅读(7358) 评论(6) 推荐(6) 编辑
摘要: 前面的两篇文章主要探讨基于安全主体的授权。通过这些介绍我们知道:如果我们在实施授权的时候,当前线程的安全主体能够被正确设置,我们就可以正确地完成授权。安全主体具有两个基本的要素:身份与权限。身份在客户端经过认证之后已经确立下来,现在需要解决的问题就是如何获取被认证用户的权限。为了解决这个问题,WCF为我们提供了三种不同的方案。 阅读全文
posted @ 2011-07-01 22:44 Artech 阅读(14198) 评论(11) 推荐(10) 编辑
摘要: 毫不夸张地说,安全主体(Principal)是整个授权机制的核心。我们可以简单地将将安全主体定义成能够被成功实施授权的主体。一个安全主体具有两个基本的要素:基于某个用户的安全身份和该用户具有的权限。绝大部分的授权都是围绕着“角色”进行的,我们将一组相关的权限集和一个角色绑定,然后分配给某个用户。所以在基于角色授权环境下,我们可以简单地将安全主体表示成:身份 + 角色。 阅读全文
posted @ 2011-06-30 14:57 Artech 阅读(9328) 评论(15) 推荐(19) 编辑
摘要: 我们为应用建立安全保障体系的一个重要的目的在于:通过权限控制让用户只能执行被允许的功能,访问被许可的资源。这就是本系列文章讨论的主题授权。对于WCF服务来说,一个服务具有若干操作,而这些操作由于提供的功能或者内部访问的资源不同,需要进行相应的授权。在正式介绍WCF授权之前,先来谈谈两个重要的概念:身份与安全主体。 阅读全文
posted @ 2011-06-29 22:56 Artech 阅读(9244) 评论(22) 推荐(26) 编辑
摘要: 多年之前,我写了一篇通过WCF扩展实现上下文信息从客户端自动传递到服务端的文章,其实现机制很简单:将上下文信息存放到SOAP Header进行传递。那么对于非SOAP消息的RESTful服务就不使用了。为了解决这个问题,我们可以将存放上下文信息的地方从SOAP Header替换成HTTP Header。这篇为你消息讲述具体的实现[源代码从这里下载]。 阅读全文
posted @ 2011-06-28 20:14 Artech 阅读(7626) 评论(15) 推荐(17) 编辑
摘要: 对消息进行签名和加密分别解决了消息的一致性和机密性问题。而最终是仅仅采用签名还是签名与加密共用取决于契约中对消息保护级别的设置。但是具体的签名和加密在整个WCF框架体系中如何实现?是采用对称加密还是非对称加密?密钥如何而来?相信这些问题在本篇文章中你会找到答案 阅读全文
posted @ 2011-06-27 07:40 Artech 阅读(3090) 评论(8) 推荐(11) 编辑
摘要: 在《上篇》中,我们着重讨论了消息的保护等级如果在契约中定义,定义在不同契约(服务契约、错误契约和消息契约)中的消息保护等级具有怎样的层级关系,以及在默认情况下各种绑定采用怎样的保护等级。在下篇中,我们进一步来探讨消息保护等级和绑定的关系。 阅读全文
posted @ 2011-06-21 23:04 Artech 阅读(4335) 评论(13) 推荐(9) 编辑
摘要: 到目前为止,对于WCF安全传输的三个方面,我们已经对认证进行了详细的介绍,现在我们来关注另外两个话题:消息的一致性和机密性,两者又统称为消息保护(Message Protection)。消息安全等级指的是对整个消息或者消息的某个部分实施安全保护采用的等级。按照级别由低到高,WCF支持三种不同的安全等级 阅读全文
posted @ 2011-06-20 23:20 Artech 阅读(5609) 评论(25) 推荐(15) 编辑
摘要: 前面介绍Windows认证和用户名/密码认证这两种典型的客户端认证模式,我们最后来介绍最后一种客户端认证方式,即客户端凭证类型为X.509证书时服务端采用的认证,简称为证书认证。本篇文章主要涉及两个主题:在客户端如何设置X.509证书作为客户端凭证;在服务端如何设置不同的模式来对客户端的证书凭证进行认证 阅读全文
posted @ 2011-06-15 22:01 Artech 阅读(9959) 评论(17) 推荐(7) 编辑
摘要: 对于基于Internet的应用,基于用户名和密码的认证方式是最为常用的,而WCF为你提供了不同模式的用户名认证方式:Windows、MembershipProvider和Custom 阅读全文
posted @ 2011-06-13 21:13 Artech 阅读(16102) 评论(16) 推荐(14) 编辑
摘要: 结束了服务认证的介绍之后,我们接着介绍WCF双向认证的另一个方面,即服务对客户端的认证,简称客户端认证。客户端认证采用的方式决定于客户端凭证的类型,内容只要涉及基于以下三种典型客户凭证类型的认证:Windows、用户名和X.509证书。先来谈谈Windows认证 阅读全文
posted @ 2011-06-12 21:17 Artech 阅读(9275) 评论(21) 推荐(7) 编辑
摘要: 在采用TLS/SSL实现Transport安全的情况下,客户端对服务证书实施认证。但是在默认情况下,这种认证仅仅是确保服务证书的合法性(通过数字签名确保证书确实是由申明的CA颁发)和可信任性(证书或者CA证书存储于相应的可信赖存储区)。而WCF提供服务证书并不限于此,客户端对服务认证的模式应该是这样的:服务端预先知道了服务的身份,在进行服务调用之前,服务端需要提供相应的凭证用以辅助客户端确认调用的服务具有预先确定的身份。对于这样的服务认证模式,具有两个重要的概念,即服务凭证和服务身份。 阅读全文
posted @ 2011-06-12 11:40 Artech 阅读(10704) 评论(7) 推荐(11) 编辑
摘要: 上一篇演示的是绑定类型为NetTcpBinding情况下基于TLS/SSL的Transport安全模式的实现,接下来我们改用另外一种绑定:WS2007HttpBinding。对于基于HTTP的绑定,Transport安全模式的实现方式又根据寄宿方式的不同而具有一定的差异 阅读全文
posted @ 2011-06-02 22:32 Artech 阅读(15049) 评论(16) 推荐(9) 编辑
摘要: 在接下来的系列文章中我们正是讨论关于身份认证的主题。在前面我们已经谈到了,WCF中的认证属于“双向认证”,既包括服务对客户端的认证(以下简称客户端认证),也包括客户端对服务的认证(以下简称服务认证)。对于TLS/SSL来说,客户端和服务在为建立安全上下文而进行的协商过程中会验证服务端的X.509证书如否值得信任。对于服务证书的验证实际上可以看成是一种服务认证,或者说TLS/SSL对证书的验证可以看成是WCF服务认证的一个环节。 阅读全文
posted @ 2011-05-29 14:14 Artech 阅读(9924) 评论(13) 推荐(12) 编辑
摘要: 对于常用的几种绑定类型,它们都支持怎样的安全模式,以及针对各种安全模式可以采用怎样的认证方式(通过客户端凭证类型决定),这些都在前面的一系列文章中进行了详细的介绍。接下来我们通过表格的形式对不同类型的系统预定义对不同的安全模式进行一下总结。 阅读全文
posted @ 2011-05-28 11:17 Artech 阅读(7171) 评论(13) 推荐(11) 编辑
摘要: 在前面两篇中,我们详细地介绍了四种基于HTTP的绑定分别支持的安全模式,已经在相应的安全模式下可以采用怎样的客户端凭证。在本篇文章中,我们安全线相同的方式来介绍三种基于局域网的绑定,即NetNamedPipeBinding、NetTcpBinding与 NetMsmqBinding。 阅读全文
posted @ 2011-05-27 22:48 Artech 阅读(8091) 评论(4) 推荐(5) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 22 下一页