在十多年的时间里,我们已经成功地实现了许多使用版本3的系统和更早期版本2.x和1.x、 但即使是最新版本,我们也看到了很大的改进空间。
代码是基于项目/客户机进行分支的,没有整合到单个代码库中,一个解决方案可能只适用于单个客户机,而版本控制系统中有很多解决方案。这种情况限制了我们通过组件/层、固定数据模式和断开连接的解决方案改进系统的能力,这些解决方案具有自己的层和组件,如web2用户界面、中间件、手持代码和数据处理:
· 从底层数据层为解决方案固定了数据模型和模式,这使得该解决方案无法再用于具有不同数据模型的其他应用程序,甚至是微小差异的应用程序
· 过时的用户界面,我们可以感觉到系统很旧,不适用于web 应用程序。.
· 断开连接的存储库限制了系统的增长,如果在解决方案中添加了新功能,其他解决方案保持不变
· 缺陷修复只能针对单个解决方案,必须为所有解决方案填充代码
· 所有解决方案的质量保证都是不可能的
· 除非此人之前处理过类似项目,否则无法确定使用新项目的解决方案
· 与整合系统相比,所有解决方案的文档都太多了
出于业务原因,基于项目的系统展示了一种不可扩展、肤浅的解决方案,而且从来没有企业系统这样做过。它很难管理、理解、修复和有效地扩展。
我们将新的RFID系统4.0命名为GAO BLE、RFID和IoT(物联网)引擎。如果用一句话来说,新系统是一个整合的系统,一个提供所有RFID解决方案的单一系统,包括BLE技术。
我们的目标是提供一个可扩展的解决方案,可以轻松满足新的业务需求和技术变化,以及垂直和水平的系统扩展。基本上,这将使我们能够以时间效率、更低的成本和更好的质量在市场上竞争.
版本3中大约有30个解决方案(或多或少),几乎每个新项目都需要复制旧代码并在其上进行更改。第4版我们不应该像那样继续前进。相反,我们应该为核心RFID系统构建一个可以通过单一解决方案扩展的系统,该系统具有以下关键概念:
1) 除了添加新代码以满足新的业务需求和硬件/设备接口(设备驱动程序等)外,系统应可扩展和配置业务模块、读卡器设备和各种操作模型,而不涉及核心系统代码/架构。设计目标是使系统能够在不与业务逻辑深度耦合的情况下与标签通信,并能够基于可配置的业务模块和可插拔设备解释各种标签活动。
2) 我们应该利用最近(过去10年)的软件进步,如HTML5、JavaScript、TypeScript/Angular、NoSQL、VPN等,来应对业务和技术的动态性和分布式/云性质的挑战。.
3) 版本3代码提供了一个测试过的设备驱动程序和业务模块列表,我们应该将这些测试过的代码迁移到版本4中。
系统将尽可能多地重用版本3代码,从版本3的几个解决方案开始,中间件和web服务器组件将保持相同的性能。Net平台。网络用户界面将引入谷歌Angular,使GUI现代化。中间件将合并版本3设备驱动程序和业务模块,以形成一个具有以下设计细节的整合企业系统:
1) NoSQL
除了使用SQL server管理结构化数据(如标签、阅读器)外,新系统还将使用NoSQL数据库管理半结构化和动态/非结构化数据。NoSQL server的使用将使我们能够处理数据模式的动态性质,简化并重新激活我们的系统,避免数据和业务逻辑之间的直接耦合,并避免不同数据模式的代码更改,这是使用NoSQL的关键概念
为了提供一个稳定的解决方案,首先我们需要有一个稳定的数据层,这是版本4的关键。
2) Data Synchronization 数据同步
我们已经看到了多站点部署需要同步数据,以及使用MS SQL Server技术配置数据同步的困难。此外,我们很少有项目通过代码更改实现数据同步。这个问题的根源在于部署在各个位置的数据库服务器。
如今,新技术为解决这一挑战提供了许多有价值的选择,我认为我们应该使用VPN技术,因为它使用简单,成本低或没有成本,具有高级别或军事级别的安全性。这种方法可用于版本3和版本4的未来多站点部署。无需更改中间件中的代码,通过VPN直接连接到同一数据库。
我们应该确定一个VPN技术供应商作为我们的首选供应商,也有一些免费的VPN,但我们需要找到一个适合我们的系统。
基于Angular的web用户界面的广泛接受已成为评估web应用程序的行业标准,我们将使用Angular框架构建真正的Web2应用程序。除了提供模型化的用户界面之外,Angular还可以在编译时检测错误,因为TypeScript是一种静态类型的语言,而不是像JavaScript那样的运行时语言。
该系统将提供以下功能:
1) 用于管理系统用户、标签、位置、读卡器和天线配置的Web浏览器用户界面
2) 用于资产管理、人员跟踪等应用程序的CRUD操作的Web浏览器用户界面。该界面应能够定义特定于应用程序的元数据、将用于目标应用程序的模式
3) 报表模块为固定数据表提供报表,为动态和半结构化数据提供报表
4) REST服务——具有用于稳定实体的固定CRUD API,以及用于特定于业务的API的可插拔模块。应该为潜在的集成商发布REST API
5) 移动设备提供REST APIs
6) 用户界面组件使用谷歌Angular技术
7) 我们应该只为多站点环境部署一个web服务器,而不是按照当前版本3的做法部署每个站点
8) 取消IIS作为web服务器,将使用本机Windows服务来处理web用户请求/响应,REST API,还为发布者和订阅者功能提供实时监控功能,作为当前信号器调用
中间件组件的核心功能与版本3相同,提供了基础功能
1) 为不同的客户需求加载业务模块,2)为不同的读卡器加载设备驱动程序,3)将驱动程序RFID标签活动直接发送到活动的业务模块。
对于版本4,我们可以使用相同的版本3,或者至少从最稳定的版本3代码开始。
中间件可以在没有BLE、RFID和物联网服务器的情况下远程部署,只要它可以本地或通过VPN连接到它和数据库服务器。
手持设备代码在不同的平台上运行,比如Android。iOS等——我们应该保留当前代码,将现有REST API集成到web组件中的版本4 REST API中。
我们应该拥有版本3提供的所有功能。并将当前代码整合到新系统中,该组件的主要工作将是与新的数据层REST API接口。
我们可能需要迁移一些3版业务模块,它们是:
Name |
Subversion URL |
Description |
|
|
|
|
|
|
每个RFID固定读卡器都有一个唯一的驱动程序代码,用于与RFID中间件通信。大多数驱动程序代码应该从版本3继承。 因为它只与中间件组件通信,与数据层没有直接耦合
驱动程序将在版本4中提供:
Name |
SKU No. |
Subversion URL |
Description |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
下面的系统文图提供了运行时系统组件及其耦合的高级说明。组件连接可能位于LAN、Internet和VPN上,具体取决于系统性能、数据安全性和复杂性。许多企业已经开发了与GAO-BLE、RFID和物联网中间件直接局域网连接的读卡器,这些中间件提供了高系统性能、可靠性和安全性,而许多其他企业在云端部署了我们的解决方案,将固定读卡器连接到云环境中的GAO-BLE、RFID和物联网服务器。
GAO BLE, RFID & IoT系统文图
GAO BLE, RFID & IoT系统包括中间件、Web服务器、读卡器应用程序和手持读卡器应用程序
GAO BLE, RFID & IoT 中间件是一种基于Windows的服务,为RFID读卡器、业务模块和数据同步提供运行时的接口,以便在读卡器应用程序和手持读卡器上进行嵌入式通信。中间件提供了一个业务模块和RFID阅读器驱动程序库,如下所述:
GAO BLE, RFID & IoT 系统组件和层
· GAO BLE, RFID & IoT Middleware– 基于Windows的服务,为RFID固定读卡器、业务模块和数据同步提供运行时的接口,该模块在运行时直接与读卡器驱动程序和业务模块链接。中间件连接到局域网或VPN环境中的数据库服务器