企业应用框架基础模块

企业应用系统开发的越多,就会发现里面存在很多通用任务。如果把这些通用任务实现为基础模块,整合到一个框架里面,新的开发项目就可以在这个基础上进行构建,能够节省成本,加速项目进行。

我从后端到前端总结了一些基础模块,主要是基于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 完成该功能。

bootstrapperhttp://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

Enterprise Library:  http://entlib.codeplex.com/

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,数据库等目的地的功能。图片缩放等
16) 功能权限
基于功能的授权模型。AOP实现权限验证拦截。
17) 数据权限
基于数据的授权模型。
18) Web层基础
提供Web层的基类,序列化,错误处理,工具函数等。
19) 可扩展属性
基于数据对象,定义扩展属性的元数据以及展示方式,可以满足不同客户对于基础数据的扩展要求
20)个性化配置
个性化配置应该是可定义,而且易于访问的。不因为增加新的配置,而需要变更代码
21)流水号管理
可以定义各种流水号的生成规则,集中控管
22)ID生成规则
集中控制系统级别的id生成方式,可以生成表范围,数据库范围,跨服务器范围的唯一id. 比如guid, 基于36进制的字符串等。
23)动态调用服务
自动生成WS,WCF等的代理类,进行调用


2. 基础应用
1) 人员、组织、账号、角色管理
系统基础数据的管理界面
2) 登陆
有关登陆的一系列功能,登陆验证,修改密码,密码找回等
3) SSO
与其他应用系统集成不可缺少的模块。可基于认证身份的加密传递,Cookie共享等机制实现。
5) 个性化
用户的个性化配置,如系统皮肤,默认语言,默认首页等。需要提供方便的定义和扩展访问功能
6)  菜单
定制各种场景下的菜单体系,功能代码,以及渲染接口。
7) 授权
系统功能授权
8) 上传下载
提供各种浏览器支援的上传下载方式

二. 前端
前端相对于后端比较纯粹,主要涉及三个方面: HTML/CSS/JavaScript。相关知识地图可以参考我前面发的博文。 Web前端开发技术
下面列出一些可选的框架组合:
1. CSS 框架

--UI资源网站
1) 各种风格,非常漂亮的UI组件:
2) 登陆页面设计

2. JavaScript框架
KnockOutJS:  http://knockoutjs.com/
AngularJS:  http://angularjs.org/
Avalon:  http://rubylouvre.github.io/mvvm/ (自带AMD加载器,MVVM, 动画,拖拽等等)

3. UI 组件
Kendo UI:  http://www.telerik.com/kendo-ui (商业控件,比较简约,有自己的框架体系,立意比较高)
jQuery UI:  http://jqueryui.com/ (缺少大型控件,比如Grid, Tree)
Mini UI:  http://www.miniui.com/ (本土的,比较土)
Sencha Ext Js:  http://www.sencha.com/products/extjs/ (听说比较笨重)
jqwidgets:  http://www.jqwidgets.com/ 

--Dom操作
1) jQuery  http://jquery.com/
2) Zepto.js  http://zeptojs.com/

--图表控件
1) HighCharts:  http://www.highcharts.com/ (非常专业)
2) Baidu ECharts:  http://echarts.baidu.com/
3) D3.js  http://d3js.org/ (画图基本库,非常强大)

--Grid 控件

--模板渲染
1) Rivets.js  http://www.rivetsjs.com/

--JS编辑器
2) DCloud HBuilder: http://www.dcloud.net.cn/ 
3) Sublime Text:  http://www.sublimetext.com/2

结合emmet:  http://emmet.io/download/

-- Build自动化
 Grunt:基于任务的命令行构建工具:  http://gruntjs.com
yeoman: yeoman主要包含了三个工具:yo、grunt、bower。 http://yeoman.io/
  • yo:脚手架工具,主要作用是创建项目骨架(跟grunt-init有点像)。
  • grunt:构建工具,主要用来运行各种任务,比如文件压缩、合并、打包等。
  • bower:主要用来做前端资源依赖管理,跟npm很像,区别在于:npm管理的是node模块的依赖,bower管理的是前端资源的依赖,如css、javascript文件等


4. js模块加载器

5. 包管理器
1) NPM是管理Node.js依赖的包管理器   https://www.npmjs.org/
2) Bower 是web前端开发的包管理器  http://bower.jsbin.cn/
3) Nuget 管理项目库  http://www.nuget.org/


参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值