自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

ESFramework介绍之(27)-- 支持OverdueMessage

(本文适用于ESFramework V0.2+) QQ上,你给好友发消息,如果对方不在线,则服务器会把这个消息持久化存起来,等好友下次上线时,再转发给他。像这样的消息在ESFramework中称为OverdueMessage。显然,MSN没有支持OverdueMessage。当然了,ESFramework中的OverdueMessage不仅仅是文字消息,而是可以为任何类型的消息,比如,音频、视频、...

2006-04-30 17:57:00 76

【记录】2006-04-30 11:30:00 本Blog访问量突破100000 !

最近好事连连啊!2006-04-30 11:30:00 本Blog访问量突破100000 ! 也祝嘟嘟于昨天顺利通过硕士答辩!

2006-04-30 11:57:00 65

撤销与反撤销 功能实现

你一定经常看见类似下面的图标: 它们就表示“撤销”与“反撤销”。在程序中,这种功能通常是使用Command模式实现的,本文也不例外。首先抽象定义Command,使用ICommand接口: publicinterfaceICommand{voidExcute();} Excute表示执行该ICommand引用的目标的所包含的动作(或动作序列)。 可撤销的命令也是一种命令,所以从IComma...

2006-04-30 09:57:00 765

待解决的问题,谁帮忙点破下!

01.关于Castle的IOC容器配置疑惑1?Question:以前一直使用Spring.net的IOC容器,据说Castle更适合.NET,所以研究了一下,遇到几个问题不能解决。Castle称组件实现的接口为服务,一般情况是一个组件仅仅实现一个服务(接口),如果一个组件实现了两个服务,而这两个服务都要在应用中使用,而Castle不允许将同一个组件(实例)注册两次,所以没有注册的那个服务不会被自动...

2006-04-29 15:58:00 56

ESFramework使用技巧(1)-- ESFramework 日志记录器的自动装配

ESFramework中很多重要的组件都配备了日志记录器IEsbLogger,用于记录框架运行时的错误和异常。这些重要组件都暴露了一个名为“EsbLogger”的属性,用于设值法注入日志记录器。 在构建应用时,我采用Spring.net进行组件装配,在Spring的XML配置文件中,需要为这些重要组件配置“EsbLogger”属性,为了不遗漏、配置不错误,手动装配时必须非常小心,甚至是我自己,也...

2006-04-28 15:58:00 67

使用NHibernate的你也许需要SessionQuicker

NHibernate功能的强大,勿庸置疑。但是很多地方使用起来也颇为繁琐,比如,无法完整的构建数据层、我们很多时候还是需要绕过NHibernate而直接使用ADO.net;比如,任何一次数据访问,哪怕只是简单的数据读取,我们都需要仔细的处理Session、Transaction。如果你的数据层使用NHibernate构建,那么类似下面的代码可能遍地开花: ITransactiontrans=n...

2006-04-28 09:58:00 59

ESFramewor使用技巧(2)-- 在插件中使用NHibernate

我们来讨论一下这种情景,你采用基于ESFramework的4层架构进行应用开发,你分析用户的需求,并将其分类整理为几大块,考虑每一块使用一个功能插件来完成。在这几个插件中,有个插件需要访问某个数据库,并且只有这个插件需要访问这个数据库,根据插件的“自治”性质,你不想将本插件中的数据访问“上升蔓延”到应用程序(FS),而是让它“仅仅”在本插件中,这样,无论是对FS还是插件都是有好处的--FS自己不...

2006-04-25 10:58:00 60

ESFramework应用示例--可复用的FS

有很多朋友要求给出一个应用ESFramework的Demo,在前面介绍ESFramework支持的4层架构中(回顾),有AS、FS、IRAS,其中FS的功能需求最简单,所以本文就给出一个FS实现示例。 FS主要用于管理功能插件,并且将所有的功能性请求都转发给对应的功能插件处理,不需要关心用户(由AS管理)、不用关心具体的业务需求(由对应的功能插件处理),所以FS非常的单纯,基本上是与应用无关的,...

2006-04-20 17:58:00 77

初试Ajax.Net !

从事了几年的C/S模式的开发,曾一直无暇研究B/S,前段时间摊上了一个B/S的活,这才开始认真的关注其B/S开发。而且,AJAX技术的风起云涌,也使得B/S应用的表现力日益增强,大有逐步吞食C/S领地之势。这两天通过《Ajax基础教程》开始学习Ajax技术,在附录的Ajax框架介绍中发现了这样一句话:“利用Ajax.Net,你可以从JavaScript客户调用.NET方法”。这是我梦寐以求的功能...

2006-04-19 10:58:00 61

ESFramework介绍之(24)―― 日志记录IEsbLogger

框架,从另外一个角度说,就是一个半成品的应用程序,既然如此,框架在运行的过程中也会遇到诸多的异常、错误情况,我们需要将这些情况记录下来,以便在发生问题时为我们的诊断提供必要的帮助。 最最开始,那还是在ESFramework的前身即EnterpriseServerBase的时候,由于当时只是将EnterpriseServerBase作为一个类库,而并没有提升到一个框架的高度,所以是没有必要为之配备...

2006-04-14 11:58:00 59

ESFramework介绍之(23)―― AgileTcp

前面已经介绍了ITcp接口,而AgileTcp就是ESFramework给出的ITcp的参考实现。在之前,我曾经讲解过模拟完成端口的Tcp组件实现和异步Tcp组件实现,在它们的基础之上,我更改了处理策略,而形成了AgileTcp,目的是更清晰的结构、更高的效率。这个策略会在后面讲到。 Tcp组件主要控制着系统与终端用户的所有消息的进出,ITcp接口描述了这个组件的外貌,告诉外部如何使用Tcp组件...

2006-04-13 10:58:00 69

ESFramework介绍之(22)―― 服务器系统自动升级

(本文名字取为“服务器系统自动升级”,实际上适用于所有应用程序自动升级的情况。)前文介绍了在服务器或客户端应用程序运行的过程中,插件如何自动升级、更新。基于前文相同的理由,AS、FS、IRAS也需要有自动升级的功能。 与插件在运行时动态更新不同,服务器系统无法在运行时动态更新,只有在服务器系统重新启动的时候,才是自动升级的切入点。(1)对于功能服务器FS,可以采用持续/逐个更新的方式,即依次重启每...

2006-04-12 15:58:00 69

ESFramework介绍之(21)-- Tcp组件接口ITcp介绍

写了这么多篇介绍ESFramework的文章才想起来还有一些很基础的内容没有介绍,前面介绍的一些组件、框架基本上是与协议无关的(比如无论是Tcp还是Udp甚至是Remoting、WebService都可以通用),然而到了应用的最底层,我们总需要选择一种通信协议,.net Framework对Remoting和WebService已经封装的足够好了,而对Tcp和Udp提供的API还是很低级,所以...

2006-04-12 11:58:00 122

当你拥有一把用得顺手的锤子

记不得在哪里看过这句话,“当你拥有一把用得顺手的锤子,就会认为全世界都是钉子”。所有的事情、所有的问题,你都尝试用这把锤子去解决。很多情况下,常常,这把锤子解决不了问题,或者说,有更好的工具来解决手头的问题。比如,将钉子从木头中取出来,使用起子会更有效率、更省事。 编程语言,比如C#,就是我们手上的锤子;而由此语言而形成的思维方式、思考习惯更是我们头脑中一把无形的锤子。这是好事、也是坏事--好...

2006-04-10 17:12:00 97

当你拥有一把用得顺手的锤子

记不得在哪里看过这句话,“当你拥有一把用得顺手的锤子,就会认为全世界都是钉子”。所有的事情、所有的问题,你都尝试用这把锤子去解决。很多情况下,常常,这把锤子解决不了问题,或者说,有更好的工具来解决手头的问题。比如,将钉子从木头中取出来,使用起子会更有效率、更省事。 编程语言,比如C#,就是我们手上的锤子;而由此语言而形成的思维方式、思考习惯更是我们头脑中一把无形的锤子。这是好事、也是坏事--好事...

2006-04-09 17:58:00 150

将权限引入系统的探索

很久以前就尝试过使用AOP进行权限控制的管理,那时候只是试试而已,并没有在项目中应用过,最近跟的一个B/S项目中要求我们把权限管理加进去,于是我考虑以前的AOP方法是否真的可行。思考许久后的结果是,可行,但是太麻烦。 主要原因在于需要在UI层<=>逻辑层<=>数据层之外增加额外的一层来使得AOP拦截可以以恰当的粒度、恰当的时机切入。如果不增加额外的这一层而使用AOP就可能...

2006-04-08 22:58:00 53

ESFramework介绍之(20)―― 插件自动升级

当我们的服务平台搭建成功后,所需要做的主要事情就是开发服务端功能插件(IFunAddin)和客户端插件(IPassiveAddin),每个插件对(AddinPair)实现了一组相似或相近的需求/功能。 好了,我们已经开发了十多对插件对,然后分别XCopy到了各个服务器节点上,“整个系统”已经投入了运行。通过前面的介绍(回顾),相信大家对我们的“整个系统”有了个大致的映像。我们的IRAS服务器通常...

2006-04-07 14:58:00 68

ESFramework 可复用的通信框架(序)

自从2004年7月开始,就一直从事N层C/S结构的服务端的开发,从最初的熟悉各种Windows Socket API、熟悉完成端口模型,探索高效稳定的服务端通信模型,时至今日,慢慢的积累了一些C/S服务端开发的经验,ESFramework便是这些经验的总结。ESFramework的前生是EnterpriseServerBase类库,后来我将EnterpriseServerBase中的Network...

2006-04-07 11:36:00 63

ESFramework介绍之(19)―― 对动态组ActiveGroup的支持

什么是动态组?举个例子就清楚了。QQ支持多人在一个组中聊天的模式是群,这是一种静态组;而MSN中的动态的将多个人拉到一个组中来群聊,就是动态组。关于动态组,还有一个很好的例子,就是多人联网游戏,比如联网的星际。首先由发起者创建一个组(动态组),然后其它玩家加入进来开始游戏,游戏结束了,该动态组就销毁了。所以说,动态组是个“临时性的”,生命比较短暂;而静态组,通常被存储于永久介质(如数据库)中,即...

2006-04-07 10:58:00 78

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除