摘要: 最初Peter Deutsch从J2EE的企业开发中总结了7大谬误,后来,James Gosling在其基础上增加了一条,再后来,Ted Neward又在其上增加了两条,总共为“十大谬误”。这段时间正在看两本书:《Effective Enterprise Java》和《J2EE AntiPatterns》,恰好两本书都提到了“分布式计算的*大谬误”,... 阅读全文
posted @ 2005-12-30 16:05 zhuweisky 阅读(1277) 评论(0) 推荐(1)
摘要: 设想这样一种场景:我们的服务系统提供一系列的功能服务,而以后会有更多新的功能服务增加进来,也可能出现功能服务需要被更改或移除的情况。对于这样的服务系统,一个常见的基本的要求就是,在添加/移除/更新功能服务的时候不能停止的服务系统的运行。通常,将每一项服务封装成一个插件Dll,可以非常容易地实现“插件 阅读全文
posted @ 2005-12-30 15:26 zhuweisky 阅读(6245) 评论(13) 推荐(4)
摘要: 手头上的一个项目使用了Spring.net的AOP了处理程序的异常,一不小心就掉进了陷阱,这里记录下来,希望对后来者有所帮助。Spring.net的AOP实现是通过运行时创建动态的AOP代理来完成的。简单图示如下: 图中的“POJO”以词来自Java,表示一个普通的.net对象,所有对POJO的调... 阅读全文
posted @ 2005-12-27 15:37 zhuweisky 阅读(1240) 评论(0) 推荐(0)
摘要: 一个组件与另一个组件之间的关系可以通过三种方式建立起来:事件、依赖倒置、Bridge。现在我们只考虑单向依赖的关系,即信息提供者和信息消费者。事件是一种松耦合的信息发布方式,事件发布者(信息提供者)不需要关心事件预定者(即信息消费者)的任何信息,但是事件预定者需要依赖事件发布者;依赖倒置则反转了这种关系,在依赖倒置的方式中,信息提供者依赖信息消费者(你也许对这句话觉得奇怪,后面的例子会说明... 阅读全文
posted @ 2005-12-20 21:32 zhuweisky 阅读(4352) 评论(14) 推荐(1)
摘要: 在.Net Remoting的应用中,经常碰到需要预定Remoting Object的事件的情况,要能使远程事件发布/预定如预期中的进行,需要注意如下问题:1. Remoting 配置 在Remoting配置文件中,需要将typeFilterLevel设置为Full,否则,将出现RemotingH... 阅读全文
posted @ 2005-12-16 15:33 zhuweisky 阅读(2658) 评论(2) 推荐(0)
摘要: 在DataGrid的web版控件中提供了自动分页的功能,但是我从来没用过它,因为它实现的分页只是一种假相。我们为什么需要分页?那是因为符合条件的记录可能很多,如果一次读取所有的记录,不仅延长获取数据的时间,而且也极度浪费内存。而分页的存在的主要目的正是为了解决这两个问题(当然,也不排除为了UI美观... 阅读全文
posted @ 2005-12-14 09:48 zhuweisky 阅读(2644) 评论(4) 推荐(0)
摘要: 通常我们在程序中需要调用WebService时,都是通过“添加Web引用”,让VS.NET环境来为我们生成服务代理,然后调用对应的Web服务。这样是使工作简单了,但是却和提供Web服务的URL、方法名、参数绑定在一起了,这是VS.NET自动为我们生成Web服务代理的限制。如果哪一天发布Web服务的... 阅读全文
posted @ 2005-12-07 13:25 zhuweisky 阅读(11643) 评论(14) 推荐(1)
摘要: 在习惯了使用基于接口的编程之后,经常会遇到这样的问题,比如,B组件需要使用实现了IA接口的A组件,但是如果在没有A组件的情况下B组件也可以正常工作,像这样: publicinterfaceIA{voidDoWork1();voidDoWork2();}publicclassB:IB{private... 阅读全文
posted @ 2005-12-07 12:49 zhuweisky 阅读(1672) 评论(1) 推荐(1)
摘要: 昨天买了一本《Effective C#》,看了几个Item,虽然没有当初读《Effective C++》时的那般震撼,但是也收获不少。把其中的要点记录于下,有些条款加上了自己的理解,权当作读书笔记吧 :-)Item 1: Always Use Properties Instead of Acces... 阅读全文
posted @ 2005-11-25 16:54 zhuweisky 阅读(1283) 评论(0) 推荐(1)
摘要: 昨天看到某个公司招聘出的一道题目,题目是这样的:判断任意三个点是否构成三角形,以及某个点是否位于指定的三角形内。 关于这个问题,我给出了自己的答案,首先解决第一个问题: //////IsTriangle判断集合中的头三个点PointF是否可以构成一个三角形///publicstaticboolIs... 阅读全文
posted @ 2005-10-16 11:54 zhuweisky 阅读(3723) 评论(21) 推荐(2)
摘要: 以前空闲的时候用C#实现的路径规划算法,今日贴它出来,看大家有没有更好的实现方案。关于路径规划(最短路径)算法的背景知识,大家可以参考《C++算法--图算法》一书。 该图算法描述的是这样的场景:图由节点和带有方向的边构成,每条边都有相应的权值,路径规划(最短路径)算法就是要找出从节点A到节点B的累积 阅读全文
posted @ 2005-09-29 14:38 zhuweisky 阅读(64322) 评论(39) 推荐(16)
摘要: 出手自Rod Johnson的《J2EE Development without EJB》是一本难得的好书,无论是对于Java程序员,还是.NET程序员。特别是对于.NET程序员,.NET平台的企业级应用还不是很多,.NET平台上的实用性的架构也远远不及J2EE这么成熟,所以我们.NET开发人员绝对有必要Open自己,到Java的世界去看看。 .NET世界里很多处于探索和试验阶段的技术实际上在J2EE中都有了很成熟的实现和应用。值得庆幸的是,在企业级开发的世界里,.NET正在迎头赶上。NHibernate出现了、Spring.NET出现了、AOP.NET、还有什么NUnit、NAnt、NDo. 阅读全文
posted @ 2005-09-29 11:15 zhuweisky 阅读(3770) 评论(15) 推荐(1)
摘要: 前文介绍了异常关闭器的AOP实现,而权限管理也是一个AOP可以大展拳脚的地方,下面就来看看如何使用EsbAOP实现权限管理。 首先要解决的问题是如何判断用户是否拥有调用某个操作的权限,这个判断是由各个应用程序自己实现了,为了统一对权限的判断,所以我们指定了接口IPermissionVerifier... 阅读全文
posted @ 2005-09-28 12:06 zhuweisky 阅读(3026) 评论(1) 推荐(2)
摘要: 以我自己的异常处理经验,我通常会在UI事件处理函数或线程启动函数中截获所有的异常,然后对截获的异常作特定的处理--很多情况下,是显示一个错误信息给用户,或记录异常日志!在这“很多情况下”,我都需要做相同的工作,首先是用try...catch把UI事件处理函数或线程启动函数中的所有代码围起来,然后,... 阅读全文
posted @ 2005-09-28 08:42 zhuweisky 阅读(939) 评论(1) 推荐(0)
摘要: EsbAOP是EnterpriseServerBase类库中的轻量级AOP框架,它实现了AOP的主要思想--对方法调用进行截获,并加入自定义的预处理、后处理。 EsbAOP与其它很多开源的AOP实现有些不同,其不同之处主要在于EsbAOP并没有严格的实现AOP理论的各种设施,但是EsbAOP非常实... 阅读全文
posted @ 2005-09-28 08:41 zhuweisky 阅读(1318) 评论(1) 推荐(0)
摘要: 事件通知服务用于解决多个应用程序之间的事件发布与预定的问题。在.NET平台上,跨应用程序的事件发布/预定通常以Remoting作为底层的通信基础,在此基础之上,事件通知服务使用中介者模式来简化跨应用程序的事件通知问题。 本文采用的解决方案中,有两个重要组件:事件服务器EventServer和事件客户端EventClient。EventServer作为中介者,并作为一个独立的系统,通常可以将其作为w... 阅读全文
posted @ 2005-09-26 15:16 zhuweisky 阅读(4813) 评论(7) 推荐(3)
摘要: 在开发中,经常会遇到这种情况,在A.dll中需要反射B.dll中的类型,如果稍不注意,就会产生运行时错误。关于跨程序集的反射,记住两点就可以:(1)如果使用typeof,编译能通过,则跨程序集的反射一定可以正常运行。可以说,typeof是支持强类型的。比如TypesupType=typeof(En... 阅读全文
posted @ 2005-09-23 12:52 zhuweisky 阅读(3258) 评论(3) 推荐(1)
摘要: 当UI动作引发一个耗时的计算时,我们经常需要将这个耗时的过程放到后台线程中去完成,然后获取该过程的结果。使用.NET提供的默认设施,无论是使用Thread还是使用异步调用,细节都比较繁琐。在前几天的blog上也看到了有些兄台的解决方案,但是觉得还不够好用,于是自己封了一个AsynCaller。 A... 阅读全文
posted @ 2005-09-23 09:44 zhuweisky 阅读(1927) 评论(1) 推荐(0)
摘要: 类厂服务的主要功能是简化创建具体工厂任务,使工厂访问代码和工厂创建代码解藕。类厂服务是以抽象工厂模式为基础,并且在其上进行再综合。 在正式进入正题之前,为了方便后面的叙述,先要澄清一些概念,把上下文(Context)搭建起来,然后,我们再在这个上下文中进行讨论。 首先是两个基本定义:族和系列。(这两个概念是我自创的,不知道常用的术语是什么,知道的朋友请留言告诉我:))(1)族 ... 阅读全文
posted @ 2005-09-13 17:57 zhuweisky 阅读(3449) 评论(2) 推荐(1)
摘要: 所谓企业开发基础设施,指的是为那些几乎所有的企业开发都会遇到的共同的基础性的问题提供服务的设施,比如事务、日志、权限等等。其中很多设施都会以AOP的方式实现,有些则可能以类库的方式提供。我也一直在积累这方面的AOP组件和类库。 曾经做过一些关于日志、权限管理的AOP实现,这几天正在研究“类厂服务”,于是就有了写这个“企业开发基础设施”系列文章的想法,把自己的一些思想拿出来和大家一起讨... 阅读全文
posted @ 2005-09-13 17:06 zhuweisky 阅读(2123) 评论(0) 推荐(1)