WCF服务端基于配置的实现.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WCF服务端基于配置的实现

WCF服务端基于配置的实现——拦截??? 如果说到拦截器,相信大家都不陌生,所有的AOP都依赖各种形式的拦截器。为了让WCF服务端的行为发生变化,这里要借助拦截器的力量。问题:WCF里面如何创建一个拦截器???? 事实上,WCF里面有很多种拦截器,分别用于拦截不同的信息。这里要改变的是方法的实现部分,因此,只要拦截WCF操作就可以达到目的。??? 那么,如何拦截操作哪???? 如果熟悉WCF的话,那么,一定知道有这么一个接口:IOperationInvoker??? 这个接口的核心方法为:Invoke及其异步方法问题:如何把一个实现IOperationInvoker的实例注入WCF??? 仔细看一下MSDN,或者看reflector,就可以发现,所有实现IOperationInvoker的类型,几乎都是通过各种OperationBehavior加入的。??? 而所有的OperationBehavior都实现了一个IOperationBehavior接口。主角和设计约束??? 主角们在刚才的两个问题中已经全部登场了:IOperationInvoker和IOperationBehavior??? 剩下来的问题是如何实现这两位主角。??? 为了简化期间,这里只考虑这样的情况:所有的操作只有一个输入值和一个输出值,以及只有同步操作。当然这里的一个输入/输出是指一个简单或复杂值,也就说,需要传多个值时,使用一个自定义类型来包裹这多个值。实现??? 先说说实现IOperationInvoker,这里盗用一下MVC的概念,不妨将我们的实现控制器声明为:ControllerInvoker??? 简单的示意: 1: internalsealedclassControllerInvoker 2: :IOperationInvoker 3: { 4: ? 5: privatereadonlyIOperationInvoker Inner; 6: ? 7: publicControllerInvoker(IOperationInvoker inner) 8: { 9: Inner = inner; 10: } 11: ? 12: publicobject[] AllocateInputs() 13: { 14: returnInner.AllocateInputs(); 15: } 16: ? 17: publicobjectInvoke(object instance, object[] inputs, outobject[] outputs) 18: { 19: // do something before invoking 20: object result = Invoke(instance, inputs, out outputs); 21: // do something after invoking 22: return result; 23: } 24: ? 25: publicIAsyncResultInvokeBegin(object instance, object[] inputs, AsyncCallback callback, object state) 26: { 27: thrownewNotSupportedException(); 28: } 29: ? 30: publicobjectInvokeEnd(object instance, outobject[] outputs, IAsyncResult result) 31: { 32: thrownewNotSupportedException(); 33: } 34: ? 35: publicboolIsSynchronous 36: { 37: get { returntrue; } 38: } 39: }???? 我们的Invoker目前什么好事情也没做(坏事倒是做了一桩,引入了不支持异步),别急,这个类还没完工哪。??? 再看看Behavior需要做什么: 1: [AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMulti

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档