Dynamic Plugins Manager (一) 介绍

117 views 三月 29, 08 by Timothy

Dynamic Plugins Manager是一个基于.NET的动态插件管理组件,也是我在业余时间做的一个小东东,代码在07年底就开始动工,因为一直没充裕时间完成,趁这个周末休息,加班加点的Coding,出来了一个原型,估计里面还有很多的显而易见的以及隐而未现的bug。
设计这个组件的初衷,是为了能方便的应用于今后的项目中。先进的企业级项目中,变化最为突出的,还是业务,业务的变化,直接导致编码中业务逻辑代码的变化。如果将这些业务逻辑混杂在一起,业务的变化,最终会导致代码的混乱,甚至难以维护。这对于一个长期迭代的项目来说,是相当痛苦的事。就像直接拿一个成千上万行的代码给开发人员,估计开发人员不是晕厥,就是吐血。而一个难以维护的业务逻辑代码,对于每一次迭代,都是一次冒险。很可能在某次的迭代中,会对以前的业务逻辑,产生影响或者风险。
对于复杂的业务逻辑,需要进行重构,并且将不断变化的业务逻辑,抽离出来。比较折中的方法,就是将这些变化的逻辑,做成独立的插件形式。这样一来,独立的业务,在物理上进行了分离。开发人员也不用担心修改某处业务逻辑,会影响其他的业务模块。而动态的插件管理形式,对后期维护也带来益处,独立的业务逻辑插件之间,不会相互影响。开发人员还可以在程序运行而又不影响业务的情况下,动态的发布、替换原有的业务逻辑模块。
Dynamic Plugins Manager(以下简称Plugins Manager),也就是按照这样的思路和需求来设计的,其实现的功能,具体有一下几个特点:
1.所有的插件,都以DLL程序集的方式发布,Plugins Manager在启动的时候,搜索加载所有可加载的插件并进行加载
2.Plugins Manager,支持插件的动态卸载功能。借助于AppDomain的特性,所有的组件,在动态加载后,可以动态从内存中卸载。插件的实现,需要继承自MarshalByRefObject。
3.与接口无依赖性,Plugins Manager负责插件的管理、动态加载、动态卸载、调用。但是和具体的插件接口无关,这样一来,开发人员可以定义自己的插件接口,并开发不同的插件实现接口。
4.插件可以动态发布和卸载,Plugins Manager会监视当前目录中,插件的变化,对于以xcopy方式,拷贝入插件目录的插件,可以进行动态加载。对于插件的卸载,可以Plugins Manager提供的接口进行动态卸载,也可以实时更改插件配置文件中的具体开关进行卸载。
5.动态编译功能:Plugins Manager允许直接发布插件代码。通过读取插件配置文件中的引用信息,可以直接从代码生成dll插件,并加载。
6.允许插件实现不同的构造函数重载,并将构造函数参数以及值信息,定义在插件配置文件中。Plugins Manager在加载插件的时候,采用配置文件中的值,调用相应的构造函数,并加载插件。
7.事件通知:Plugins Manager在不同的插件操作完成后,会触发相应的事件机制,通知客户端程序进行相应的处理

插件的结构一览:

PluginsManager:插件管理类,实现插件功能的主要代码逻辑,以及对插件容器的维护
AssemblyLoader:插件加载类,实现从AppDomain加载插件的逻辑
PluginEntity:插件实体类,包含插件的信息(插件实例、插件名称……)
AssemblyFactory:插件生成类,实现从插件代码生成dll的功能

下一篇日志中,将会介绍这个插件的具体配置,及简单分析其实现。

Dynamic Plugins Manager

186 views 三月 29, 08 by Timothy

Dynamic Plugins Manager (一) 介绍

http://www.xiaozhou.net/article.asp?id=187

Dynamic Plugins Manager (二) 配置及实现分析

http://www.xiaozhou.net/article.asp?id=188

Dynamic Plugins Manager (三) Demo

http://www.xiaozhou.net/article.asp?id=189

Dynamic Plugins Manager (四) 插件及Demo源码下载

http://www.xiaozhou.net/article.asp?id=190

Dynamic Plugins Manager (五) Plugins Manager 源码下载

http://www.xiaozhou.net/article.asp?id=191

迟来的照片–洛带游记

121 views 一月 05, 08 by Timothy

来公司后,和同事们的第一次出行,目的地定在古镇洛带。同学们积极性都很高,在一个周六的早上,相约出发,在目的地会合。游古城,啃玉米,爬长城,晚上又一起唱歌,很是尽兴。因为有同事即将离开成都去重庆开展项目。

发几张照片留念

集体照

长城上

著名的伤心凉粉

摆造型

更多的照片,看相册哦 [cool]

Merry Christmas

77 views 十二月 23, 07 by Timothy


http://www.xiaozhou.net/music/silentnight.mp3

又到一年圣诞之时,祝大家圣诞快乐。

介绍一下圣诞节的来历~~~

教会开始并无圣诞节,约在耶稣升天后百余年内才有。据说:第一个圣诞节是在公元138年,由罗马主教圣克里门倡议举行。而教会史载第一个圣诞节则在公元336年。由于圣经未明记耶稣生于何时,故各地圣诞节日期各异。直到公元440年,才由罗马教廷定12月25日为圣诞节。公元1607年,世界各地教会领袖在伯利恒聚会,进一步予以确定,从此世界大多数的基督徒均以12月25日为圣诞节。其实哪一天并不要紧,重要的是应该知道它是为纪念救主耶稣降生。由于圣经记载耶稣生于夜间,故传统称12月24日夜为”圣诞夜”或”平安夜”。

耶稣的降生,有旧约先知预言:”必有童女怀孕生子,给他起名叫以马内利(意思为’上帝与我们同在’)。”(以赛亚书7章14节,圣经下同)

耶稣降生时,有天使报信:”不要惧怕,我给你们大喜的信息,是关乎万民的;因今天在大卫的城里,为你们生了救主,就是主基督。你们要看见一个婴孩,包着布,卧在马槽里,那就是记号了。”(路加福音2章10-12节)

耶稣降生时,有博士朝拜,”他们看见那星就大大地欢喜。进了房子,看见小孩子和他母亲马利亚,就俯伏拜那小孩子,揭开宝盒,手拿黄金、乳香、没药为礼物献给他。”(马太福音2章10-11节)

耶稣,意指”上帝拯救”,因为圣经说:”世人都犯了罪,亏缺了上帝的荣耀。”(罗马书3章23节)罪使人离开生命的源头,宇宙万物的主宰。罪使人失去公义、仁爱,变得自私、骄傲、贪婪、邪恶。罪破坏人与上帝、人与人之间和睦的关系,使人活在无可奈何的痛苦之中。罪使人将来要面对永远的刑罚和痛苦,”人人都有一死,死后且有审判。”(希伯来书9章27节)因为上帝是圣洁、公义的!

但是,上帝又是慈爱的主,他赐给世人自己的独生子–耶稣基督,成为人的样式(就是圣诞),作我们的救赎主,他要将自己的百姓从罪恶里救出来。(马太福音1章21节)他代替了我们的软弱,担当了我们的罪的刑罚。”上帝使我们众人的罪孽都归到他身上”,(以赛亚书53章6节)为我们的罪钉死在十字架上。

今天,只要你悔改自己的罪,相信他,接受他做你个人的救主,你的罪就被赦免了,你与上帝就恢复了那起初和睦的关系,你就得了永远的生命。今天你接受耶稣在你的心里,今天就是你的圣诞节,愿上帝今年赐给你一个特别的圣诞节!

在至高之处荣耀归与神,在地上平安归与祂所喜悦的人。【圣经 路加福音 2:14】

意外

64 views 十二月 23, 07 by Timothy

很久没来博客写点什么了,前几天才发现网站出现问题了,查了查原因,原来是数据库文件格式损坏。更遭的是最近忘了备份,机器上的备份已经是一个月前的了,所以有几篇日志掉了 [cry] 教训啊,看来要勤备份才行。

汉语编程 偶也来恶搞一把

129 views 十一月 03, 07 by Timothy

这几天的热门话题,要属汉语编程了。一直以来,汉语编程,就一直成为争议的话题。其实偶更倾向于英文代码,中文的代码,看起来确实比较别扭。其实VS2005支持双字节,也支持中文。所以偶们也来搞恶一把,Let’s do it!!

[code]
#include "常用头文件"

整形变量 主函数入口(整形变量 参数个数, 字符指针 字符参数数组)
{
整形变量 某某某 = 6 呀
某某某 = 某某某 减去 1呀
如果(某某某 等于 5)
{
输出("某某某本来为6,减去1 果然等于");
输出("%d\n",某某某);
}
函数返回 0 呀
}
[/code]

运行效果:

其实没什么秘密,答案就在头文件里面
代码大家下载了看吧。呵呵。

点击下载此文件

相册开通了 :-)

134 views 十月 22, 07 by Timothy

偶然在网上发现了一个非常酷的flash相册–ImageVue(官方网站),Imagevue是一款基于普遍应用的PHP和Flash的相册程序,而且效果是非常的炫。于是自己搭建了个自己的相册。

相册地址: http://www.xiaozhou.net/photo

China MVP Open Day 2008 @ 海南 三亚

224 views 十月 22, 07 by Timothy

“China MVP Open Day 2008″ 于2007年10月19~10月20日在海南三亚举行。
很高兴参加了这次峰会,峰会的内容相当丰富,除了颁奖典礼,还有精彩的新技术展示讲座,令人难忘的自助餐晚会,沙滩活动……在这次活动中,也见到了一些网上认识的宿卫蒙面的MVP。总的来说,这次活动令人难忘,而且收获颇多。期待下一次的年度峰会。[cool]

晒几张照片,还有些照片,在相册中。呵呵

晚上抵达酒店,登记注册

峰会正式开始 Sisley & Eddie 做主持

颁奖典礼,Karen & me

沙滩上

Laiyiling & me

泳池五壮士 (赖仪灵,朱永光,钟伟,Kim,me)

Page: 28 of 49 1 ... 24 25 26 27 28 29 30 31 32 ... 49