零基础30分钟开启你快速开发之旅
1. 前言
接触AgileEAS.NET SOA 中间件平台(以下简称EAS.NET平台)有4个多月时间,经过试用认为可以把它作为一个开发的基础平台,开发团队可以把开发的重点放在需求的把控和项目的交付上,从而节省大量的时间,提高项目的开发、交付效率,降低对项目团队的深层技术要求,更重要的一点是EAS.NET平台的开发团队持续不断地维护和改进平台以及对反馈问题的快速反应,使我对平台的持续发展充满信心。(由于文章较长,不习惯的朋友可以下载PDF版)
由于EAS.NET平台的资料比较多,需要花费较多的时间才能够初步了解平台并能够使用平台开始开发,所以,在此,我把学习EAS.NET平台的过程总结了一下,形成本篇短文,希望能够让初次接触EAS.NET平台的朋友能够用30分钟时间,跟着本文案例实际操作一遍,对EAS.NET平台有一个真实的体验,节省大家的时间,也算对EAS.NET平台的一点回报,希望有更多的人了解它的优势并真正用好它,为EAS.NET平台的使用者带来价值,也为EAS.NET平台的开发者带来效益,最终实现合作共赢的美好结局。
说明:此平台由此平台来自魏琼东开发所有,可免费进行商业化开发,不开源,可有偿提供源码和提供个性化定制服务。详细内容见作者网站http://www.smarteas.net/
注意:本文中涉及平台的功能操作,是通过运行Publish目下的平台客户端EAS.WinClient.Start.exe,以Administrator账户、密码sa登录系统进行操作的,如输入字典、函数管理、报表管理、角色管理、账户管理、模块管理、导航分组等。
2. 基础环境
开发环境:windows server 2008 64位、SQL SERVER 2008R2
开发工具:VS 2012
以上为本人的开发测试环境,如果与以上环境不同,遇到问题时请与平台作者联系。
在正式开始开发之前,首先下载案例代码及相关程序包,下载地址:
直接下载:http://42.121.30.77/downloads/eas/Northwind.rar。
SVN更新:http://42.121.30.77:8080/svn/Northwind,登录用户:eas,密码eas.
在开始工作之前,首先对VS2012添加EAS平台需要的控件。
在工具箱中添加选项卡【EAS】
通过【选择项】添加EAS.Windows、EAS.Data.Controls、EAS.GridReport.Controls三个组件中的控件。如下图所示:
案例测试环境配置:
1、 在E盘新建目录code
2、 在E盘code目录下新建目录Northwind2
3、 把下载的压缩包解压到Northwind2下(如果是用svn更新获取,则把相应目录内容复制到此处),此时项目目录结果如下:
4、 在VS中打开案例
进入目录code,双击Northwind.sln
在每个项目上右键/属性,修改生成页签下的目标平台为Any CPU,输出路径为E:\code\Northwind2\Publish,如下图所示:
右键Northwind.AppStart,选择【设为启动项目】,便于调试。
打开Northwind.AppStart下的app.config配置文件,修改数据库名称为实际的数据库名称,此处为demo_x2。
恢复数据库:解压Data目录下的Northwind.rar文件到当前目录,获得数据库备份文件Northwind.bak。
打开sql server管理器,新建数据库demo_x2。
右键demo_x2,选择任务/还原/数据库
选择源设备,添加E:\code\Northwind2\Data下的Northwind.bak
选中选项标签,选中【覆盖现有数据库】,然后开始还原。
完成数据库还原。
分别在各个项目上右键进行重新生成,顺序为:
Northwind.Entity
Northwind.BLL.Contracts
Northwind.BLL.Host
Northwind.WinUI
Northwind.AppStart
完成后,启动程序进行调试。
用户名:james,密码:sa
进入系统后,左上角有调试模块,点击后展开案例所有功能。
测试采购入库:在名称框中按空格键,弹出商品选择框,选中需要的商品,录入数量后回车,则入库单明细增加一条,如下图所示:
录入完成后,点击入库按钮,完成采购入库单。
测试产品管理:
在此模块进行产品资料的维护,新增、修改、删除等。
进入模块后,首先点击查询按钮,系统会把已有的产品列出。
选中一条可以对其进行修改或删除。
3. 开始开发
建立开发目录:新建E:\code\Northwind目录,然后在Northwind下新建以下目录:
AppServer 系统程序发布目录
Code 程序代码
把案例代码Northwind2目录下的eas.publish.cmd、EAS.Publisher.exe复制到Northwind目录下;
把案例代码Northwind2目录下的Documents、Publish目录整个复制到Northwind目录下。
Documents 文档
Publish 引用的dll、系统工具文件及开发编译后的程序文件
完成后的目录结构如下:
3.1. 生成数据实体代码
进入publish目录,双击EAS.MetaDesigner.exe,打开领域模型设计器,在领域模型设计器中打开documents目录下的Northwind.sdm领域设计文档,如下图所示:
领域模型设计器可以展示各数据实体间的逻辑关系
通过设计器可以设定数据对象的详细内容
可以设定数据对象之间的引用关系,如销售订单上引用的员工、客户等
可以设定数据对象之间的父子关系,如销售订单和销售订单明细
鼠标右键点击解决方案,点击【参数设定】
设定项目名称、项目标题都为Northwind,程序语言选择C#,选定自动属性,命名空间:Northwind,设定输出目录为E:\code\Northwind\code
点击输出/生成代码/EAS或在解决方案上右键,选择生成代码
选中生成解决方案,点击生成。
3.2. 生成数据库脚本
点击【生成脚本】按钮,创建数据库结构创建脚本。
3.3. 生成窗体代码
平台提供了窗体设计工具EAS.FormDesigner,可以辅助快速生成列表类单据和录入类单据。案例中附带有例子,有兴趣的可以研究一下,本文操作采用手工创建窗体,手工编写代码方式,便于读者能够把握使用平台时程序代码和普通程序代码的区别。
3.3.1. 列表窗体
启动FormDesigner,打开documents下的Northwind.sdm,结果如下:
3.3.2. 编辑窗体
平台支持生成winform、webform、wpf、silverlight四种不同的界面代码。
界面代码为系统自动生成:
在此可以进行业务代码的编写,完成后,
代码完成后,通过文件/输出代码,然后在VS中打开解决方案进行代码的调试和修改。
3.4. 创建数据库
3.4.1. 新建数据库
通过sql server管理器创建新数据库Northwind。
3.4.2. 维护数据库
启动平台数据库初始化工具EAS.DbInitializer
系统支持四种数据库系统,这里我们选择sql server,下一步:
指定服务器,如果是本机则输入.即可。选中集成身份验证,点击测试链接,系统提示测试连接成功。然后,通过数据库下拉框选中新创建的Northwind。也可以使用该工具直接建立新的数据库。点击完成,系统开始对数据库进行初始化。
在查询分析其中执行3.2.生成的数据库脚本,执行前注释掉第3、4行。
3.5. 打开解决方案
进入e:\code\Northwind\code,双击Northwind.sln打开解决方案。
3.5.1. 设定项目编译生成路径
右键项目Northwind.Entities,选择属性
设定生成/配置为所有配置
设定输出路径为:e:\code\Northwind\Publish
右键Northwind.Entities,对项目进行重新生成。
3.5.2. 维护数据字典
在进行进一步的编码工作之前,首先进行系统配置,并定义开发需要的输入字典。
运行平台系统配置工具EAS.Configure,设定连接数据库的方式等。
选择【生成客户端配置(数据库直连)】项,同时选中【保存配置信息到AgileEAS.NET SOA平台相关配置文件】。下一步
指定数据库服务器、身份验证信息、数据库名称等。完成后,点击下一步
点击完成结束配置设置。
双击EAS.WinClient.Start.exe启动平台客户端,用户名:Administrator,密码:sa
登录系统后选择菜单开发相关/输入字典
新建输入字典
名称为产品分类,设定数据类型:
点击浏览,选择刚刚编译的Northwind.Entities.dll
选择产品分类数据对象
确定
选中【启用缓存】,设定缓存属性为LMTime
设定码值属性CategoryID
设定显示属性CategoryName
显示设置:设定哪些项目在字典中显示
设定搜索条件
确定后完成,同样增加商品字典、客户字典、产品库存三个输入字典,具体可以参考案例中的输入字典进行设置。
商品字典对应Northwind.Entities.Product数据对象,客户字典对应Northwind.Entities.Customer数据对象,产品库存对应Northwind.Entities.Stock数据对象。
在进行正式的编码工作之前,还需要建立启动项:
在解决方案中添加项,类型为winform应用程序,名称为Northwind.AppStart
删除form1.cs
修改app.config
把案例相同文件中的内容复制过来,修改数据库名称为Northwind
修改Program.cs,从案例对应文件复制过来即可。
添加引用类库EAS.Data、EAS.MicroKernel、EAS.WinClient、EAS.Windows,路径为e:\code\Northwind\Publish。添加引用前后的不同。
把Northwind.AppStart设为启动项目。
注意:以下2步,所有新添加的项目都要进行设置。
Northwind.AppStart鼠标右键,属性,设置目标框架为.net4(VS2012默认为.net4.5)
设置输出路径为e:\code\Northwind\Publish,编译。
3.5.3. 两层(无业务层)模式开发、打印及按钮级权限控制
添加项目Northwind.WinUI,类型为类库,删除class1.cs文件
添加引用类库EAS.Data、EAS.MicroKernel、EAS.Data.Controls、EAS.Windows、EAS.Explorer、EAS.Explorer.Entities、EAS.GReport.Controls、EAS.Report.Controls、Northwind.Entities
3.5.3.1. 用户控件类型窗体
在项目Northwind.WinUI添加用户控件CategoryAddIn,产品分类
该类窗体可以作为平台插件,添加到平台功能树上,有2段代码为平台约定,必须添加。
在窗体上添加控件(可以直接从案例对应窗体上复制,减少操作时间)
设定dataGridView1的datasource为categoryBindingSource
dataGridView1上鼠标右键,选择编辑列
在代码模式下添加引用
using EAS.Modularization;
using EAS.Data.Access;
using EAS.Data.ORM;
using EAS.Data.Linq;
using Northwind.Entities;
using EAS;
增加以下一行代码,此为平台约定的格式,必须有。
[Module("0A1745F3-7F95-4898-8E51-539818DAB95C", "产品分类", "")]
选中GUID字符串,然后选择工具、生成GUID,生成新的GUID,替换原GUID:
替换后的结果如下:
添加以下代码到指定位置
//以下代码为平台约定内容
[ModuleStart]
public void StartEx()
{
}
//以上代码为平台约定内容
在Northwind.Entities数据对象Category中添加以下代码:
public int GetMaxID()
{
ParameterCollection pc = new ParameterCollection();
pc.Add("ITEMKEY", this.DbTableName);
return (int)this.DataAccessor.Query("exec GetIdentityValue @itemkey=?", pc);
}
public override string ToString()
{
return this.CategoryName;
}
3.5.3.2. 普通windows窗体
此类型窗体的编程与普通程序相同,没有特殊要求。
在Northwind.WinUI增加ProductEditor,产品录入/修改界面
界面控件和代码从案例中复制过来即可。
3.5.3.3. 输入字典设置
平台提供了输入字典通用组件,可以很方面的实现软件数据录入界面中常见的选择录入方式(例如在入库单上选择仓库、部门、人员、产品等),输入指点我们在4.2.2中已经维护,这里直接调用即可。
以下重点说明输入字典的设置:
选中产品种类后的文本框,把前面通过开发相关设置的产品分类输入字典的GUID(上图红框中的内容)复制到文本框的属性【textBoxAutoComplete1上的MetadataID】,如下图所示。
选中textBoxAutoComplete1组件,设置其Enabled属性为true,这样,就可以通过帮助字典的方式输入产品种类。
3.5.3.4. 打印设置
平台提供的打印功能使用起来非常的便捷,只需要2步就能够实现单据或报表的打印,而且打印可以在使用过程中进行修改,不需要重新修改代码及重新编译程序。
1、 通过平台的报表管理工具设计打印格式;(详细操作参见4.2.5.报表及数据导出)
2、 在需要打印的地方通过报表名称直接调用(案例中提供了打印的样例代码)。
这里我们通过报表管理定义了一张打印格式【产品列表】,然后,把报表名称填入打印按钮对应的代码中即完成了打印的调用,如下:
this.Report.Name = "产品列表"; //在此处修改报表名称
3.5.3.5. 按钮级权限控制
处理功能模块级的控制外,平台还提供了更加严格的权限控制——按钮级权限控制。
平台以函数管理的形式提供了按钮级的权限控制,具体操作如下:
1、通过平台系统管理/函数管理增加需要进行管理的按钮权限控制函数。
2、添加函数【删除权限控制】
对产品管理列表的删除按钮权限进行控制,如无权限则提示无权限,不允许删除。
函数的调用时通过GUID进行的,在需要控制的按钮相应的代码中把GUID填入。
完成后,确定。然后选中函数并点击属性:
选择【安全】页签进行函数的授权。
也可以通过角色管理进行授权。如下图所示:
设置完成后,在需要控制的按钮代码中增加如下2行代码即完成按钮级权限控制的设计开发。
3.5.3.6. 程序测试
启动程序,登录系统,用户名:Administrator,密码:sa
录入产品分类
录入产品:
在产品种类文本框单击空格键,弹出产品分类输入字典,选择对应的分类即可。
录入测试数据
打印测试:点击【打印】按钮,系统弹出打印预览窗口
删除按钮权限控制测试:在未经授权的情况下结果如下图所示:(此功能在调试模式下无效,需要进行模块安装、授权后才能够正常)
3.5.4. 多层(有业务层)模式开发
参照案例代码,添加两个项目
Northwind.BLL.Contracts作为服务端与客户端的接口
Northwind.BLL.Host 服务端业务处理逻辑
设定目标框架为.net 4.0,目标平台为Any CPU,输出路径为Northwind下的Publish
3.5.4.1. 接口层开发
Northwind.BLL.Contracts:
添加类库引用:EAS.Data、EAS.MicroKernel、Northwind.Entities
新建接口IInService,处理采购入库业务。
添加代码
using Northwind.Entities;
其它代码如图所示,详见案例对应代码:
编译生成Northwind.BLL.Contracts.dll
3.5.4.2. 业务逻辑层开发
对应的,在Northwind.BLL.Host中添加类库引用EAS.Data、EAS.MicroKernel、Northwind.Entities、Northwind.BLL.Contracts
修改属性文件Properties目录下的AssemblyInfo
修改前: 修改后增加了红框中的2行内容:
添加InService类,具体实现Northwind.BLL.Contracts中定义的接口
添加类库引用代码
using EAS.Data.Linq;
using EAS.Data.ORM;
using Northwind.Entities;
using EAS.Services;
修改代码如下:
到此就完成了接口层和业务逻辑层的开发。
3.5.4.3. UI层开发
首先在Northwind.WinUI中添加对Northwind.BLL.Contracts的应用
添加用户组件ProductInAddIn,用于录入采购入库单
界面参照案例设计、布局(可以直接复制过来,以节省时间)
参照案例添加对应的代码
参照案例,在Northwind.Entities的数据对象InBill、InBillDetail添加GetMaxID(),完成重新编译。
参考案例添加LoginInfo类。
为文本框tbName的属性【textBoxAutoComplete1上的MedaDataID】填入4.2.3.3中设置的输入字典【商品字典】的编码。
为文本框控件tbNumber绑定tbNumber_KeyDown事件;
为按钮控件btnOK绑定btnOK_Click事件;
为数据字典控件textBoxAutoComplete1绑定textBoxAutoComplete1_InputComplete事件。
完成后重新编译UI层。
运行测试:
采购入库菜单已经出现,点击开始录入数据
到此,所有的开发和编码工作基本完成。
其它功能模块的开发可以参考上述步骤及案例全部做一遍,以加强对平台的掌握。
3.5.5. 报表及数据导出设计开发
平台提供了强大的打印设计、报表设计及自定义报表。
为了前面我们测试的打印功能,我们在此设计【产品列表】报表,以Administrator账户进入系统,选择开发相关/报表管理(注意:此处是报表管理而不是GR报表管理):
点击添加,新建报表
录入报表名称:产品列表(平台要求报表名称必须唯一,作为打印调用的标识),查询语句、查询参数在此不做处理,确定
选中报表然后点击设计按钮,进行报表内容和格式的设计,在文件/新建/选择对象报表
在报表信息页签录入报表名称:产品列表及其他信息
在数据对象页签程序集选择e:\code\Northwind\Publish\Northwind.Entities.dll
对象选择Product,如下图所示
调整格式后,结果如下:
保存,完成报表的设计。
报表实际效果。报表支持4中数据导出格式:Excel、Word、Html、Pdf。
如导出为excel:
导出后格式如下:
4. 正式运行系统
4.1. 系统部署
4.1.1. 模块安装
4.1.2. 建立导航
4.1.3. 发布为分布式模式
修改E:\code\Northwind下的eas.publish.cmd批处理文件,把以下内容添加到文件后面:
运行E:\code\Northwind下的EAS.Publisher.exe完成服务端及客户端程序文件的发布
配置服务端
运行E:\code\Northwind\AppServer\Bin下的EAS.Configure.exe,配置为分布式模式,选择第三项【生成SOA分布式服务配置】如图
运行同目录下的soaserver.start.bat文件,启动SOA服务,如图所示
配置客户端
运行E:\code\Northwind\AppServer\xClient\files下的EAS.Configure.exe进行客户端配置
运行同目录下的EAS.WinClient.Start.exe,启动客户端,登录系统,运行正常
4.2. 角色维护
以Administrator账户登录,进行角色维护
建立角色
分配权限
分配成员
4.3. 账户维护
新建账户
制定隶属角色
单独权限分配
4.4. 权限分配
平台既可以在角色管理中对角色统一授权
平台又可以在账户管理中对账户单独授权,管理比较灵活方便。
5. 应用领域
结合我对平台的理解,我认为平台适用面还是很广的,总结为以下四个方面:
5.1. 全新软件项目的快速开发平台
对于全新的软件项目,无论是产品化开发还是项目化开发,都可以考虑用EAS.NET平台,可以减少系统管理方面的开发。
5.2. 已有系统的快速二次开发平台
对于在已有成熟系统上进行二次开发来讲,平台更有价值,特别是平台的输入字典可以充分利用原有系统的数据字典,只需要开发新增的录入单据即可,单据上的所有参照项只需要通过平台设置输入字典就可以实现与原有系统的数据字典共享了,报表既可以用原有系统的报表工具(如果有的话)也可以用系统的GR报表管理设计报表并发布为功能模块,实现快速二次开发。
5.3. 老旧系统的快速升级开发平台
对于一些技术相对落后、维护工作量大、客户应用较深的系统,也可以在EAS.NET平台的基础上,分模块逐步升级,所有的业务逻辑仍然可以保持与老系统一致,但系统的扩展性、稳定性、可维护性方面则有很大的改进。
另一种系统由于原来主要是针对sql server开发的,现在有项目需要支持oracle数据库,也可以考虑使用EAS.NET对老系统进行扩展升级,如果原来就是基于.net技术,用C#开发的,整体开发工作量相对比较小。
5.4. 多系统应用快速整合开发平台
对于一些大型集团企业,内部使用了许多系统,但作为集团领导经常需要结合多个系统的综合数据,通过EAS.NET平台可以搭建企业内部的数据交换中心和数据仓库,并可以在此基础上建立一套决策分析系统。如果能够充分发挥EAS.NET工作流平台的优势,还可以通过工作流把各个系统有机联系起来。
6. 适用对象
此处的分类方式以对.net开发技术掌握的程度为标准。
6.1. 零基础
主要针对那些小微软件企业的老板们,他们多数擅长业务,不懂技术,或者只是简单的了解技术,没有实力建立一个强大的开发队伍,多数只有1~2名技术人员,这些既负责一些简单的开发工作,还要负责大量的客户服务。这些公司可以考虑使用EAS.NET平台作为基础开发平台,技术人员只要能够会用C#写窗体和简单的业务逻辑即可。
6.2. 初级水平
主要针对一些解除开发1~3年的开发人员,已经基本能够做一个模块级的开发,但由于没有时间积累,没有自己的整体开发框架。这类人员也可以考虑把EAS.NET平台掌握后跳槽到新的公司做他们的技术负责人,把EAS.NET平台作为公司的开发平台,为公司快速带来效益,也可以使自己的收入在短期内实现翻番。
6.3. 中级水平
主要针对已经从事开发工作多年的开发人员或者项目团队的负责人,他们多数有一定的技术水平,也形成了自己的开发框架,但框架存在着这样或者那样的不足,为解决框架问题而忙碌不休。建议这些朋友可以考虑选择EAS.NET平台作为自己或者项目组的开发平台,提高开发交付效率,解放自己,用更多的时间去休闲,去陪陪家人、朋友。
7. 结束语
以上为个人对EAS.NET平台的认识和理解,EAS.NET平台还有可以改进提高的地方,希望喜欢这个平台以及使用这个平台的朋友们能够发挥各自的优势,让平台更强大、更好用、更有效,为我们大家带来更大的回报。在此谢谢作者的无私奉献,最后,预祝EAS.NET平台发展的越来越好。
欢迎大家交流沟通,QQ:709565426;邮箱:wy_erp@126.com