如何通过AgileEAS.NET快速搭建属于你的企业应用(二)——智能版本升级和多数据库访问的分布式部署

网友投稿 600 2023-04-03

如何通过AgileEAS.NET快速搭建属于你的企业应用(二)——智能版本升级和多数据库访问的分布式部署

如何通过AgileEAS.NET快速搭建属于你的企业应用(二)——智能版本升级和多数据库访问的分布式部署

又过了一周,又是一周琐碎事,周末闲下来继续这个系列的第二部。

使用AgileEAS框架及辅助开发中间件把你的程序做好了,总要发布啊,由于我做的事winform形式的客户端应用,所以自动更新是必不可少的,顺道的,竟然说的是如何在服务器发布,那就一定要说说分布式通信。

分布式通信的好处自然是很多的,但对我来说,在读取***数据库的时候不用装客户端、访问外单位服务器的时候可以控制访问源这些都是极好的。

步入正题,通过第一篇的介绍,相信各位对于这个框架的用法肯定有了一定的了解,通过orm、form设计器快速的建立一系列的基本模块,组合了一些基础功能,现在,我们需要把你的程序做成安装包,然后通过SmartUpdate实现客户端的自动更新,首先我们看一下上一篇中的一直没用到的关键文件夹 AppServer

这个文件夹就是需要发布在服务器上的全部了,直接拷到你的服务器上吧,看看里面都有些啥

Bin文件夹承载着EAS平台服务端的核心服务,通过这个服务,客户端才能够完成自动更新、分布式通信的功能,服务的开启方法不多说,在药店的案例和帮助pdf中都有详细的描述,这里我们主要看一下下面这个配置文件:

代码如下:

上面的代码中定义了3个数据库连接,大家可以看到,他们分别是默认的MSSql连接,一个HBWL的***数据连接,一个名叫LEV3的***数据连接,在使用的时候,默认的数据库连接可以通过直接使用中间件提供给你的数据查询方式来进行查询,另外两个在使用的时候需要进行ORMDataAccessor的手动指定,代码如下

IDataAccessor da = EAS.Objects.ContainerBuilder.BuilderDefault().GetComponentInstance("DataAccessor3") as IDataAccessor; IOrmAccessor oa = EAS.Objects.ContainerBuilder.BuilderDefault().GetComponentInstance("OrmAccessor3") as IOrmAccessor; public IList DD_JCGYSZLCXList(DateTime dateTimeStart, DateTime dateTimeEnd, string materiel_code, string materiel, string provider) { DataEntityQuery query = DataEntityQuery.Create(); query.DataAccessor = da; query.OrmAccessor = oa; var v = (from item in query where (item.DICTATE_TIME >= dateTimeStart && item.DICTATE_TIME <= dateTimeEnd) && (materiel_code.Trim().Length == 0 || item.MATERIEL_CODE.StartsWith(materiel_code)) && (materiel.Trim().Length == 0 || item.MATERIEL.Contains(materiel)) && (provider.Trim().Length == 0 || item.PROVIDER.Contains(provider)) orderby item.DICTATE_TIME descending select item); return v.ToList(); }

其实,细心的你一定发现了,这个配置文件和你项目中的appstart.config其实是一个类型的文件,它的主要功能就是定义了程序连接数据库的配置信息和服务端的发布端口号之类的东西,直接复制即可(该配置为分布式通信部署的配置)。配置之后就安装服务,win+r建,找到agileeas(服务名),启动,以后如果有新的服务端更新就扔到这个文件夹里即可(粘贴之前停止服务,然后再启动,无需重复安装)。appserver/Bin里面需要放的文件有:Entities类库、Contact接口类库、Service服务类库。

在服务器的xClient更新文件夹和你的安装包中这个配置文件需要把Update值设为1(开启更新),但是你自己的项目中也就是Bin/DotNet4.0中记得改成0,不然你每次调试都会更新,那就没法调试了

最后还剩一个客户端的appConfig的设置,下面直接放出分布式通信的配置文件,如果你不想要分布式通信,就按照上面服务端数据库配置改一下你的客户端appconfig即可。。。

分布式通信的客户端配置如下:

下面看一个分布式访问的例子吧

首先,修改你的GetList()如下,使用ServiceContainer来执行服务端的service,这里注意请把参数传到服务端去,不要再服务端使用linq查询类型。。。也就是DataEntityQuery,这个是不能序列化的哦。。。

public void GetDataList(DateTime dateTimeStart,DateTime dateTimeEnd ,string materiel_code ,string materiel,string provider ) { var query = ServiceContainer.GetService().DD_JCGYSZLCXList(dateTimeStart,dateTimeEnd ,materiel_code ,materiel,provider ); this.vList = query.ToList(); }

接下来是服务端的Service

public IList DD_JCGYSZLCXList(DateTime dateTimeStart, DateTime dateTimeEnd, string materiel_code, string materiel, string provider) { DataEntityQuery query = DataEntityQuery.Create(); query.DataAccessor = da; query.OrmAccessor = oa; var v = (from item in query where (item.DICTATE_TIME >= dateTimeStart && item.DICTATE_TIME <= dateTimeEnd) && (materiel_code.Trim().Length == 0 || item.MATERIEL_CODE.StartsWith(materiel_code)) && (materiel.Trim().Length == 0 || item.MATERIEL.Contains(materiel)) && (provider.Trim().Length == 0 || item.PROVIDER.Contains(provider)) orderby item.DICTATE_TIME descending select item); return v.ToList(); }

这样就可以实现多数据库连接的分布式通信部署了。。。今天总觉的莫名其妙不太会讲话了。。。哪里说的不明白的各位及时跟贴或联系我,我会尽量给各位解答的,要是哪里说的不对欢迎各位大神的批评指正!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:oracle 分布式数据库
下一篇:从NoSQL到NewSQL,谈交易型分布式数据库建设要点
相关文章