企业应用系统开发的越多,就会发现里面存在很多通用任务。如果把这些通用任务作为基础模块,整合到一个框架里面,以后开发项目就可以在这个基础上进行,可以加速项目进行。
我从后端到前端总结了一些基础模块,主要是基于Asp.Net 的Web解决方案。供大家在实现此类框架时做参考。
一. 后端
1. 基础组件
1) 持久层
SqlHelper , Enterprise Library, O/R Mapping 框架。
Enterprise Library: http://http://entlib.codeplex.com/
EF: http://entityframework.codeplex.com/
NHibernate: http://nhforge.org/
Castle ActiveRecord: http://www.castleproject.org/projects/activerecord/
MyBatis: https://code.google.com/p/mybatis/
2) IoC框架
松耦合,可插拔绝对是一个基础框架所应有的特性,引入一个IoC框架是值得考虑的。
Autofac:http://code.google.com/p/autofac/
Castle Windsor:http://sourceforge.net/projects/castleproject/files/Windsor/Castle.Windsor.3.2.0.zip/download
Unity:http://entlib.codeplex.com/
Spring.NET:http://www.springframework.net/
StructureMap:http://sourceforge.net/projects/structuremap/files/
Ninject:http://ninject.org/download
3) 启动任务
框架的启动任务应该是可配置可扩展的。应结合IoC框架和bootstrapper 完成该功能。
bootstrapper: http://bootstrapper.codeplex.com/
4) 全局配置
我曾经看到过很多应用把系统配置弄的一团糟糕。有的放在.config文件,有的放到xml,或者则在DB里面。
分散的配置方式,给实施上线和后期维护都带来了巨大困难。配置应该是集中化管理,并且可扩展,可接入。实现缓存已经动态刷新。
5) 多语言
多语言支持是Global应用程序的不可或缺的一个功能。根据应用场景,可以实现静态多语言和数据多语言。支持的语言随着业务发展,能够动态扩展。
对于静态多语言,还需实现用户的定制。
6) 通用数据
对于一些Key-Value的通用列表数据,需要实现集中维护,一致的服务接口。
7) 日志
很多优秀成熟的日志组件可供选择。
log4net: http://logging.apache.org/log4net/index.html
nlog: http://www.nlog-project.org/
Common.Logging: http://netcommon.sourceforge.net
8) 系统事件
提供一致的系统事件发布与订阅功能。参考:http://martinfowler.com/eaaDev/EventAggregator.html
9) 定时任务
提供一个Web管理的定时任务管理和监控的功能。可以使用Quartz.net: http://www.quartz-scheduler.net/
10) 缓存
合理使用缓存,是提高系统响应速度的重要手段。缓存需要支持本地缓存和分布式缓存。
缓存组件可引入Enterprise Library中的Cache Block, 通过它的框架,接入MemCache或者MS的AppFabric(Code:Velocity)
EnyimMemcached: https://github.com/enyim/EnyimMemcached
AppFabric: http://msdn.microsoft.com/en-US/windowsserver/ee695849.aspx
11) 异常管理
定义异常的继承体系和通知管理机制。定义系统级别的受控异常。
12) 系统消息
提供邮件,短信,站内信的发送接口。支持默认实现可被替换。
13) 加密解密
提供加解密的工具类。
14) 外部数据源
定义一致的接口,提供系统通过各种方式,如ODBC, WS, WCF, WebAPI等方式,访问到外部资源。
15) 文件存储实现根据配置,将上传文件存储到本地,共享目录,NAS, SAN,数据库等目的地的功能。