三尺龙泉万卷书,皇天生我意何如

酒香也怕巷子深

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

昨天下午去参加了网络媒体大联欢,晚会上还有抽奖。中午就出发了,所以昨天没时间写随笔了。部门就4张票,很荣幸的给了我一张。哈哈。

不过很可惜啊很可惜,彩电笔记本欧洲游,啥都没抽中……残念……

今天开始说说这次开发框架的结构,先把整体架构放出来,然后将会每期或每几期介绍一个项目。某些关系到公司机密就不能放出来了,不过可以大概说说功能。框架是在.net 2.0下写的,所以期待C#3.0特性的朋友们就会失望了(当然你们为了看新特性也不应该来我这里看)。即将放出的代码相信对入门级的朋友们也会有所帮助。

放出架构之前还是再说一句,能用最平凡的材料做出最美味的菜,才是真的好厨子。我认为很对,嗯嗯。

 

谈框架先回顾一下项目现状:有多个相互关联及无关的项目,其中有项目与其他项目有关(jsp php,甚至是一个C/S的server端等)。项目不一定会直接调用数据库,数据库同时也应用多种(mssql mysql oracle)。项目会发布在多台负载上,并且有些负载不能直接访问外网(没有实IP)。日志工具目前是log4net,在将来会考虑增加email通知或数据库,但是基于负载可能被限制外网连接, 所以以后还需要扩展一个单独的email服务(这部分结构我还没定最终方案)。

在以上的环形下产生了如下开发框架:

首先先放出整体示意图。

 

上图是整个框架的外观结构。方框代表每一个实体的工程项目,单独提供功能的项目。云代表.net的业务开发项目,云内架构稍候描述。箭头代表项目之间的引用关系。

       项目解释:

       DBHelper:可以是自行开发或者第三方提供的访问数据库的工具项目。只提供对数据库操作,不负责记录日志、ORM等功能。

       LogAdapter:日志适配器项目。目前记录日志用的是开源的log4net项目,由于难保以后会更改为其他,或者增加日志记录方式(如入库,发送email等)。该项目提供工厂模式产生的单件日志适配器,是整体架构的最底层项目。

       ConfigManager:配置管理项目,提供接口读取并缓存配置,且在项目运行中可以通过方法调用重新载入各配置。目前提供了对Web.Config及特定格式远程或本地Xml配置的读取。该接口可以自行扩展。

       ErrorGaze:错误监视项目,应直接被引用于Web输出项目。该项目可以在捕获代码中try catch块外的异常,经过Web.Config配置后可以强制跳转到出错页面呈现给用户而不会出现IIS报错页并记录日志。目前生产环境中一旦出现难以重现的try catch块外的异常,很难进行追踪,该项目可以一定程度上解决这一问题。

       RHTools:工具项目,提供开发中经常用到的功能。该项目需要不断完善,但不应随意添加内容。

 

DotNet业务项目说明

 

上图为图1中云内结构,除基础实体层项目、接口项目外其它各项目都随业务独立创建。接口项目和基础实体项目应可以跨业务项目被继承、调用。其它三个项目应独立于每个业务项目。

项目解释:

ZSBaseEntities:通常情况下应为贫血实体类,进行最基础的OOP设计。提供统一的入口供上层项目访问。

ZSSecurity:加密安全项目。负责接口通讯及其他独立于业务的加密和安全算法。

ZSConfig:通用配置管理项目。负责提供统一的配置读取入口,管理配置。

ZSInterface:虚项目。虽提供接口的增加,对每一个提供接口的项目建立单独的项目进行调用,解释。同时可以负责IOM(接口-对象解释)。由于该项目可以被多业务项目调用,所以只应该引用基础实体类。

ZSEntities:虚项目。应随每个业务项目建立独立的实体项目,通常情况下为充血实体类,但随业务而定。应尽量继承自基础实体类。

ZSProcess:虚项目。应随每个业务项目建立独立的业务逻辑项目,应很好的隔离上层项目组与下层项目组的关系,在实现业务的同时对上下项目组进行解耦。

Web:虚项目。应随每个业务项目建立独立的呈现层项目。只应该负责呈现内容,获取页面参数。数据源、业务逻辑应来自对应的Process项目。

 

配置结构

 

 

上图为配置数据的数据读取流程。其中配置数据源可以为Web.Config也可以为Xml文档。尽量将业务项目中可以独立出来的配置放入提供Xml配置的项目作为服务发布,并所有的业务项目都指向此服务。以此解决当修改配置(切换环境等)过于繁琐,产生遗漏、错误等情况。

配置管理类:可以散落于各个项目中,继承自ConfigManager项目中的BaseConfig类即可进行统一控制。其中提供配置读取及统一重新加载配置。

 

 

补充说明:

开发过程中,基层项目由我统一维护,如果有人提出新的代码则有我审核后添加到项目中。保证项目代码健康。

 

以上是整个项目的架构设计,至于项目的解释和代码会在稍后的随笔中慢慢展示出来。

 

PS:22号就放假了,放假就不发随笔了。因为今年要结婚了,春节期间要跑各个亲戚家,还要出去玩儿。还好不用坐火车,庆幸!同事们好多都没买到票,黄牛手上都没票,真可怕。

PS2:随笔终于慢慢步入正轨,给能看懂的人看,给不能看懂的人思考。

posted on 2009-01-20 12:21  RacheHunter  阅读(360)  评论(0编辑  收藏  举报