gaoxiang

专注于.NET技术

博客园 首页 新随笔 联系 订阅 管理

文章分类 -  ESFramework

1 2 3 4 下一页

摘要:前文介绍了异常关闭器的AOP实现,而权限管理也是一个AOP可以大展拳脚的地方,下面就来看看如何使用EsbAOP实现权限管理。 首先要解决的问题是如何判断用户是否拥有调用某个操作的权限,这个判断是由各个应用程序自己实现了,为了统一对权限的判断,所以我们指定了接口IPermissionVerifier: /// /// IPermissionVerifier 用于验证当前用户对... 阅读全文
posted @ 2006-05-18 15:33 S孤单一吻S 阅读(338) 评论(0) 推荐(0)

摘要:以我自己的异常处理经验,我通常会在UI事件处理函数或线程启动函数中截获所有的异常,然后对截获的异常作特定的处理--很多情况下,是显示一个错误信息给用户,或记录异常日志!在这“很多情况下”,我都需要做相同的工作,首先是用try...catch把UI事件处理函数或线程启动函数中的所有代码围起来,然后,可能就是MessageBox.Show(ex.Message)或其它的处理。 大家已经想到了,... 阅读全文
posted @ 2006-05-18 15:33 S孤单一吻S 阅读(191) 评论(0) 推荐(0)

摘要:EsbAOP是EnterpriseServerBase类库中的轻量级AOP框架,它实现了AOP的主要思想--对方法调用进行截获,并加入自定义的预处理、后处理。 EsbAOP与其它很多开源的AOP实现有些不同,其不同之处主要在于EsbAOP并没有严格的实现AOP理论的各种设施,但是EsbAOP非常实用,在后续的文章中,大家可以看到EsbAOP是如何运用于实际的系统开发中的。 理解EsbAOP... 阅读全文
posted @ 2006-05-18 15:32 S孤单一吻S 阅读(298) 评论(0) 推荐(0)

摘要:事件通知服务用于解决多个应用程序之间的事件发布与预定的问题。在.NET平台上,跨应用程序的事件发布/预定通常以Remoting作为底层的通信基础,在此基础之上,事件通知服务使用中介者模式来简化跨应用程序的事件通知问题。 本文采用的解决方案中,有两个重要组件:事件服务器EventServer和事件客户端EventClient。EventServer作为中介者,并作为一个独立的系统,通常可以将其... 阅读全文
posted @ 2006-05-18 15:31 S孤单一吻S 阅读(283) 评论(0) 推荐(0)

摘要:在开发中,经常会遇到这种情况,在A.dll中需要反射B.dll中的类型,如果稍不注意,就会产生运行时错误。关于跨程序集的反射,记住两点就可以:(1)如果使用typeof,编译能通过,则跨程序集的反射一定可以正常运行。可以说,typeof是支持强类型的。比如 Type supType = typeof(EnterpriseServerBase.DataAccess.IDBAccesser) ; ... 阅读全文
posted @ 2006-05-18 15:31 S孤单一吻S 阅读(1522) 评论(1) 推荐(0)

摘要:当UI动作引发一个耗时的计算时,我们经常需要将这个耗时的过程放到后台线程中去完成,然后获取该过程的结果。使用.NET提供的默认设施,无论是使用Thread还是使用异步调用,细节都比较繁琐。在前几天的blog上也看到了有些兄台的解决方案,但是觉得还不够好用,于是自己封了一个AsynCaller。 AsynCaller通过事件来通知外部异步调用的结果,IAsynCaller接口如下: p... 阅读全文
posted @ 2006-05-18 15:30 S孤单一吻S 阅读(193) 评论(0) 推荐(0)

摘要:类厂服务的主要功能是简化创建具体工厂任务,使工厂访问代码和工厂创建代码解藕。类厂服务是以抽象工厂模式为基础,并且在其上进行再综合。 在正式进入正题之前,为了方便后面的叙述,先要澄清一些概念,把上下文(Context)搭建起来,然后,我们再在这个上下文中进行讨论。 首先是两个基本定义:族和系列。(这两个概念是我自创的,不知道常用的术语是什么,知道的朋友请留言告诉我:))(1)族 --... 阅读全文
posted @ 2006-05-18 15:30 S孤单一吻S 阅读(240) 评论(0) 推荐(0)

摘要:所谓企业开发基础设施,指的是为那些几乎所有的企业开发都会遇到的共同的基础性的问题提供服务的设施,比如事务、日志、权限等等。其中很多设施都会以AOP的方式实现,有些则可能以类库的方式提供。我也一直在积累这方面的AOP组件和类库。 曾经做过一些关于日志、权限管理的AOP实现,这几天正在研究“类厂服务”,于是就有了写这个“企业开发基础设施”系列文章的想法,把自己的一些思想拿出来和大家一起讨论,有些... 阅读全文
posted @ 2006-05-18 15:29 S孤单一吻S 阅读(161) 评论(0) 推荐(0)

摘要:人们都善于用直观简单的方式来理解事物,我也坚信,所有优秀的解决方案都是直观而简单的,我喜欢直观而简单的解决方案,也许在找到直观简单的解决方案之前,我们已经尝试了用很多复杂费解的方式来解决问题。如果你不能把我们程序的解决方案用通俗易懂的方式给隔壁卖青菜的阿伯解释清楚的话,说明,这个解决方案还不够好――还不够简单和直观。宇宙够复杂了吧,可是霍金却创作《时间简史》系列的科普读物,既然是科普,它的读者就是... 阅读全文
posted @ 2006-05-18 15:28 S孤单一吻S 阅读(133) 评论(0) 推荐(0)

摘要:软件架构师的主要职责是什么?是抉择、是权衡。把软件称为艺术一点都没有夸张,可以说软件是科学、工程、与艺术的结合体。软件的艺术体现在权衡上。在这一期的《程序员》杂志上看到了一篇“鱼与熊掌--完美主义架构师的梦魇”,其中关于权衡要素的论述正切合我之所想,现将主要部分转摘如下,如果想了解更详细内容,请在本期程序员阅读全文。 (1)Time or Space 时间 vs. 空间 牺牲内存换取时间或... 阅读全文
posted @ 2006-05-18 15:27 S孤单一吻S 阅读(140) 评论(0) 推荐(0)

摘要:在我们自己编写的应用中,经常会用自定义类型的文件的来保存与应用相关的数据,如何改变我们的自定义类型的文件的图标?如何双击自定义类型文件的时候启动相应的应用程序了?本文将告诉你如何通过程序来完成这些功能! 比如.xcf文件就是XCodeFactory应用程序的项目文件。如果没有向Windows注册表注册该文件类型,那么.xcf文件的图标将是windows的文件默认图标,并且你双击一... 阅读全文
posted @ 2006-05-18 15:26 S孤单一吻S 阅读(4114) 评论(2) 推荐(2)

摘要:1.异常处理相对于返回错误代码的一个最大优点在于,异常可以被自动传递,这样,在编程时异常更加难以被忽视。 2.通常,只在最上层(一般是UI层)捕捉异常。如果要在其它层捕捉异常,除非是下列情况之一: (1)能够处理该异常,或者 (2)能够忽略该异常,或者 (3)需要转换该异常为其它特定异常后抛出新异常 3.UI层捕获异常后,可以 (1)将无关紧要的异常忽略。 (2)将异常转换为错误信息展现给用户。... 阅读全文
posted @ 2006-05-18 15:25 S孤单一吻S 阅读(347) 评论(0) 推荐(0)

摘要:这是一篇迟到了很久的文章,要不是今天看到Mediar朋友写的“基于ESFramewok的 客户端和客户端通迅”的文章,我也许还不会想起写这篇应该很早就发表的Blog,它可以帮助ESFramework的研究者/使用者们更好的使用ESFramework。Mediar朋友的那篇文章中介绍了通过服务器转发P2PMessage,Mediar手动实现了一个自己的处理器,实际上ESFramework已经内置了P... 阅读全文
posted @ 2006-05-18 15:12 S孤单一吻S 阅读(195) 评论(0) 推荐(0)

摘要:(本文适用于ESFramework V0.2+) 现在我们回想一下,当网络组件(Tcp/Udp组件)接收到一个消息后,这个消息会流经哪些组件,然后再通过网络组件发送出去了。如果你研究过ESFramework V0.1,你会发现,消息“行走”的路线模型可以用下图表示出来: 请求消息(路径由黑线表示)经过网络组件后,会被Hook链中的各个Hook按照特定的顺序处理,然后到达消息处理器,消息... 阅读全文
posted @ 2006-05-18 15:03 S孤单一吻S 阅读(250) 评论(0) 推荐(0)

摘要:本文适用于 ESFramework V0.2+) 不知你是否还记得,前面我们讲过,ESFramework规定了插件有如下特点: (1)一个插件是一个独立的物理单元。它可以独立的提供一项完整的服务(功能),而不需要依赖于其它插件。 (2)插件能自我描述 ―― 插件的所有对外的发布信息都由插件自己内部提供,而不依赖于外部文件或注册表。 (3)插件能自我管理 ―― 插件如果需要配置信息,则插件自己... 阅读全文
posted @ 2006-05-18 15:01 S孤单一吻S 阅读(237) 评论(0) 推荐(0)

摘要:对于游戏编程而言,我也是个初学者,这个游戏编程入门系列的文章,就当作是我在学习游戏编程的笔记和阶段小结吧。我们先从最简单的“精灵”开始,暂时我们不需要考虑DirectX或是OpenGL,不需要考虑3维等等这些复杂情形,直接使用GDI+绘图功能就可以了。 精灵,是构成游戏中活动体(比如,飞机、野兽等游戏人物)的最基本单元,任何一个活动体都可以由一个或多个精灵组合而成,每个精灵都是一个对象实例,... 阅读全文
posted @ 2006-05-18 14:58 S孤单一吻S 阅读(309) 评论(0) 推荐(0)

摘要:应很多朋友要求,在这里给出一个基于Tcp协议的简单的AS示例源代码(回顾AS在4层架构中的位置),即使是一个简单的AS,也不是想象的那么简单,因为AS要处理众多的事情。如果你没有仔细读过ESFramework介绍系列的文章,直接来看AS的源码,估计比较困难。AS的源码量不多,但这并不表示其简单,因为两点:一是绝大多数组件都采用了ESFramework给出的参考实现,二是复杂的组件依赖/装配关系都在... 阅读全文
posted @ 2006-05-18 14:55 S孤单一吻S 阅读(304) 评论(0) 推荐(0)

摘要:ESFramework对Tcp和Udp协议都提供了完整的支持,在ESFramework介绍之(21)-- Tcp组件接口ITcp介绍 和 ESFramework介绍之(23)―― AgileTcp 两篇文章中介绍了Tcp组件,相对于Tcp来说,Udp要简单许多,所以我在这里打算用一篇文章来介绍它。需要首先提出的是,ESFramework.Network命名空间下的所有直接类(即,不包括ESFra... 阅读全文
posted @ 2006-05-18 14:51 S孤单一吻S 阅读(243) 评论(0) 推荐(0)

摘要:如今绝大多数IM软件都是基于桌面的,通常使用Tcp/Udp,并且都实现了防火墙穿透(代理)和基于Udp的NAT穿透的P2P技术。创建一个基于Web的IM是否可行(我们这里不考虑在浏览器中嵌入类似ActiveX控件的伪B/S,因为它实际上还是一个C/S,我们要讨论的是纯的Web方式)?答案无疑是肯定的,但是有些限制,这是因为:(1)基于Web的IM不可避免的采用Http作为主要的通信协议,而Htp... 阅读全文
posted @ 2006-05-18 14:48 S孤单一吻S 阅读(608) 评论(0) 推荐(0)

摘要:(本文适用于ESFramework V0.2+) QQ上,你给好友发消息,如果对方不在线,则服务器会把这个消息持久化存起来,等好友下次上线时,再转发给他。像这样的消息在ESFramework中称为OverdueMessage。显然,MSN没有支持OverdueMessage。 当然了,ESFramework中的OverdueMessage不仅仅是文字消息,而是可以为任何类型的消息,比如,音... 阅读全文
posted @ 2006-05-18 14:45 S孤单一吻S 阅读(165) 评论(0) 推荐(0)

1 2 3 4 下一页