企业应用系统开发的越多,就会发现里面存在很多通用任务。如果把这些通用任务实现为基础模块,整合到一个框架里面,新的开发项目就可以在这个基础上进行构建,能够节省成本,加速项目进行。
我从后端到前端总结了一些基础模块,主要是基于Asp.Net 的Web解决方案。供大家在实现此类框架时做参考。
一. 后端
1. 基础组件
1) 持久层
SqlHelper , Enterprise Library, O/R Mapping 框架。
Enterprise Library: 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) 外部数据源
定义一致的接口,提供系统通过ADO.Net, ODBC, WS, WCF, WebAPI等方式,访问外部资源。
15) 文件存储实现根据配置,将上传文件存储到本地,共享目录,NAS, SAN,数据库等目的地的功能。图片缩放等
- yo:脚手架工具,主要作用是创建项目骨架(跟grunt-init有点像)。
- grunt:构建工具,主要用来运行各种任务,比如文件压缩、合并、打包等。
- bower:主要用来做前端资源依赖管理,跟npm很像,区别在于:npm管理的是node模块的依赖,bower管理的是前端资源的依赖,如css、javascript文件等