Java和SOA的面试总结和个人理解

鉴于面向服务比较抽象,本文的目的主要是以便于理解的方式从一个角度去剖SOA。

首先讲一下个人对Java语言的一些理解。

Java不单单是面向对象程序设计语言、运用虚拟机技术、使用指针原理但隐藏指针、是用单一继承、自动垃圾回收机制(但是像IO流,相当于放出去,不方便回收)等等,最为核心重要的一点就是Java的可移植性,比如:它使得我们在window环境下的程序,在Linux下也能运行稳定,并且正是由于这一特性,使得Java能够在各种网络协议中游刃有余地进行穿梭。这就使得Java在消息和网络应用的领域有了不可比拟的优势,使得Java更像是一种面向消息和网络的编程语言。

作为后起之秀,Java以另外一些高级编程语言(C++,C#)不可比拟的优势,开创了网络应用编程的辉煌。虽然,C++等一些语言做出的网络应用框架可能一定程度上比Java还要好,但是这毕竟是属于企业级的集成,并不能很好的对外开放。所以基于Java的很多开源社区,秉承Java的优点,分别开发出了Struts,Hibernate,spring等等一系列优秀的应用框架,并且用户可以方便的根据自己的需求改动框架,使得Java比C++在网络应用方便范围更广。

其实,面向服务与你是用什么编程语言没有必然的联系。面向服务是一个企业级的框架和解决方案。我看了几本关于SOA的书,感觉介绍的都很抽象,如何来理解呢?

举个例子来说-----工厂销售管理。有库存管理,供应商管理,生产流水线管理,销售管理,人事管理,配料管理等等。这些子系统的编程语言可谓是五花八门:Java,C,C++,C#,操作系统有Linux,Windows,uC/OS等等。比如,当库存预警时,需要寻找相应的供应商,而这个供应商又由于各种原因不能给我们按时供货。此时,就需要一个能够协调各部门之间协同工作的媒介,于是SOA便有了发挥的空间。各个子系统将数据传输给服务总线,通过SOA框架的运用得到完美的解决方案,再反馈给客户端。例如:用户手机中有一张大概为2兆的相片,现在用户希望将图片渲染,而这一个计算工作量对于手机来说不仅内存开销巨大,而且要浪费掉大量的时间,这显然不能被客户接受。有了SOA的解决方案后,用户就可以把相片上传到相应服务器,此时,如果服务器不能有效解决问题的话,便将相片发送到云计算中心,通过C++程序与硬件的高速交互最终将相片完美渲染,最后用户通过服务网络得到在手机上得到处理好的相片。而这一个框架必将包含各种复杂的信息处理模型以及和服务总线进行复杂的数据交互,这也将作为我今后的研究对象。

相关推荐