avalon

宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒

导航

随笔分类 -  设计

摘要:动态代理 DynamicProxy,这里说的动态代理是直接使用Castle.net 中提供的,并非自己实现的,在项目早期自己尝试过创建一个自己的动态代理类,虽然能够实现,但是功能上还是太弱了一些,如果追加功能就变得和Castle.net 的一样了,所以就直接采用人家的了。。。=============咯咯咯=============动态代理的工作模式:一般我们获取一个类型的实例都是通过 new 关键字,例如 var c = new Class1(); 通过动态代理的话,我们获取一个实例是通过代理方法获取的,generator.CreateClassProxy(type, interceptor 阅读全文

posted @ 2012-07-03 16:15 expt 阅读(353) 评论(0) 推荐(0)

摘要:这篇文章主要介绍整个框架中都在使用的接口,虽然设计目的是非侵入式的,但是多少还是有些接口要继承的。先说PluginInfo,这个类基本上只是用来记录插件信息的,需要说明的也就是ConfigFilePath,这个属性对应着该插件对应的配置文件,配置文件是简单的键值对,在启动时会将该配置读出,并复制给插件的Config属性。IPlugin接口,所有插件都要继承该接口,在初始化加载时,系统会扫描该类型,并初始化它,然后调用Initialize方法,其他方法看名字应该也差不多可以猜出含义来了。关于其中的Message的方法将会在后面的Message中说明。IApp接口是Appex的接口,该接口主要是S 阅读全文

posted @ 2012-07-03 16:09 expt 阅读(287) 评论(0) 推荐(0)

摘要:上一篇文章大体的说了一下设计的框架的整体思路,这篇文章将给出整体的设计思路与模块,个人才疏学浅,设计上肯定会有各种问题,还请大家多多指正。==============分割线=================在这个框架设计中,分为 核心模块,核心扩展模块和业务模块,业务模块可以调用扩展模块也可以不调用,扩展模块只是为了方便业务模块使用。核心模块:1) AppEx: 主框架的启动逻辑,实际上也是一个容器,负责存储服务模块的实例。 主要方法:Start(),RegService(object serivice, Type serviceType, Boolean isSignleModel),Ge. 阅读全文

posted @ 2012-07-03 16:04 expt 阅读(257) 评论(0) 推荐(0)

摘要:近期公司要求设计一个平台,要求所有的程序可以在这个框架内运行,也可以脱离这个框架运行,同时还要有较好的扩展性;第一次看到这个要求感觉这不就是Castle.net的功能嘛。。。但是经过讨论,公司还是决定自己做一个,所以较为简单的模仿了一个Castle框架,并增加了部分自己需要的功能。该框架主要功能及设计思路:1)所有的模块都插件化,包括主界面及启动模块Core模块之类的,好处是便于替换,已经通过网络更新。当然坏处是启动速度可能会慢一些。2)将UI与服务分开,UI尽可能的采用banding,服务则保存在系统的服务容器内。UI与服务之间采用通讯模块进行通讯。 这么做的优点是,我们这个项目是所有的文件 阅读全文

posted @ 2012-07-03 16:02 expt 阅读(265) 评论(0) 推荐(0)