企业应用开发模式 ERP项目中应用到的技术和工具 企业应用开发模式 ERP项目中应用到的技术和工具   Enterprise Solution 应用程序开发框架培训 EFProf Entity Framework Profile 工具    

一、基础技术选型

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 辅助代码生成工具,必备工具。具备大量的例子,入手容易,案例多,应用广泛。

 

 

Enterprise Solution 应用程序开发框架培训

 

一、系统架构 C# .NET 4.0 + Win Form + SQL Server 2005

二、五大核心模块 (菜单设计器Menu Designer,查询设计器Query Designer,报表设计器Report Designer,工作流设计器Workflow Designer,窗体设计器Form Designer)

三、实体映射框架层模式

1 ORM原理,ADO.NET与ORM的对应关系,Entity,Collection, Validator 之间的关系,应用LLBL Gen Pro 3.1生成代码,使用VS2010应用ORM方式进行操作数据库。应用Code Smith 6.5模板自动化生成数据访问代码。

2 ORM高级查询,SQL语句追踪,性能优化

四、界面层模式

1 自定义控件,窗体基础类型定义的原理与实现,数据绑定技术

数据窗体设计 输入(Entry),查询(Enquiry),查找(Lookup),报表(Report)

3 业务逻辑层处理 业务逻辑与业务验证

五、功能开发模式

1 框架数据库与业务逻辑数据库,定义代码模块(Module),定义功能(Function)

2 窗体界面设计 查询(Enquiry)和查找(Lookup)设计,业务逻辑,验证

六、增值服务 
1 产品持续升级,核心代码共享

2 30+开发助手程序,辅助应用高效开发

3 详尽的开发文档与手册,开发案例,在线技术支持 电子邮箱支持

QQ: 3617 64203

 

EFProf Entity Framework Profile 工具

 

SQL Server Profiler用来跟踪应用程序发送到SQL Server中的SQL语句,用于检测性能,查找问题。Entity Framework 也有它的跟踪工具EFProf,用于跟踪Entity Framework发送到SQL Server中的SQL语句。

首先在代码中添加对程序集HibernatingRhinos.Profiler.Appender的引用,并添加如下方法

HibernatingRhinos.Profiler.Appender.EntityFramework.EntityFrameworkProfiler.Initialize();

再打开EFProf程序,即可看到基于Entity Framework的程序向SQL Server发送的SQL语句

企业应用开发模式 ERP项目中应用到的技术和工具
企业应用开发模式 ERP项目中应用到的技术和工具
 
Enterprise Solution 应用程序开发框架培训
EFProf Entity Framework Profile 工具
 
 

 

执行计划 Query Plan

EFProf可以以图形化的方式查看SQL语句的执行计划,而不必去SQL Server中查看执行计划

企业应用开发模式 ERP项目中应用到的技术和工具
企业应用开发模式 ERP项目中应用到的技术和工具
 
Enterprise Solution 应用程序开发框架培训
EFProf Entity Framework Profile 工具
 
 

 

查询执行 Query Execute

如果你想知道查询的结果,可以直接在EFProf中打开查询语句,执行查询。这一个特性能查找数据特别有用。

企业应用开发模式 ERP项目中应用到的技术和工具
企业应用开发模式 ERP项目中应用到的技术和工具
 
Enterprise Solution 应用程序开发框架培训
EFProf Entity Framework Profile 工具
 
  

获取Entity Framework生成的T-SQL语句

实体框架内建了机制来跟踪它生成的SQL语句,请参考下面的代码

using(var db = new SqlEntities()) 
{ 
        var Q = db.Sql.Select(cc => cc.id); 
        return ((ObjectQuery)Q).ToTraceString(); 
} 
这样可以输入实体框架生成的SQL语句。

如何截获Entity Framework的调用

Entity Framework的社区项目EFTraceingProvider,可提供对Entity Framework调用的跟踪。

 
 
 

 

 

 

一、基础技术选型

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 辅助代码生成工具,必备工具。具备大量的例子,入手容易,案例多,应用广泛。

一、系统架构 C# .NET 4.0 + Win Form + SQL Server 2005

二、五大核心模块 (菜单设计器Menu Designer,查询设计器Query Designer,报表设计器Report Designer,工作流设计器Workflow Designer,窗体设计器Form Designer)

三、实体映射框架层模式

1 ORM原理,ADO.NET与ORM的对应关系,Entity,Collection, Validator 之间的关系,应用LLBL Gen Pro 3.1生成代码,使用VS2010应用ORM方式进行操作数据库。应用Code Smith 6.5模板自动化生成数据访问代码。

2 ORM高级查询,SQL语句追踪,性能优化

四、界面层模式

1 自定义控件,窗体基础类型定义的原理与实现,数据绑定技术

数据窗体设计 输入(Entry),查询(Enquiry),查找(Lookup),报表(Report)

3 业务逻辑层处理 业务逻辑与业务验证

五、功能开发模式

1 框架数据库与业务逻辑数据库,定义代码模块(Module),定义功能(Function)

2 窗体界面设计 查询(Enquiry)和查找(Lookup)设计,业务逻辑,验证

六、增值服务 
1 产品持续升级,核心代码共享

2 30+开发助手程序,辅助应用高效开发

3 详尽的开发文档与手册,开发案例,在线技术支持 电子邮箱支持

QQ: 3617 64203

SQL Server Profiler用来跟踪应用程序发送到SQL Server中的SQL语句,用于检测性能,查找问题。Entity Framework 也有它的跟踪工具EFProf,用于跟踪Entity Framework发送到SQL Server中的SQL语句。

首先在代码中添加对程序集HibernatingRhinos.Profiler.Appender的引用,并添加如下方法

HibernatingRhinos.Profiler.Appender.EntityFramework.EntityFrameworkProfiler.Initialize();

再打开EFProf程序,即可看到基于Entity Framework的程序向SQL Server发送的SQL语句

企业应用开发模式 ERP项目中应用到的技术和工具
企业应用开发模式 ERP项目中应用到的技术和工具
 
Enterprise Solution 应用程序开发框架培训
EFProf Entity Framework Profile 工具
 
 

 

执行计划 Query Plan

EFProf可以以图形化的方式查看SQL语句的执行计划,而不必去SQL Server中查看执行计划

企业应用开发模式 ERP项目中应用到的技术和工具
企业应用开发模式 ERP项目中应用到的技术和工具
 
Enterprise Solution 应用程序开发框架培训
EFProf Entity Framework Profile 工具
 
 

 

查询执行 Query Execute

如果你想知道查询的结果,可以直接在EFProf中打开查询语句,执行查询。这一个特性能查找数据特别有用。

企业应用开发模式 ERP项目中应用到的技术和工具
企业应用开发模式 ERP项目中应用到的技术和工具
 
Enterprise Solution 应用程序开发框架培训
EFProf Entity Framework Profile 工具
 
  

获取Entity Framework生成的T-SQL语句

实体框架内建了机制来跟踪它生成的SQL语句,请参考下面的代码

using(var db = new SqlEntities()) 
{ 
        var Q = db.Sql.Select(cc => cc.id); 
        return ((ObjectQuery)Q).ToTraceString(); 
} 
这样可以输入实体框架生成的SQL语句。

如何截获Entity Framework的调用

Entity Framework的社区项目EFTraceingProvider,可提供对Entity Framework调用的跟踪。