摘要:对于负载均衡环境,多服务器内存中缓存数据的话,需要解决的一个很重要的问题就是一旦数据库中数据有更新,怎么让缓存的数据立即更新?如果可以容忍延迟或是差异性的话,可以考虑缓存的数据有一个过期时间。但是,最好的方式还是采用通知方式,或者说发布订阅方式。所有的客户端会订阅客户端配置修改的消息,所有的服务端会订阅服务端配置修改的消息,配置后台在修改后复杂发布这个消息。在这里采用redis作为发布订阅的服务端,利用TCP双工特性与所有客户端和服务端保持长连接,进行消息的推送。 string contract = ""; using (WcfConfigDataContext data 阅读全文
posted @ 2011-04-28 17:31 lovecindywang 阅读 (4366) 评论 (17) 编辑
摘要:在第一篇文章中已经列出了几种日志的概览:所有的日志都有一个最终基类,来看看这个类:[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 阅读 (3812) 评论 (6) 编辑
摘要:假设定义了一个服务契约:[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 阅读 (3313) 评论 (4) 编辑
摘要:从这次开始在几个方面简单阐述一下实现,集中配置是这个框架很大的一个目的,首先在数据库中会有这么一些表:其实可以看到这些表的结构,应该是和<system.serviceModel>配置节点中的层次有对应的1) Service表描述的是服务,主要保存服务行为以及服务的配置。在这里,ServiceConfig是框架内用到的配置,比如各种日志是否要记录等等。服务对应到服务的集群,集群公开一个地址,客户端访问这个地址,也就是一个负载均衡的虚拟IP地址。2) 一个Service可以有多个ServiceEndpoint,ServiceEndpoint中定义了契约的版本,类型和行为,以及涉及到地址 阅读全文
posted @ 2011-04-28 12:38 lovecindywang 阅读 (4418) 评论 (12) 编辑