根据近几年的制造业软件开发经验,以我开发人员的理解角度,简要说明ERP管理系统是如何设计与实现的,供参考。 因架构的不同,技术实现上会有所差异。
在企业内部的ERP管理系统开发中,如果使用MS的技术,那么Winform + DevExpress + IIS + WCF +EF 就是懒人的黄金组合了,EF使用数据库优先,一般ERP应用主要关注点在数据,下面介绍的本人最近搭建的一个开框架,主要涉及UI、通讯、数据访问等,本框架不涉及那些让人迷糊OO,DI,AOP,ORM,基本上是个.net程序员都能搭建,而且皮实耐用,采用三层结构也提供了很好的扩展性(话说N年都没扩展过),当然也不防碍你往里面添加上面的DI,AOP,ORM等xxxx,如果你要折腾技术的话。
选型前的准备工作 企业在上ERP项目之前,必须要考虑这些问题: √ 清楚企业的现状、制定发展计划; √ 分析自身的管理特征; √ 明确引入ERP系统的目的及需求分析; √ 结合企业财务状况,做好预算; √ 选型小组成员确定。
一般一套ERP可能涉及物流(采购,销售,仓库...),人事,生产管理,财务...等模块,项目做下来可能有N多的窗体,Service,接口等, 这个时候我们一般对按系统进行划分,建立多个项目,由于采用了三层结构每个功能模块一般有如下几个项目,
我可以看到的ERP系统中应用缓存设计模式的地方,主要分数据缓存和对象缓存,资源缓存:
1) 系统翻译 ERP系统中的文句翻译内容保存在数据库表中,只需要在系统登入时读取一次,缓存到DataTable中。
2) 系统参数 登入系统之后,当前的财年,会计期间,采购单批核流程,物料编码长度,是否实施批号和序号,记帐凭证过帐前是否需要审核,成本核算的来源(物料成本,物料成本+人工成本,物料成本+人工成本+机器成本),这些参数都可以缓存在Entity中,用户修改这些参数值,需要提醒或是强制用户退出重新登入。
3) 系统查询 系统中可预定义一组查询语句,在代码中将查询语句转化为查询对象,将查询对象缓存,节省SQL语句到查询对象的转化时间。
4) 对象实例 以插件方式在搜索程序集中包含的系统功能时,搜索到后,会将程序功能对应的类型缓存,所以第二次执行功能的速度会相当快。
|