一、前言
AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台。用于帮助中小型软件企业建立一条适合市场快速变化的开发团队,以达到节省开发成本、缩短开发时间,快速适应市场变化的目的。
AgileEAS.NET SOA中间件平台提供了敏捷快速开发软件工程的最佳实践,通过提供大量的基础支撑功能如IOC、ORM、SOA、分布式体系及敏捷并发开发方法所支撑的插件开发体系,以及提供了大量的实体、数据模型设计生成工具、代码生成工具,用于帮助中小软件开发商快速成长。
AgileEAS.NET平台充分把握目前软件行业快速发展的新趋势,基于敏捷并行开发、快速适应市场这样淳朴的软件工程实践,采用业界广泛使用的Microsoft .Net构件(组件)开发技术实践了这种开发思想,帮助软件企业实现“敏捷变化、快速适合”的目标,从而帮助软件企业在激烈的市场竞争中赢得先机并获得更高的回报。
二、配置分布式方式运行WinClient运行容器
在前面的AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(一):下载平台并基于直连环境运行一文之中,为大家介绍了如何下载AgileEAS.NET SOA中间件平台,以及如何初始化数据库运行环境、配置以直连方式运行AgileEAS.NET SOA 中间件WinCleint以直接数据库方式运行。
本文我们将为大家讲解如何以配置以”SOA服务-分布式客户端”方向运行AgileEAS.ENT SOA中间件平台WinClient容器。
三、配置SOA分布式服务端
在配置服务端之湔我们抚运动一下下载包根目录之中的”EAS.Publisher.exe”应用程序:
”EAS.Publisher.exe”控件台应用程序是一个用于帮助开发人员进行分布式部署时的分发程序,其本质是将发布包“bin\dotnet”之中的程序集复制到“SOA服务”运行的环境目录“AppServer”下面的各级目录,运行程序如下:
运行时自动调用“eas.publish.cmd”脚本,将文件分发到“AppServer”下面的各级目录,其脚本内容如下:
1: @rem 复制到下载目录
2: copy @RootDirectory\bin\dotnet\AgileIM.Client.exe @RootDirectory\appserver\xclient\files\AgileIM.Client.exe /y
3: copy @RootDirectory\bin\dotnet\AgileIM.Client.exe.config @RootDirectory\appserver\xclient\files\AgileIM.Client.exe.config /y
4: copy @RootDirectory\bin\dotnet\AgileIM.Contracts.dll @RootDirectory\appserver\xclient\files\AgileIM.Contracts.dll /y
5: copy @RootDirectory\bin\dotnet\AgileIM.Service.dll @RootDirectory\appserver\xclient\files\AgileIM.Service.dll /y
6: copy @RootDirectory\bin\dotnet\AxInterop.grdesLib.dll @RootDirectory\appserver\xclient\files\AxInterop.grdesLib.dll /y
7: copy @RootDirectory\bin\dotnet\AxInterop.grproLib.dll @RootDirectory\appserver\xclient\files\AxInterop.grproLib.dll /y
8: copy @RootDirectory\bin\dotnet\EAS.ActiveXForm.ClientClasp.AddIn.dll @RootDirectory\appserver\xclient\files\EAS.ActiveXForm.ClientClasp.AddIn.dll /y
9: copy @RootDirectory\bin\dotnet\EAS.BPM.Activities.dll @RootDirectory\appserver\xclient\files\EAS.BPM.Activities.dll /y
10: copy @RootDirectory\bin\dotnet\EAS.BPM.BLL.Host.dll @RootDirectory\appserver\xclient\files\EAS.BPM.BLL.Host.dll /y
11: copy @RootDirectory\bin\dotnet\EAS.BPM.WinUI.dll @RootDirectory\appserver\xclient\files\EAS.BPM.WinUI.dll /y
12: copy @RootDirectory\bin\dotnet\eas.client.ini @RootDirectory\appserver\xclient\files\eas.client.ini /y
13: copy @RootDirectory\bin\dotnet\EAS.Configure.exe @RootDirectory\appserver\xclient\files\EAS.Configure.exe /y
14: copy @RootDirectory\bin\dotnet\EAS.Configure.exe.config @RootDirectory\appserver\xclient\files\EAS.Configure.exe.config /y
15: copy @RootDirectory\bin\dotnet\EAS.Data.Controls.dll @RootDirectory\appserver\xclient\files\EAS.Data.Controls.dll /y
16: copy @RootDirectory\bin\dotnet\EAS.Data.dll @RootDirectory\appserver\xclient\files\EAS.Data.dll /y
17: copy @RootDirectory\bin\dotnet\EAS.Data.Provider.dll @RootDirectory\appserver\xclient\files\EAS.Data.Provider.dll /y
18: copy @RootDirectory\bin\dotnet\EAS.Distributed.dll @RootDirectory\appserver\xclient\files\EAS.Distributed.dll /y
19: copy @RootDirectory\bin\dotnet\EAS.Explorer.BLL.Contracts.dll @RootDirectory\appserver\xclient\files\EAS.Explorer.BLL.Contracts.dll /y
20: copy @RootDirectory\bin\dotnet\EAS.Explorer.BLL.Host.dll @RootDirectory\appserver\xclient\files\EAS.Explorer.BLL.Host.dll /y
21: copy @RootDirectory\bin\dotnet\EAS.Explorer.dll @RootDirectory\appserver\xclient\files\EAS.Explorer.dll /y
22: copy @RootDirectory\bin\dotnet\EAS.Explorer.Entities.dll @RootDirectory\appserver\xclient\files\EAS.Explorer.Entities.dll /y
23: copy @RootDirectory\bin\dotnet\EAS.Explorer.Res.dll @RootDirectory\appserver\xclient\files\EAS.Explorer.Res.dll /y
24: copy @RootDirectory\bin\dotnet\EAS.Explorer.WinUI.dll @RootDirectory\appserver\xclient\files\EAS.Explorer.WinUI.dll /y
25: copy @RootDirectory\bin\dotnet\EAS.FormDesigner.exe @RootDirectory\appserver\xclient\files\EAS.FormDesigner.exe /y
26: copy @RootDirectory\bin\dotnet\EAS.GReport.Controls.dll @RootDirectory\appserver\xclient\files\EAS.GReport.Controls.dll /y
27: copy @RootDirectory\bin\dotnet\EAS.MicroKernel.dll @RootDirectory\appserver\xclient\files\EAS.MicroKernel.dll /y
28: copy @RootDirectory\bin\dotnet\EAS.Monitor.dll @RootDirectory\appserver\xclient\files\EAS.Monitor.dll /y
29: copy @RootDirectory\bin\dotnet\EAS.NLB.Monitor.exe @RootDirectory\appserver\xclient\files\EAS.NLB.Monitor.exe /y
30: copy @RootDirectory\bin\dotnet\EAS.NLB.Server.exe @RootDirectory\appserver\xclient\files\EAS.NLB.Server.exe /y
31: copy @RootDirectory\bin\dotnet\EAS.OrmDesigner.exe @RootDirectory\appserver\xclient\files\EAS.OrmDesigner.exe /y
32: copy @RootDirectory\bin\dotnet\EAS.OrmDesigner.exe.config @RootDirectory\appserver\xclient\files\EAS.OrmDesigner.exe.config /y
33: copy @RootDirectory\bin\dotnet\EAS.Report.Controls.dll @RootDirectory\appserver\xclient\files\EAS.Report.Controls.dll /y
34: copy @RootDirectory\bin\dotnet\EAS.SmartUpdater.exe @RootDirectory\appserver\xclient\files\EAS.SmartUpdater.exe /y
35: copy @RootDirectory\bin\dotnet\EAS.SOA.Monitor.exe @RootDirectory\appserver\xclient\files\EAS.SOA.Monitor.exe /y
36: copy @RootDirectory\bin\dotnet\EAS.ThirdParty.Controls.dll @RootDirectory\appserver\xclient\files\EAS.ThirdParty.Controls.dll /y
37: copy @RootDirectory\bin\dotnet\EAS.WinClient.dll @RootDirectory\appserver\xclient\files\EAS.WinClient.dll /y
38: copy @RootDirectory\bin\dotnet\EAS.WinClient.Start.exe @RootDirectory\appserver\xclient\files\EAS.WinClient.Start.exe /y
39: copy @RootDirectory\bin\dotnet\EAS.WinClient.Start.exe.config @RootDirectory\appserver\xclient\files\EAS.WinClient.Start.exe.config /y
40: copy @RootDirectory\bin\dotnet\EAS.Windows.dll @RootDirectory\appserver\xclient\files\EAS.Windows.dll /y
41: copy @RootDirectory\bin\dotnet\EAS.Wpf.Controls.dll @RootDirectory\appserver\xclient\files\EAS.Wpf.Controls.dll /y
42: copy @RootDirectory\bin\dotnet\grdes50.dll @RootDirectory\appserver\xclient\files\grdes50.dll /y
43: copy @RootDirectory\bin\dotnet\gregn50.dll @RootDirectory\appserver\xclient\files\gregn50.dll /y
44: copy @RootDirectory\bin\dotnet\ICSharpCode.AvalonEdit.dll @RootDirectory\appserver\xclient\files\ICSharpCode.AvalonEdit.dll /y
45: copy @RootDirectory\bin\dotnet\Interop.grdesLib.dll @RootDirectory\appserver\xclient\files\Interop.grdesLib.dll /y
46: copy @RootDirectory\bin\dotnet\Interop.grproLib.dll @RootDirectory\appserver\xclient\files\Interop.grproLib.dll /y
47: copy @RootDirectory\bin\dotnet\itextsharp.dll @RootDirectory\appserver\xclient\files\itextsharp.dll /y
48: copy @RootDirectory\bin\dotnet\lua51.x64.dll @RootDirectory\appserver\xclient\files\lua51.x64.dll /y
49: copy @RootDirectory\bin\dotnet\lua51.x86.dll @RootDirectory\appserver\xclient\files\lua51.x86.dll /y
50: copy @RootDirectory\bin\dotnet\LuaInterface.x64.dll @RootDirectory\appserver\xclient\files\LuaInterface.x64.dll /y
51: copy @RootDirectory\bin\dotnet\LuaInterface.x86.dll @RootDirectory\appserver\xclient\files\LuaInterface.x86.dll /y
52: copy @RootDirectory\bin\dotnet\Microsoft.Data.ConnectionUI.Dialog.dll @RootDirectory\appserver\xclient\files\Microsoft.Data.ConnectionUI.Dialog.dll /y
53: copy @RootDirectory\bin\dotnet\Microsoft.Data.ConnectionUI.dll @RootDirectory\appserver\xclient\files\Microsoft.Data.ConnectionUI.dll /y
54: copy @RootDirectory\bin\dotnet\Microsoft.XmlNotepad.dll @RootDirectory\appserver\xclient\files\Microsoft.XmlNotepad.dll /y
55: copy @RootDirectory\bin\dotnet\MongoDB.dll @RootDirectory\appserver\xclient\files\MongoDB.dll /y
56: copy @RootDirectory\bin\dotnet\MySql.Data.dll @RootDirectory\appserver\xclient\files\MySql.Data.dll /y
57: copy @RootDirectory\bin\dotnet\NetronGraphLib.dll @RootDirectory\appserver\xclient\files\NetronGraphLib.dll /y
58: copy @RootDirectory\bin\dotnet\protobuf-net.xml @RootDirectory\appserver\xclient\files\protobuf-net.xml /y
59: copy @RootDirectory\bin\dotnet\RdlDesigner.dll @RootDirectory\appserver\xclient\files\RdlDesigner.dll /y
60: copy @RootDirectory\bin\dotnet\RdlEngine.dll @RootDirectory\appserver\xclient\files\RdlEngine.dll /y
61: copy @RootDirectory\bin\dotnet\RdlViewer.dll @RootDirectory\appserver\xclient\files\RdlViewer.dll /y
62: copy @RootDirectory\bin\dotnet\System.Data.SQLite.DLL @RootDirectory\appserver\xclient\files\System.Data.SQLite.DLL /y
63: copy @RootDirectory\bin\dotnet\System.Workflow.Activities.dll @RootDirectory\appserver\xclient\files\System.Workflow.Activities.dll /y
64: copy @RootDirectory\bin\dotnet\System.Workflow.ComponentModel.dll @RootDirectory\appserver\xclient\files\System.Workflow.ComponentModel.dll /y
65: copy @RootDirectory\bin\dotnet\System.Workflow.Runtime.dll @RootDirectory\appserver\xclient\files\System.Workflow.Runtime.dll /y
66: copy @RootDirectory\bin\dotnet\update.ini @RootDirectory\appserver\xclient\files\update.ini /y
67: copy @RootDirectory\bin\dotnet\WF.Demo.DAL.dll @RootDirectory\appserver\xclient\files\WF.Demo.DAL.dll /y
68: copy @RootDirectory\bin\dotnet\WF.Demo.UI.dll @RootDirectory\appserver\xclient\files\WF.Demo.UI.dll /y
69: @rem 复制到下载配置目录
70: copy @RootDirectory\bin\dotnet\EAS.SmartUpdateConfig.exe @RootDirectory\appserver\xclient\EAS.SmartUpdateConfig.exe /y
71: copy @RootDirectory\bin\dotnet\EAS.SmartUpdateConfig.exe.config @RootDirectory\appserver\xclient\EAS.SmartUpdateConfig.exe.config /y
72: @rem 复制到SOA服务Bin目录
73: copy @RootDirectory\bin\dotnet\AgileIM.Contracts.dll @RootDirectory\appserver\bin\AgileIM.Contracts.dll /y
74: copy @RootDirectory\bin\dotnet\AgileIM.Service.dll @RootDirectory\appserver\bin\AgileIM.Service.dll /y
75: copy @RootDirectory\bin\dotnet\EAS.BPM.Activities.dll @RootDirectory\appserver\bin\EAS.BPM.Activities.dll /y
76: copy @RootDirectory\bin\dotnet\EAS.BPM.BLL.Host.dll @RootDirectory\appserver\bin\EAS.BPM.BLL.Host.dll /y
77: copy @RootDirectory\bin\dotnet\EAS.Configure.exe @RootDirectory\appserver\bin\EAS.Configure.exe /y
78: copy @RootDirectory\bin\dotnet\EAS.Configure.exe.config @RootDirectory\appserver\bin\EAS.Configure.exe.config /y
79: copy @RootDirectory\bin\dotnet\EAS.Data.dll @RootDirectory\appserver\bin\EAS.Data.dll /y
80: copy @RootDirectory\bin\dotnet\EAS.Data.Provider.dll @RootDirectory\appserver\bin\EAS.Data.Provider.dll /y
81: copy @RootDirectory\bin\dotnet\EAS.Data.xml @RootDirectory\appserver\bin\EAS.Data.xml /y
82: copy @RootDirectory\bin\dotnet\EAS.DbInitializer.exe @RootDirectory\appserver\bin\EAS.DbInitializer.exe /y
83: copy @RootDirectory\bin\dotnet\EAS.DbInitializer.exe.config @RootDirectory\appserver\bin\EAS.DbInitializer.exe.config /y
84: copy @RootDirectory\bin\dotnet\EAS.Distributed.dll @RootDirectory\appserver\bin\EAS.Distributed.dll /y
85: copy @RootDirectory\bin\dotnet\EAS.Explorer.BLL.Contracts.dll @RootDirectory\appserver\bin\EAS.Explorer.BLL.Contracts.dll /y
86: copy @RootDirectory\bin\dotnet\EAS.Explorer.BLL.Host.dll @RootDirectory\appserver\bin\EAS.Explorer.BLL.Host.dll /y
87: copy @RootDirectory\bin\dotnet\EAS.Explorer.dll @RootDirectory\appserver\bin\EAS.Explorer.dll /y
88: copy @RootDirectory\bin\dotnet\EAS.Explorer.Entities.dll @RootDirectory\appserver\bin\EAS.Explorer.Entities.dll /y
89: copy @RootDirectory\bin\dotnet\EAS.MicroKernel.dll @RootDirectory\appserver\bin\EAS.MicroKernel.dll /y
90: copy @RootDirectory\bin\dotnet\EAS.Monitor.dll @RootDirectory\appserver\bin\EAS.Monitor.dll /y
91: copy @RootDirectory\bin\dotnet\EAS.NLB.Monitor.exe @RootDirectory\appserver\bin\EAS.NLB.Monitor.exe /y
92: copy @RootDirectory\bin\dotnet\EAS.NLB.Server.exe @RootDirectory\appserver\bin\EAS.NLB.Server.exe /y
93: copy @RootDirectory\bin\dotnet\EAS.NLB.Server.exe.config @RootDirectory\appserver\bin\EAS.NLB.Server.exe.config /y
94: copy @RootDirectory\bin\dotnet\EAS.NLB.Server.x64.exe @RootDirectory\appserver\bin\EAS.NLB.Server.x64.exe /y
95: copy @RootDirectory\bin\dotnet\EAS.SOA.Server.exe @RootDirectory\appserver\bin\EAS.SOA.Server.exe /y
96: copy @RootDirectory\bin\dotnet\EAS.SOA.Server.exe.config @RootDirectory\appserver\bin\EAS.SOA.Server.exe.config /y
97: copy @RootDirectory\bin\dotnet\EAS.SOA.Server.x64.exe @RootDirectory\appserver\bin\EAS.SOA.Server.x64.exe /y
98: copy @RootDirectory\bin\dotnet\EAS.SOA.Server.x64.exe.config @RootDirectory\appserver\bin\EAS.SOA.Server.x64.exe.config /y
99: copy @RootDirectory\bin\dotnet\lua51.x64.dll @RootDirectory\appserver\bin\lua51.x64.dll /y
100: copy @RootDirectory\bin\dotnet\lua51.x86.dll @RootDirectory\appserver\bin\lua51.x86.dll /y
101: copy @RootDirectory\bin\dotnet\LuaInterface.x64.dll @RootDirectory\appserver\bin\LuaInterface.x64.dll /y
102: copy @RootDirectory\bin\dotnet\LuaInterface.x86.dll @RootDirectory\appserver\bin\LuaInterface.x86.dll /y
103: copy @RootDirectory\bin\dotnet\MongoDB.dll @RootDirectory\appserver\bin\MongoDB.dll /y
104: copy @RootDirectory\bin\dotnet\MySql.Data.dll @RootDirectory\appserver\bin\MySql.Data.dll /y
105: copy @RootDirectory\bin\dotnet\RdlEngine.dll @RootDirectory\appserver\bin\RdlEngine.dll /y
106: copy @RootDirectory\bin\dotnet\RdlViewer.dll @RootDirectory\appserver\bin\RdlViewer.dll /y
107: copy @RootDirectory\bin\dotnet\soaserver.start.bat @RootDirectory\appserver\bin\soaserver.start.bat /y
108: copy @RootDirectory\bin\dotnet\soaserver.start.bat @RootDirectory\appserver\bin\install.bat /y
109: copy @RootDirectory\bin\dotnet\soaserver.start.bat @RootDirectory\appserver\bin\uinstall.bat /y
110: copy @RootDirectory\bin\dotnet\System.Data.SQLite.DLL @RootDirectory\appserver\bin\System.Data.SQLite.DLL /y
111: copy @RootDirectory\bin\dotnet\System.Workflow.Activities.dll @RootDirectory\appserver\bin\System.Workflow.Activities.dll /y
112: copy @RootDirectory\bin\dotnet\System.Workflow.ComponentModel.dll @RootDirectory\appserver\bin\System.Workflow.ComponentModel.dll /y
113: copy @RootDirectory\bin\dotnet\System.Workflow.Runtime.dll @RootDirectory\appserver\bin\System.Workflow.Runtime.dll /y
114: copy @RootDirectory\bin\dotnet\WF.Demo.DAL.dll @RootDirectory\appserver\bin\WF.Demo.DAL.dll /y
115:
其中@RootDirectory程序会根据运行时工作目录进行替换,注意:下载的AgileEAS.NET SOA中间件平台的解压目录路径之中最好不要带空格和中文。
接下来我们配置服务端,数据库我们将使用“AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(一):下载平台并基于直连环境运行一文所建立和初始化的”eas_demo”数据库。
我们运行“AppServer\Bin”目录之中的“EAS.Configure.exe”AgileEAS.NET SOA中间件配置文件生成工具生成服务端配置:
一定要选中“生成SOA分布式服务器配置”和“保存配置到AgileEAS.NET SOA 平台相关配置文件”然后点“下一步”:
填写WCF服务所需要的通信端口号(http和tcp各一个)、以及Socket通信服务的tcp的端口”以及数据库连接信息,然后点“下一步”:
界面上方是根据所设参数生成的配置信息,此处,可以改变配置信息的输出路径,默认为当前目录之中的“EAS.SOA.Server.exe.config”,点击“完成”输出配置:
至此,服务端的配置已经完成,接焉为我们以控件台方式运行一下SOA服务端,运行“AppServer\Bin”目录之中的“soaserver.start.bat”指处理文件:
“soaserver.start.bat”批处理文件是SOA服务的控制台运行脚本,即以控制台模式运行SOA服务端,我们运行如下:
“appServer\Binsoaserver.start.bat”批处理文件其内容如下:
1: EAS.soa.Server.exe -run
2: pause
其本质是“EAS.soa.Server.exe -run”这一旬,EAS.SOA.Server.exe带了一个启动参考 -run,即告诉EAS.SOA.Server.exe以控制台方式运行承载服务,除-run参数之外,EAS.SOA.Server.exe还支持以下参数:
-i 或者/i:向Windows服务控制器安装AgileEAS.NET SOA中间件平台SOA服务。
-u 或者/u:卸载已存在的AgileEAS.NET SOA中间件平台SOA服务。
/name=实例名:在安装、卸载AgileEAS.NET SOA中间件平台SOA服务的时候,告诉服务控制器,要安装什么实例的名称是什么,AgileEAS.NET SOA中间件的服务设计为可以多服务实例运行,即一台电脑上可以运行实例名称为”EAS”、“Demo”、“HIS”、“EMR”、“PACS”等不同的服务实例,类似于SQL的命名实现,当然这个参数是一个可选参考,如果不使用本参数,则安装和卸载默认实例,一台电脑只能安装一个默认实例,比如以下脚本:
“AppServer\Bin\install.bat”脚本
EAS.SOA.Server.exe /i /name=demo
pause
表现安装一个实例名称为“demo”的AgileEAS.NET SOA中间件平台SOA服务实例,我们可以执行这个脚本:
我们打开系统管理工具之中的服务管理:
那以在生产环境之中我们就可以通过这种方式部署AgileEAS.NET SOA 中间件平台的SOA服务,服务安装之后会随计算机启动而自动启动,我们可以很方便的通过系统服务管理工具进行启动、停止服务,如果我们不使用这个服务了,我们可以使用以下脚本卸载这个服务:
“AppServer\Bin\uinstall.bat”脚本
1: EAS.SOA.Server.exe /u /name=demo
2: pause
执行脚本如下:
我们运行“appServer\Bin\soaserver.start.bat”启动服务进行下一步配置。
四、配置分布式WinClient客户段
在第三节中我们使用”EAS.Publisher.exe”分发程序分发文件,会自动把客户段运行文件复制到”appServer\xclient\files”之中,那么我们运行”appServer\xclient\files\EAS.Configure.exe”配置程序配置客户端:
选中“生成客户端配置(分布式访问结果)”和“保存配置到AgileEAS.NET SOA 平台相关配置文件”然后点击“下一步”:
这里需要注意的是端口号要根据选择的通信模式和第三节所设置的服务器参数进行决定,tcp对应第三节服务器设置之中的WCF服务之中的Tcp端口号,http对应WCF服务之中的http端口号,socket对应socket服务模式之中的tcp端口号。
点击“下一步”继续:
点击“完成”输出客户端配置到“EAS.WinClient.Start.exe.config”配置文件之中,内容如下:
1: <?xml version="1.0" encoding="utf-8"?>
2: <configuration>
3: <configSections>
4: <section name="eas" type="EAS.ConfigHandler,EAS.MicroKernel" />
5: </configSections>
6: <!--SQLite运行必需-->
7: <startup useLegacyV2RuntimeActivationPolicy="true">
8: <supportedRuntime version="v4.0"/>
9: </startup>
10: <eas>
11: <configurations>
12: <item name="Key" value="Value" />
13: </configurations>
14: <objects>
15: <!--分布式通信组件。-->
16: <object name="ServiceBridger" assembly="EAS.Distributed" type="EAS.Distributed.ServiceBridger" LifestyleType="Thread" >
17: <property name="ServiceName" type="string" value="EAS.RMI.Service" />
18: </object>
19: <object name="DataAccessor" assembly="EAS.Distributed" type="EAS.Distributed.DataAccessor" LifestyleType="Thread" >
20: <property name="ServiceBridger" type="object" value="ServiceBridger" />
21: </object>
22: <object name="OrmAccessor" assembly="EAS.Distributed" type="EAS.Distributed.OrmAccessor" LifestyleType="Thread" >
23: <property name="ServiceBridger" type="object" value="ServiceBridger" />
24: <property name="DataAccessor" type="object" value="DataAccessor" />
25: </object>
26: <!--日志管理-->
27: <object name="Logger" assembly="EAS.MicroKernel" type="EAS.Loggers.TextLogger" LifestyleType="Singleton" />
28: <!--资源-->
29: <!--<object name="EAS.Explorer.Resource" assembly="EAS.Explorer.Res" type="EAS.Explorer.Res.Resources" LifestyleType="Singleton" />-->
30: </objects>
31: <services>
32: <service name="EAS.RMI.Service" service-type="WcfService" singleton="true" url="net.tcp://127.0.0.1:6607/eas/services/EAS.RMIService" />
33: <service name="EAS.Storage.Service" service-type="WcfService" singleton="true" url="net.tcp://127.0.0.1:6607/eas/services/EAS.StorageService" />
34: </services>
35: </eas>
36: </configuration>
至此为止,我们完成了不带自动升级功能的分布式客户端配置,我们启动客户程序“EAS.WinClient.Start.exe”,并使用账号:Adminstrator,密码:sa登录,看到如下界面:
那么如何分辨程序是以分布式方式运行的呢,我们打开以控件台运行的SOA服务程序CMD窗口,就会看到其中一些消息通信记录:
五、配置自动升级
第四节我们在”appServer\xclient\files”目录之中成功配置了分布式客户端并且成功运行,那么我们”appServer\xclient\files”为基础配置一个自升级服务。
打开”appServer\xclient\files\update.ini”文件进行修改:
1: # AgileEAS.Net 平台升级控件文件。
2:
3: [config]
4:
5: allow = 0
6: application = EAS.WinClient.Start.exe
7: url = net.tcp://localhost:6607/eas/services/EAS.UpdateService
其中allow表示是否升级,url为升级服务地址,地址组成为wcf协议net.tcp://或http://+主机名称为IP+端口号+/eas/services/eas.updateservice,application表示升级完成之后启动运行的程序,我们根据第三节的配置修改如下:
1: # AgileEAS.Net 平台升级控件文件。
2:
3: [config]
4:
5: allow = 1
6: application = EAS.WinClient.Start.exe
7: url = net.tcp://localhost:6607/eas/services/EAS.UpdateService
然后我们删除目录里面的临时文件夹“Data”和“logs”,进行”appServer\xclient”,运行目录之中的”EAS.SmartUpdateConfig.exe“程序:
”EAS.SmartUpdateConfig.exe“程序是AgileEAS.NET SOA 中间件平台的升级配置程序,即当我们的应用的程序文件发生了新级和变更,需要把文件复制”appServer\xclient\files”目录之中,并且运行”EAS.SmartUpdateConfig.exe“程序以生成升级配置文件,升级配置文件存储在”appServer\xclient\conig”目录之中的”SmartUpdate.xml“文件之中,其内容如下:
1: <?xml version="1.0" encoding="utf-8"?>
2: <SmartConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
3: <URI>http://www.smarteas.net/</URI>
4: <Name>AgileEAS.NET SOA平台升级配置文件</Name>
5: <Description>用于AgileEAS.NET SOA平台SmartClient/ActiveX运行容器模块升级之用</Description>
6: <StartEx />
7: <Time>2013-10-16T08:56:44.67765+08:00</Time>
8: <Files>
9: <SmartFile>
10: <FileName>AgileIM.Client.exe</FileName>
11: <Version>1.0.0.0</Version>
12: <Time>2013-10-15T16:59:23.5252+08:00</Time>
13: </SmartFile>
14: <SmartFile>
15: <FileName>AgileIM.Client.exe.config</FileName>
16: <Time>2013-08-27T12:10:12.0756571+08:00</Time>
17: </SmartFile>
18: <SmartFile>
19: <FileName>AgileIM.Contracts.dll</FileName>
20: <Version>1.0.0.0</Version>
21: <Time>2013-10-12T19:50:18.155+08:00</Time>
22: </SmartFile>
23: <SmartFile>
24: <FileName>AgileIM.Service.dll</FileName>
25: <Version>1.0.0.0</Version>
26: <Time>2013-10-15T16:59:24.5722599+08:00</Time>
27: </SmartFile>
28: <SmartFile>
29: <FileName>AxInterop.grdesLib.dll</FileName>
30: <Version>5.0.0.0</Version>
31: <Time>2013-10-12T19:50:02.442+08:00</Time>
32: </SmartFile>
33: <SmartFile>
34: <FileName>AxInterop.grproLib.dll</FileName>
35: <Version>5.0.0.0</Version>
36: <Time>2013-10-12T19:50:02.975+08:00</Time>
37: </SmartFile>
38: <SmartFile>
39: <FileName>EAS.ActiveXForm.ClientClasp.AddIn.dll</FileName>
40: <Version>1.0.0.0</Version>
41: <Time>2013-10-15T17:00:44.6468399+08:00</Time>
42: </SmartFile>
43: <SmartFile>
44: <FileName>EAS.BPM.Activities.dll</FileName>
45: <Version>1.1.0.0</Version>
46: <Time>2013-10-15T16:59:38.4650545+08:00</Time>
47: </SmartFile>
48: <SmartFile>
49: <FileName>EAS.BPM.BLL.Host.dll</FileName>
50: <Version>1.0.0.0</Version>
51: <Time>2013-10-15T17:00:41.6456682+08:00</Time>
52: </SmartFile>
53: <SmartFile>
54: <FileName>EAS.BPM.WinUI.dll</FileName>
55: <Version>2.0.0.0</Version>
56: <Time>2013-10-15T16:59:45.0194294+08:00</Time>
57: </SmartFile>
58: <SmartFile>
59: <FileName>eas.client.ini</FileName>
60: <Time>2013-10-15T21:22:56.5866492+08:00</Time>
61: </SmartFile>
62: <SmartFile>
63: <FileName>EAS.Configure.exe</FileName>
64: <Version>2.0.0.0</Version>
65: <Time>2013-10-15T16:59:27.6444356+08:00</Time>
66: </SmartFile>
67: <SmartFile>
68: <FileName>EAS.Configure.exe.config</FileName>
69: <Time>2013-04-15T19:59:09.4420283+08:00</Time>
70: </SmartFile>
71: <SmartFile>
72: <FileName>EAS.Data.Controls.dll</FileName>
73: <Version>1.0.0.0</Version>
74: <Time>2013-10-15T17:36:07.4252559+08:00</Time>
75: </SmartFile>
76: <SmartFile>
77: <FileName>EAS.Data.dll</FileName>
78: <Version>5.0.0.0</Version>
79: <Time>2013-10-15T16:59:34.241813+08:00</Time>
80: </SmartFile>
81: <SmartFile>
82: <FileName>EAS.Data.Provider.dll</FileName>
83: <Version>5.0.0.0</Version>
84: <Time>2013-10-15T16:59:59.6222646+08:00</Time>
85: </SmartFile>
86: <SmartFile>
87: <FileName>EAS.Distributed.dll</FileName>
88: <Version>5.0.0.0</Version>
89: <Time>2013-10-15T17:00:39.8145635+08:00</Time>
90: </SmartFile>
91: <SmartFile>
92: <FileName>EAS.Explorer.BLL.Contracts.dll</FileName>
93: <Version>5.0.0.0</Version>
94: <Time>2013-10-12T19:50:17.932+08:00</Time>
95: </SmartFile>
96: <SmartFile>
97: <FileName>EAS.Explorer.BLL.Host.dll</FileName>
98: <Version>5.0.0.0</Version>
99: <Time>2013-10-15T17:00:14.297104+08:00</Time>
100: </SmartFile>
101: <SmartFile>
102: <FileName>EAS.Explorer.dll</FileName>
103: <Version>5.0.0.0</Version>
104: <Time>2013-10-12T19:50:16.931+08:00</Time>
105: </SmartFile>
106: <SmartFile>
107: <FileName>EAS.Explorer.Entities.dll</FileName>
108: <Version>5.0.0.0</Version>
109: <Time>2013-10-15T17:00:16.9642565+08:00</Time>
110: </SmartFile>
111: <SmartFile>
112: <FileName>EAS.Explorer.Res.dll</FileName>
113: <Version>1.1.0.0</Version>
114: <Time>2013-10-12T19:50:50.7467432+08:00</Time>
115: </SmartFile>
116: <SmartFile>
117: <FileName>EAS.Explorer.WinUI.dll</FileName>
118: <Version>5.0.0.0</Version>
119: <Time>2013-10-15T16:59:56.5250875+08:00</Time>
120: </SmartFile>
121: <SmartFile>
122: <FileName>EAS.FormDesigner.exe</FileName>
123: <Version>5.0.0.0</Version>
124: <Time>2013-10-15T16:59:46.1954967+08:00</Time>
125: </SmartFile>
126: <SmartFile>
127: <FileName>EAS.GReport.Controls.dll</FileName>
128: <Version>1.0.0.0</Version>
129: <Time>2013-10-15T17:00:07.2997038+08:00</Time>
130: </SmartFile>
131: <SmartFile>
132: <FileName>EAS.MicroKernel.dll</FileName>
133: <Version>5.0.0.0</Version>
134: <Time>2013-10-15T16:59:29.7545563+08:00</Time>
135: </SmartFile>
136: <SmartFile>
137: <FileName>EAS.Monitor.dll</FileName>
138: <Version>1.0.0.0</Version>
139: <Time>2013-10-12T19:50:10.901+08:00</Time>
140: </SmartFile>
141: <SmartFile>
142: <FileName>EAS.NLB.Monitor.exe</FileName>
143: <Version>1.0.0.0</Version>
144: <Time>2013-10-15T17:00:08.143752+08:00</Time>
145: </SmartFile>
146: <SmartFile>
147: <FileName>EAS.NLB.Server.exe</FileName>
148: <Version>1.0.0.0</Version>
149: <Time>2013-10-15T17:00:16.3272201+08:00</Time>
150: </SmartFile>
151: <SmartFile>
152: <FileName>EAS.OrmDesigner.exe</FileName>
153: <Version>5.0.0.0</Version>
154: <Time>2013-10-15T16:58:10.8720445+08:00</Time>
155: </SmartFile>
156: <SmartFile>
157: <FileName>EAS.OrmDesigner.exe.config</FileName>
158: <Time>2012-01-07T11:28:39.2362631+08:00</Time>
159: </SmartFile>
160: <SmartFile>
161: <FileName>EAS.Report.Controls.dll</FileName>
162: <Version>3.0.0.0</Version>
163: <Time>2013-10-15T17:00:11.6179508+08:00</Time>
164: </SmartFile>
165: <SmartFile>
166: <FileName>EAS.SmartUpdater.exe</FileName>
167: <Version>1.0.0.0</Version>
168: <Time>2013-10-15T16:59:54.662981+08:00</Time>
169: </SmartFile>
170: <SmartFile>
171: <FileName>EAS.SOA.Monitor.exe</FileName>
172: <Version>1.0.0.0</Version>
173: <Time>2013-10-15T17:00:20.4044533+08:00</Time>
174: </SmartFile>
175: <SmartFile>
176: <FileName>EAS.ThirdParty.Controls.dll</FileName>
177: <Version>1.0.0.0</Version>
178: <Time>2013-10-12T19:49:55.311+08:00</Time>
179: </SmartFile>
180: <SmartFile>
181: <FileName>EAS.WinClient.dll</FileName>
182: <Version>5.1.0.0</Version>
183: <Time>2013-10-15T17:00:24.8407071+08:00</Time>
184: </SmartFile>
185: <SmartFile>
186: <FileName>EAS.WinClient.Start.exe</FileName>
187: <Version>5.0.0.0</Version>
188: <Time>2013-10-15T16:59:14.0236565+08:00</Time>
189: </SmartFile>
190: <SmartFile>
191: <FileName>EAS.WinClient.Start.exe.config</FileName>
192: <Time>2013-10-15T21:20:03.86277+08:00</Time>
193: </SmartFile>
194: <SmartFile>
195: <FileName>EAS.Windows.dll</FileName>
196: <Version>5.0.0.0</Version>
197: <Time>2013-10-15T17:00:30.9600571+08:00</Time>
198: </SmartFile>
199: <SmartFile>
200: <FileName>EAS.Wpf.Controls.dll</FileName>
201: <Version>1.0.0.0</Version>
202: <Time>2013-10-15T17:00:38.075464+08:00</Time>
203: </SmartFile>
204: <SmartFile>
205: <FileName>grdes50.dll</FileName>
206: <Version>5, 8, 13, 620</Version>
207: <Time>2013-06-24T23:11:32+08:00</Time>
208: </SmartFile>
209: <SmartFile>
210: <FileName>gregn50.dll</FileName>
211: <Version>5, 8, 13, 620</Version>
212: <Time>2013-06-24T23:10:26+08:00</Time>
213: </SmartFile>
214: <SmartFile>
215: <FileName>ICSharpCode.AvalonEdit.dll</FileName>
216: <Version>4.3.1.9429</Version>
217: <Time>2013-10-12T19:50:15.045+08:00</Time>
218: </SmartFile>
219: <SmartFile>
220: <FileName>Interop.grdesLib.dll</FileName>
221: <Version>5.0.0.0</Version>
222: <Time>2013-10-12T19:50:01.56+08:00</Time>
223: </SmartFile>
224: <SmartFile>
225: <FileName>Interop.grproLib.dll</FileName>
226: <Version>5.0.0.0</Version>
227: <Time>2013-10-12T19:50:02.088+08:00</Time>
228: </SmartFile>
229: <SmartFile>
230: <FileName>itextsharp.dll</FileName>
231: <Version>4.1.2.0</Version>
232: <Time>2011-04-19T10:03:14+08:00</Time>
233: </SmartFile>
234: <SmartFile>
235: <FileName>lua51.x64.dll</FileName>
236: <Time>2013-09-30T13:25:51.209+08:00</Time>
237: </SmartFile>
238: <SmartFile>
239: <FileName>lua51.x86.dll</FileName>
240: <Time>2013-09-30T13:27:36.369897+08:00</Time>
241: </SmartFile>
242: <SmartFile>
243: <FileName>LuaInterface.x64.dll</FileName>
244: <Version>2.0.4.24313</Version>
245: <Time>2013-09-30T13:30:27.8847071+08:00</Time>
246: </SmartFile>
247: <SmartFile>
248: <FileName>LuaInterface.x86.dll</FileName>
249: <Version>2.0.4.24313</Version>
250: <Time>2013-09-30T13:30:27.8937076+08:00</Time>
251: </SmartFile>
252: <SmartFile>
253: <FileName>Microsoft.Data.ConnectionUI.Dialog.dll</FileName>
254: <Version>8.0.50727.42 (RTM.050727-4200)</Version>
255: <Time>2011-04-19T14:03:22+08:00</Time>
256: </SmartFile>
257: <SmartFile>
258: <FileName>Microsoft.Data.ConnectionUI.dll</FileName>
259: <Version>8.0.50727.42 (RTM.050727-4200)</Version>
260: <Time>2011-04-19T14:03:22+08:00</Time>
261: </SmartFile>
262: <SmartFile>
263: <FileName>Microsoft.XmlNotepad.dll</FileName>
264: <Version>2.5.3145.19740</Version>
265: <Time>2008-08-11T11:58:04+08:00</Time>
266: </SmartFile>
267: <SmartFile>
268: <FileName>MongoDB.dll</FileName>
269: <Version>0.90.0.1</Version>
270: <Time>2012-03-16T19:11:12.6696083+08:00</Time>
271: </SmartFile>
272: <SmartFile>
273: <FileName>MySql.Data.dll</FileName>
274: <Version>5.0.9.0</Version>
275: <Time>2008-04-14T12:04:28+08:00</Time>
276: </SmartFile>
277: <SmartFile>
278: <FileName>NetronGraphLib.dll</FileName>
279: <Version>2.2.3328.30433</Version>
280: <Time>2009-02-10T16:54:28+08:00</Time>
281: </SmartFile>
282: <SmartFile>
283: <FileName>RdlDesigner.dll</FileName>
284: <Version>3.9.7.0</Version>
285: <Time>2013-10-12T19:50:00.225+08:00</Time>
286: </SmartFile>
287: <SmartFile>
288: <FileName>RdlEngine.dll</FileName>
289: <Version>3.9.7.0</Version>
290: <Time>2013-10-12T19:49:53.522+08:00</Time>
291: </SmartFile>
292: <SmartFile>
293: <FileName>RdlViewer.dll</FileName>
294: <Version>3.9.6.0</Version>
295: <Time>2013-10-12T19:49:56.182+08:00</Time>
296: </SmartFile>
297: <SmartFile>
298: <FileName>System.Data.SQLite.DLL</FileName>
299: <Version>1.0.66.0</Version>
300: <Time>2010-04-18T13:34:12+08:00</Time>
301: </SmartFile>
302: <SmartFile>
303: <FileName>System.Workflow.Activities.dll</FileName>
304: <Version>4.0.30319.1 (RTMRel.030319-0100)</Version>
305: <Time>2010-03-18T19:31:26+08:00</Time>
306: </SmartFile>
307: <SmartFile>
308: <FileName>System.Workflow.ComponentModel.dll</FileName>
309: <Version>4.0.30319.1 (RTMRel.030319-0100)</Version>
310: <Time>2010-03-18T19:31:26+08:00</Time>
311: </SmartFile>
312: <SmartFile>
313: <FileName>System.Workflow.Runtime.dll</FileName>
314: <Version>4.0.30319.1 (RTMRel.030319-0100)</Version>
315: <Time>2010-03-18T19:31:26+08:00</Time>
316: </SmartFile>
317: <SmartFile>
318: <FileName>update.ini</FileName>
319: <Time>2013-10-15T21:32:33.0976238+08:00</Time>
320: </SmartFile>
321: <SmartFile>
322: <FileName>WF.Demo.DAL.dll</FileName>
323: <Version>1.0.0.0</Version>
324: <Time>2013-10-12T19:49:57.9107211+08:00</Time>
325: </SmartFile>
326: <SmartFile>
327: <FileName>WF.Demo.UI.dll</FileName>
328: <Version>1.0.0.0</Version>
329: <Time>2013-10-12T19:50:49.1896541+08:00</Time>
330: </SmartFile>
331: </Files>
332: </SmartConfig>
”SmartUpdate.xml“文件为平台的升级配置文件,其本质是存储一个文件及其最后修改时间的一个清单,客户端也持有这么一份清单,客户端会依据自己持有的清单与服务器上的清单比对以判定需要升级更新那些文件。
”appServer\xclient”为AgileEAS.NET SOA 中间件的服务端升级目录,这个路径是不能更改的,在AgileEAS.NET SOA 中间件有服务设计之中更新了硬性的规定,其中”appServer\xclient\files”目录其本质就是客户端的最新复制。
当我们完成以上配置之后,我们来验证一个自动升级是否可以使用,我们把”appServer\xclient\files”复制到其他地方,比如我们复制到“D:\”并重命名为”d:\eas.client”,如下图:
然后我们运行“d:\eas.client\eas.winclient.start.exe”,系统有如下提示:
我们点击“确定”将会启动升级程序进行升级:
升级完成之后点击“关闭”,系统将会自己启动“d:\eas.client\eas.winclient.start.exe”,打开登录窗口:
输入用户:Administrator密码:sa,点击登录,打开主界面:
六、联系我们
为了完善、改进和推广AgileEAS.NET而成立了敏捷软件工程实验室,是一家研究、推广和发展新技术,并致力于提供具有自主知识产权的业务基础平台软件,以及基于业务基础平台了开发的管理软件的专业软件提供商。主要业务是为客户提供软件企业研发管理解决方案、企业管理软件开发,以及相关的技术支持,管理及技术咨询与培训业务。
AgileEAS.NET平台自2004年秋呱呱落地一来,我就一直在逐步完善和改进,也被应用于保险、医疗、电子商务、房地产、铁路、教育等多个应用,但一直都是以我个人在推广,2010年因为我辞职休息,我就想到把AgileEAS.NET推向市场,让更多的人使用。
技术团队成员都是合作多年的老朋友,因为这个平台是免费的,我们的营运开支主要靠为客户提供咨询服务所得,我们都是因为程序员的那种理想与信念坚持,在此我感谢一起奋斗的朋友和一直支持我们工作的客户、朋友。
AgileEAS.NET网站:http://www.agileeas.net
官方博客:http://eastjade.cnblogs.com
github:https://github.com/agilelab/eas
QQ:47920381
AgileEAS.NET QQ群:
113723486(AgileEAS SOA 平台)/上限1000人
199463175(AgileEAS SOA 交流)/上限1000人
120661978(AgileEAS.NET 平台交流)/上限1000人
212867943(AgileEAS.NET研究)/上限500人
147168308(AgileEAS.NET应用)/上限500人
172060626(深度AgileEAS.NET平台)/上限500人
116773358(AgileEAS.NET 平台)/上限500人
125643764(AgileEAS.NET探讨)/上限500人
193486983(AgileEAS.NET 平台)/上限500人
邮件:james@agilelab.cn,mail.james@qq.com,
电话:18629261335。