C# .NET 3.5/4.0 这两个版本的.NET已经至关方便(Linq, Lambda,Parallel),语法简洁,配合WCF和WF两项技术,能够知足快速开发,维护方便的目标。数据库
Win Form 因ERP项目涉及大量的表单(Entry),查询(Enquiry),报表(Report),我觉得WinForm仍然是首选技术。自定义控件,数据绑定,自定义窗体,这三项技术组合起来可产生无穷的威力。编程
SQL Server 2005 取兼容性最好的一个版本。2008/2008 R2/2012均不向后兼容,旧版本数据一旦附加到新版本中后,便不能够在旧版本的SQL Server中附加,备份集也不能够向后兼容。性能优化
为保持ERP产品的可配置性,可维护性,首先定义如下基础模块,构建基础的ERP功能集合。这些基础模块是我从工做中接触到的几个ERP产品中总结出来,具有表明性。框架
菜单设计器 Menu Designer ERP项目的菜单,导航应该具有可编辑,可调整的特性。菜单和导航数据通常保存于数据库中,或是Xml文件中。工具
查询设计器 Query Designer ERP项目涉及大量的数据表单,数据查询的需求很是频繁。SQL Server Management Studio是开发人员的查询设计器,在此基础上作一个封装,限定可查询的数据库和资料表,考虑查询权限,拒绝任意的数据修改和删除语句片断以保护数据,最后将数据以列表或网格形式呈现。布局
报表设计器 Report Designer 同查询的需求同样,若是须要将数据打印成完整的格式,ERP项目应该具有增长自定义报表的特性。兼容当前流行的Crystal Report和Reporting Services。性能
工做流设计器 Workflow Designer ERP项目有内建的约定的流程,同时也应该知足批核,通知等特性。单元测试
窗体设计器 Form Designer ERP项目应该具有调整和自定义布局的特性。不一样的权限和用户,所看到界面应该有所差别。借助于此窗体设计器,调整窗体布局,知足个性化布局的须要。开发工具
1 Entity Framework , LLBL Gen,NHibernate测试
ORM的基础原理是在数据库与面向对象编程中的对象之间作一层封装,以简化数据读写。在性能的反应上,ADO.NET是最好的,它直接工做在数据库驱动层上。ORM则在ADO.NET上作一层封装。关于可维护性,代码生成器可弥补ORM对数据库修改的感知。当发生数据库变动时,直接以生码生成工具从新生成实体代码便可。关于可编程性,强类型的对象,可知足数据绑定时的数据感知需求,节省开发和维护时的成本。
2 ORM高级查询,SQL语句追踪,性能优化
应用ORM作数据访问层的难点在于数据查询,抛弃现有的SQL语句知识,应用OOP语言来作查询,十多行代码是为达到一个子查询的目的,一句SQL语句可替代。涉及数据问题时,还须要借助于SQL Server Profiler工具来诊断问题。
1 自定义控件,窗体基础类型定义的原理与实现,数据绑定技术
以WinForm技术而言,继承是为代码重用的重要收益。定义如下几个基础窗体
Entry Form:数据输入窗体,好比销售单,采购单,工做单。
Enquiry Form:数据查询窗体,好比销售单日记账查询,采购送货查询。
Report Form:报表窗体,读取报表的参数信息,从数据库中抓取数据并呈现报表。
自定义控件是为知足数据绑定的须要,还增长其它特性,好比限制输入长度,只读,可写,大小写,半角全角自动转化等控制。
2 业务逻辑与业务验证
应用ORM编程带来的一大收益是界面与逻辑分离。OOP对象既可表明数据库中的表在内存中的实体,也可包含丰富的自定义逻辑,再加上验证框架,这二项内容的分离和耦合,极大的加强代码的可维护性。
ASP.NET MVC已经强制模型M和界面V的分离,用控制器将它们联系在一块儿,在数据呈现和数据逻辑方面,相对于Web Form不管是开发,仍是维护都轻松不少。
1 框架数据库与业务逻辑数据库,定义代码模块(Module),定义功能(Function)
由于多增长一个数据库框架,与系统通用功能相关的信息都放置于框架数据库中,好比账套配置,好比查询定义,好比菜单和导航信息。框架数据库承担系统方面的功能载体,与具体的业务功能分离。
2 窗体界面设计 查询(Enquiry)和查找(Lookup)设计,业务逻辑,验证
在第二项内容(五大核心模块)的基础上,ERP项目继续以插件的方式,定义模块,定义功能。一个模块能够简单的理解为一个Visual Studio 项目文件,相关的功能都汇集在其中。销售Sales模块中有报价单,销售单,销售送货,销售退货等功能。
模块中的功能,以第四项内容中说起的方法分三类Entry,Enquiry,Report三大基础业务功能。
此项内容为ERP开发中的平常任务。以ERP的任务分类,Enhancement,Bug Fix,Data Fix三大分类,绝大多数的任务均在此目录中。因Bug带来的数据修复,会给ORM技术团队带来压力。系统产生的数据问题,再也不是能够简单的从系统中拷贝一些SQL语句,ORM作为基础的数据访问没有SQL。以个人体会,ORM并非要你忘记SQL的存在,在应用ORM保存数据以后,我常会以SELECT * FROM table之类的语句去审查数据表中的记录,以确保数据值和数据验证,数据关联为正确。
SQL Toolbet SQL Server领域中的Intellisense,比如Visual Studio中的智能提示同样,必备工具。
JetBrain Resharper 当实体与实体间的关系,接口与实现的关系日益复杂以后,Find Usage和Go to Implementation两项功能,可帮助诊断问题,必备工具。
Resharper的Test功能也至关优秀,直接对一个测试方法启动调试,我对单元测试的热爱,源自于此功能。作好一个基础功能,会一样作一个测试方法,以此功能调试跟踪,观测代码的执行。
Code Smith 辅助代码生成工具,必备工具。具有大量的例子,入手容易,案例多,应用普遍。