上一页 1 ··· 144 145 146 147 148 149 150 151 152 ··· 164 下一页
摘要: 我在前文当泛型的参数类型是动态的... 中以一个简单的例子引出了动态代理,我们使用动态代理,主要是因为动态代理拥有这样的能力--使得某个类型A在运行的时候能转化为一个指定的接口I,即使这个类型A在定义的时候并没有从这个指定的接口I继承。 这句话是什么意思了?还是回到当泛型的参数类型是动态的... 一文中的那个例子,在例子中,List<>并没有从ISimpleList继承,但是从表面看来,在运行的时候,我们通过动态代理可以以ISimpleList接口来“引用”List<>类型的对象。动态代理是在运行时在内存中构建的一种类型,该类型实现了接口I,但是它将所有的方法调用都转发 阅读全文
posted @ 2011-11-27 20:21 火腿骑士 阅读(131) 评论(0) 推荐(0) 编辑
摘要: ESFramework介绍之(35)―― IMessageTransceiver (本文适用于ESFramework V0.3+) 在ESFramework介绍之(7)-- 服务器代理IServerAgent 一文中,我们详细的介绍了IServerAgent,我们已经知道,客户端与服务器之间的所有通信都可经过IServerAgent,包括要转发的P2P消息。IServerAgent的主要目的是:(1)屏蔽客户端与服务端之间的通信协议(Tcp/Udp),ITcpServerAgent、IUdpServerAgent(2)可将异步的消息请求/回复转化为同步的方法调用。 客户端与服务端的所有交互都可 阅读全文
posted @ 2011-11-27 20:10 火腿骑士 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 这是一篇迟到了很久的文章,要不是今天看到Mediar朋友写的“基于ESFramewok的 客户端和客户端通迅”的文章,我也许还不会想起写这篇应该很早就发表的Blog,它可以帮助ESFramework的研究者/使用者们更好的使用ESFramework。Mediar朋友的那篇文章中介绍了通过服务器转发P2PMessage,Mediar手动实现了一个自己的处理器,实际上ESFramework已经内置了P2PMessage的处理器,那就是P2PMessageDealer,P2PMessageDealer不仅可以把消息转发给连接到同一个AS上的好友,而且可以转发给连接到异地AS上的好友。不管怎样,还是. 阅读全文
posted @ 2011-11-27 19:57 火腿骑士 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 对大多数大型系统而言,数据库往往是最容易出现瓶颈的地方,而通过使用恰当的缓存技术可以非常有效地减轻数据库的负载。将系统中用到的所有数据进行分类,分别对待不同种类的数据而不是一视同仁,有利于正确地做出缓存哪些数据、以及如何缓存的决策。我通常将系统中用到的数据分为四类:恒定不变的数据,只发生增量的数据,偶尔改变的数据,经常改变的数据。(1)对于恒定不变的数据,采用普通的恒定缓存,即这种缓存在系统启动后初始化一次就不再改变了。(2)对于只发生增量的数据,采用智能式的增量缓存,如果所要的数据在这种缓存中不存在,则该缓存会从其它地方(如数据库)自动加载目标对象并缓存起来。(3)对于偶尔改变的(但不是十分 阅读全文
posted @ 2011-11-26 17:13 火腿骑士 阅读(189) 评论(0) 推荐(0) 编辑
摘要: ESFramework介绍之(23)―― AgileTcp 前面已经介绍了ITcp接口,而AgileTcp就是ESFramework给出的ITcp的参考实现。在之前,我曾经讲解过模拟完成端口的Tcp组件实现和异步Tcp组件实现,在它们的基础之上,我更改了处理策略,而形成了AgileTcp,目的是更清晰的结构、更高的效率。这个策略会在后面讲到。 Tcp组件主要控制着系统与终端用户的所有消息的进出,ITcp接口描述了这个组件的外貌,告诉外部如何使用Tcp组件、如何与Tcp组件交互。而从实现的角度来看,我们必须理清Tcp组件的职责:(1)管理所有已经建立的Tcp连接(2)管理与每个连接相对应接收缓. 阅读全文
posted @ 2011-11-25 17:08 火腿骑士 阅读(177) 评论(0) 推荐(0) 编辑
摘要: .NET平台下可复用的Tcp通信层实现(续) 上一篇主要讲到了Tcp通信层中的核心组件――Tcp组件的实现,Tcp组件是整个通信层的消息驱动源,甚至,可以将Tcp组件看作是我们整个服务器系统的消息驱动源,消息处理过程从这里引发。类似的消息驱动源还有发布的WebService接口、Remoting接口等。今天我们需要关注的是Tcp通信层中的“中央”组件――消息分派器组件ITcpReqStreamDispatcher,大家已经从前文的组件关系图中看到了消息分派器的大致位置和作用了,它是Tcp通信组件和消息处理器之间的“桥梁”。我们再对前文描述的通信层组件之间关系的一段话回顾一下: “当网络(Tc. 阅读全文
posted @ 2011-11-25 16:46 火腿骑士 阅读(217) 评论(0) 推荐(0) 编辑
摘要: .NET平台下可复用的Tcp通信层实现 2006年已经来临,回首刚走过的2005,心中感慨万千。在人生和生活的目标上,有了清晰明确的定位,终于知道了自己喜欢什么样的生活,喜欢什么样的生活方式;在技术上,成熟了不少,眼界也开阔的不少,从面向对象到组件、从.Net到J2EE、从微软到开源,颇有收获。特别值得一提的是,认识了Rod Johnson这个大牛人,也终于在自己的项目中正式使用Spring.net框架来开发了,这确实是一个优秀的框架。而在已经到来的2006年,我有一个主要目标就是B/S应用开发,来填补自己在企业级开发上的另一半空白。 以前就很想将自己在Tcp通信层的开发心得、经验共享出来.. 阅读全文
posted @ 2011-11-25 16:39 火腿骑士 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 有很多朋友要求给出一个应用ESFramework的Demo,在前面介绍ESFramework支持的4层架构中(回顾),有AS、FS、IRAS,其中FS的功能需求最简单,所以本文就给出一个FS实现示例。 FS主要用于管理功能插件,并且将所有的功能性请求都转发给对应的功能插件处理,不需要关心用户(由AS管理)、不用关心具体的业务需求(由对应的功能插件处理),所以FS非常的单纯,基本上是与应用无关的,可以在任何应用中复用同一个FS。(但是AS和IRAS就很难复用了,因为不同的应用对AS、IRAS的需求的差别可能非常大)。实际上,FS的实现自己只包含4个cs文件,绝大多数组件都由ESFramework 阅读全文
posted @ 2011-11-25 16:30 火腿骑士 阅读(180) 评论(0) 推荐(0) 编辑
摘要: ESFramework介绍之(27)-- 支持OverdueMessage (离线消息)(本文适用于ESFramework V0.2+) QQ上,你给好友发消息,如果对方不在线,则服务器会把这个消息持久化存起来,等好友下次上线时,再转发给他。像这样的消息在ESFramework中称为OverdueMessage。显然,MSN没有支持OverdueMessage。当然了,ESFramework中的OverdueMessage不仅仅是文字消息,而是可以为任何类型的消息,比如,音频、视频、文件等等。 ESFramework中对所有P2P的消息的处理都是由P2PMessageDealer完成的,当P2 阅读全文
posted @ 2011-11-25 16:03 火腿骑士 阅读(128) 评论(0) 推荐(0) 编辑
摘要: ESFramework 4.0 快速上手(15) -- 客户端登录验证 在之前版本的Rapid引擎中,是没有提供客户端登陆验证的机制的,如果要验证用户的帐号密码信息,我们只有自己手动通过自定义信息来实现。在2011.04.25发布的新版本中,客户端Rapid引擎,则内置了在初始化时验证用户的帐号密码的功能,这使得登录验证变得更加简单。一.ESPlus.Application.Basic 空间的支持 为了实现验证用户账号密码的功能,ESPlus.Application.Basic 命名空间增加了几个基础设施。(1)ESPlus.Application.Basic.Passive.IBasicO. 阅读全文
posted @ 2011-11-25 16:00 火腿骑士 阅读(175) 评论(0) 推荐(0) 编辑
上一页 1 ··· 144 145 146 147 148 149 150 151 152 ··· 164 下一页