当前位置: 首页 > 后端技术 > PHP

SOA与API的联动

时间:2023-03-29 20:10:02 PHP

几千年来,通天塔的故事一直是人类面临的一个核心困境。为了交流和交流,我们人类创造了语言,但交流和沟通仍然存在障碍……同一种语言之间的交流,根据语境的不同,还是存在着巨大的鸿沟,更让人头疼的是不同语言之间。在物质文明高度发达、人工智能触手可及的今天,程序员也面临这样的困境。我们的祖先根据当时的技术条件和业务需要,逐渐发展出FORTRAN/COBOL等命令式编程,C/PASCAL等过程式编程,C++/JAVA等面向过程编程。对象编程,然后是面向服务的编程,比如今天的WebService。于是各种异构层出不穷,硬件(CPU和指令集、硬件结构、驱动)、操作系统(不同操作系统的API和开发环境)、数据库(不同的存储和访问格式)各不相同。同理,高级语言依赖于特定的编译器和操作系统API编程,互不兼容,需要开发和运行环境的支持。这种异构性使得各种软件和硬件无法在不同平台上相互通信。再加上网络协议和通信机制的差异,系统之间无法有效集成,就像不同民族之间相互通信一样。.作为一个组织来共同面对挑战是很困难的。虽然语言不同,但人类需要表达的内核是相似的。同样,各种应用系统之间的许多基本功能和结构都是相似的,它们提供的服务和功能也是相似的。每次开发都从头开始是荒谬的,就像每次制造汽车都要重新发明轮子一样。因此,屏蔽各种异构性,实现某种标准的互操作性,实现复用(不用每次都发明轮子),通过松耦合,通过对具体业务的抽象,通过服务表达和业务流程的原子解构来规划整个业务流程,而这个架构就是SOA。-SOA是组织和利用可能处于不同所有权域控制下的分布式系统的范例。打个形象比喻,企业的最终服务就像安排各国厨师准备一桌顶级菜品,需要日本的刺身清酒、法国的鹅肝生蚝、德国的啤酒和猪脚、中国的生鱼片。炒菜,佛跳墙,这样的话,你不需要学习各种语言和厨师交流,你只需要自己安排上菜的顺序,在照片下面写上送货时间他们做的菜,然后交给他们。交给厨师,互相点头确认,然后按时间取菜上菜。每个厨师背后都有自己的系统,就像API背后的应用一样。您安排的服务顺序是流程驱动的。事实上,中国古代四大发明之一的印刷术就是应用SOA思想的典范。在印刷之前,书籍必须手工复制,效率低下,质量不稳定,前后不一。有了排版,发布效率和内容一致性提高了几个数量级!最初的印刷是千篇一律的,也就是“复用”,就像软件一样,通过对组件的封装,达到在不同场合重复使用的“复用”效果。然而,铅版印刷是一种紧耦合。一个版型只能打印某本书的某页,其中的特定“字”不能重复使用,就像微软VB在软件技术上开发的com+组件只能在windows环境下使用一样。它不能与JAVA开发的EJB组件重用和编排,因为它们与开发环境和运行环境紧密耦合。如果要在UNIX环境下使用,就必须重新开发,相当于换了本书的版本。然后活字印刷彻底解决了这个问题。文字和排版是松耦合的,一本书的排版是通过排版来实现的……这又是一个数量级的跳跃——就像我们可以把服务一个一个封装起来一样。API,通过服务编排的API联动实现业务流程。现在流行的所谓微服务,就是单体移动式,通过SOA连接成文章(应用)。说到这里,就不得不提到schema。图式就像是活字印刷的每一个字都应该有的固定规范,比如字体、字号、线宽等等,没有这个规范,字有的大,有的小,印刷就乱七八糟。微服务领域的现状:很多所谓的SOA解决方案不提供schema数据规范约束。这样的解决方案并没有系统地解决问题,只是伪SOA。综上所述,SOA将复杂的业务系统分割成一个个独立的小系统,每个系统称为一个服务,对外提供一套独立的API,然后通过API联动组织一个完整的业务。在每个企业的早期,通常是一张或几张数据库表来完成业务,就像大多数小企业一样。但是,当企业业务系统的复杂性扩展到一定规模时,就需要考虑如何将各个子系统按照独立的服务进行分离,否则以后会变得一团糟,根本无法管理。这种联动可以根据业务流程的要求一步步连接起来,提供了无限的复杂性。这是企业内部的情况。那么,在外面呢?现在各个云服务厂商也有无数的API,每一个都可以看作是一个独立的服务。但如果这些独立的服务也连接在一起,就可以一个一个地创建全新的应用程序。例如:有三个独立的单元,第一个单元是当地的卫生系统,它的数据库存储了当地某个人的医疗保险记录;第二个单位是医院,它的数据库存储了某个人在医院的所有病历;第三个单位是保险公司,它的数据库存储着某个人的保险记录。本来,他们的系统互不相关。通过SOAAPI的联动,可以非常方便的根据一定的条件从上述子系统中获取数据,组织一个完整的新的业务流程。比如某人之前参加过社保和医疗保险,最近一年看病次数不超过5次,同时没有在保险公司购买过任何医疗保险在过去的三年里,那么他可以给这个人提供50万的医疗保险,否则就少或者拒绝投保等等……可见API联动的想象力是无限的,但前提是开放的!因为每一个API就像一个音符,如果你把它联系起来,它就可以形成一个曲子;如果你是大师,你就能谱写出壮丽的交响曲;如果...您登录到www。apemesh.com体验!