3.7 可移植性与互操作性
互操作性是指应用程序通过某种标准格式或协议与其他应用程序协同工作的能力。通常,应用程序需要与各种上游系统进行通信以获取数据,或与下游系统通信以提供数据,因此与这些系统建立无缝的通信连接至关重要。
例如,电子商务应用程序需要与供应链管理体系中的其他应用程序协同工作,包括ERP(Enterprise Resource Planning)应用程序,这些应用程序用于记录所有事务,比如运输生命周期管理、运输公司管理、订单管理、仓库管理和劳务管理等。
所有应用程序都应该能够无缝地交换数据,以实现从客户下单到配送交付的端到端功能。无论是医疗保健,还是生产制造或者电信相关的应用程序,都会碰到类似的情况。
解决方案架构师在设计的过程中需要识别和处理系统的各种依赖关系,以设计应用程序的互操作性。可互操作的应用程序可以节省大量成本,因为它可以通过相同的数据格式与依赖方进行通信而不需要任何数据消息传递。每个行业都有其需要了解和遵守的数据交换标准。
通常,对于软件设计来说,架构师可以选择一种主流的格式,例如JSON或XML,作为不同应用程序之间的数据交换格式,以便它们之间互相通信。在现代流行的RESTful API设计和微服务架构中,这两种格式都可以开箱即用。
可移植性使应用程序可以在不同的环境中工作,而无须进行任何更改,或只需进行少量的变更。任何软件应用程序,只有当它能够在各种操作系统和硬件上工作时才能实现更高的易用性。由于技术日新月异,经常会看到新版本的软件开发语言、开发平台和操作系统发布上市。如今,移动应用程序已成为任何系统设计不可或缺的一部分。不仅如此,移动应用程序还需要与主流的移动操作系统平台(例如iOS、Android和Windows)兼容。
在应用程序设计过程中,解决方案架构师需要选择一种可以实现可移植性的技术。例如,如果应用程序需要跨操作系统部署,那么诸如Java之类的编程语言可能是比较好的选择,因为所有的操作系统一般都会支持Java,并且应用程序可以运行在不同的平台上而无须移植。对于移动应用程序来说,架构师可以选择基于JavaScript的语言,例如React Native,它支持跨平台移动应用程序开发。
互操作性丰富了系统的可扩展性,而可移植性则提高了应用程序的易用性。两者都是架构设计的关键属性,如果在解决方案设计阶段没有周全地考虑它们,后续可能会导致成本呈指数级增加。解决方案架构师需要根据行业需求和系统依赖关系仔细斟酌。