随笔分类 -  Wcf Extension

摘要:ASP.NET MVC和WCF真是微软两个很棒的框架,设计的很好,可扩展性非常强,到处都是横切、管道。以前写过一篇MVC流程的文章,http://www.cnblogs.com/lovecindywang/archive/2010/12/02/1894740.html主要是使用了MVC的各种扩展。如下图列出了WCF的一些扩展点供参考,其实知道某个扩展点是干什么之后,搜索一下MSDN这个接口就一清二楚了:大部分情况下针对服务模型层进行扩展即可,我们可以看到就一个服务调用已经被完全打散了,细化到:调用的参数、调用什么方法、调用什么类型、类型怎么创建、消息的拦截、错误拦截、上下文初始化、服务承载。。 阅读全文
posted @ 2012-03-01 20:05 lovecindywang 阅读(5874) 评论(3) 推荐(6) 编辑
摘要:源代码见 http://wcfextension.codeplex.com/注意:1) 本来没打算这么早开源,这只是一个比较原始的实现,请勿直接在商业环境使用2) 请注意本框架的授权条款Apache License 2.03) 本框架依赖的外部程序集或框架版权归原作者所有4) 框架之后可能会增加很多功能,请关注项目主页即使获得最新信息解压缩代码打开sln文件后可以看到这样的结构1) WcfExtension就是核心框架:Client文件夹放的是客户端用到的一些代码,Server自然是服务端用到的一些代码Log是日志相关的一些代码(四种日志),Config是配置相关的代码Setting是框架本身 阅读全文
posted @ 2011-05-10 15:33 lovecindywang 阅读(7745) 评论(44) 推荐(7) 编辑
摘要:以前写过一个MVC执行流程的分析的文章:http://www.cnblogs.com/lovecindywang/archive/2010/12/02/1894740.html使用一些自定义的代码埋点方式来解析MVC框架颞部的执行过程。今天看到一个老外写了一篇不错的Wcf文章,我整理了一下它的代码,为每一个方法加上了MSDN中标注的中文注释,大家可以通过这个例子来学习Wcf的扩展以及了解Wcf框架内部的执行流程:完整的代码点击这里下载。下图可以看到代码执行结果的控制台截图(点击查看大图):注意:1) 蓝色的代表服务端的执行逻辑,黄色的代表客户端的执行逻辑2) 执行了三次方法,第一次普通的请求返 阅读全文
posted @ 2011-05-09 14:50 lovecindywang 阅读(3158) 评论(8) 推荐(4) 编辑
摘要:对于负载均衡环境,多服务器内存中缓存数据的话,需要解决的一个很重要的问题就是一旦数据库中数据有更新,怎么让缓存的数据立即更新?如果可以容忍延迟或是差异性的话,可以考虑缓存的数据有一个过期时间。但是,最好的方式还是采用通知方式,或者说发布订阅方式。所有的客户端会订阅客户端配置修改的消息,所有的服务端会订阅服务端配置修改的消息,配置后台在修改后复杂发布这个消息。在这里采用redis作为发布订阅的服务端,利用TCP双工特性与所有客户端和服务端保持长连接,进行消息的推送。 string contract = ""; using (WcfConfigDataContext data 阅读全文
posted @ 2011-04-28 17:31 lovecindywang 阅读(4732) 评论(17) 推荐(9) 编辑
摘要:在第一篇文章中已经列出了几种日志的概览:所有的日志都有一个最终基类,来看看这个类:[DataContract(Namespace = "WcfExtension")] [KnownType(typeof(WcfExceptionInfo))] [KnownType(typeof(ServerExceptionInfo))] [KnownType(typeof(ClientExceptionInfo))] [KnownType(typeof(WcfInvokeInfo))] [KnownType(typeof(ServerInvokeInfo))] [KnownType(ty 阅读全文
posted @ 2011-04-28 15:01 lovecindywang 阅读(4050) 评论(6) 推荐(5) 编辑
摘要:假设定义了一个服务契约:[ServiceContract(Namespace = "WcfExtension.Services.Interface")] public interface ITestService { [OperationContract] int Add(int x, int y); [OperationContract] [ServiceKnownType(typeof(TestContract))] ITestContract TestData(ITestContract tc); ... 阅读全文
posted @ 2011-04-28 12:54 lovecindywang 阅读(3543) 评论(4) 推荐(6) 编辑
摘要:从这次开始在几个方面简单阐述一下实现,集中配置是这个框架很大的一个目的,首先在数据库中会有这么一些表:其实可以看到这些表的结构,应该是和<system.serviceModel>配置节点中的层次有对应的1) Service表描述的是服务,主要保存服务行为以及服务的配置。在这里,ServiceConfig是框架内用到的配置,比如各种日志是否要记录等等。服务对应到服务的集群,集群公开一个地址,客户端访问这个地址,也就是一个负载均衡的虚拟IP地址。2) 一个Service可以有多个ServiceEndpoint,ServiceEndpoint中定义了契约的版本,类型和行为,以及涉及到地址 阅读全文
posted @ 2011-04-28 12:38 lovecindywang 阅读(4780) 评论(12) 推荐(8) 编辑
摘要:由于希望使用Wcf作为公司内的通讯框架,因此基于Wcf进行了一些扩展,主要的目的有以下几个方面: 1) 希望减少客户端调用的复杂度,调用方式简化为WcfServiceLocator.Create<IT... 阅读全文
posted @ 2011-04-25 13:59 lovecindywang 阅读(7927) 评论(23) 推荐(10) 编辑