`
yesjavame
  • 浏览: 712688 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

从OLE到SOA,SOA其实很简单!

阅读更多

阿三看到一个非常有兴趣的网页,想把它保存下来,于是,阿三点击"文件->另存为",选择"网页,全部(*.htm,*.html)".

OK,阿三的硬盘上多了一个a.html文件和一个a文件夹,里面保存了这个网页上的所有资源,图片,css,js一大堆.

阿三看着这一大堆文件,想整理又不太方便,于是阿三打电话给Axman,"大哥,我能不能把当前网页保存为一个文件又能显示

原来的效果啊?"

Axman晕了半天,没敢吱声,心想这世上竟然有人能笨到这样,也算没白活了.但没敢说出来,因为Axman欠了阿三几万块钱,所以

阿三再笨,一有问题Axman就会马上就会给他解答.于是Axman那种冷艳的来自于原古冰河纪的声音在电话另一端响起:

"阿三啊,你应该这样,文件->另存为,选择Web档案,单一文件(*.mht),这样就会存为一个复合文档".

"啊,大哥,原来这样啊,复合文档是不是就是多种格式的文档被压在一起的啊?"

"是啊,这样浏览器解释时就可以把复合文档分解开来重新显示".

"啊,我知道了,Word也是这样".

"轰!",Axman晕倒时,激起千重浪~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

"那叫结构化文档,算了跟你说你也不懂."

边上Axman养了多年的浣熊多多不停地跳来跳去,这家伙的聪灵程度不可小视,几年下来写个小程序已经不在话下,加上聪明好学,对什么都

非常好奇,深得Axman的宠爱.

多多听了阿三和Axman的对话,不住好奇地问道:"主人,什么是复合文档,什么是结构话文档呢"?

Axman换了一种慈祥的语气,缓缓道来.......

复合文档就是在一个文档中以设定的boundary来分隔多个文档,不同类型的文档在以boundary为分隔符的区域内以特定方式编码为可视

的文本文件,在应用程序解释复合文档时再根据boundary和编码规则还原成多种文档然后由同一应用程序解释.

但是复合文档有一个缺点就是不能被多个应用程序同时打开,而且一般而言可写性极差,因为事实上它是被编码后以文本形式顺序存储的,

所以当一个应用将该档载入内存后,如果其它应用程序再重写其中的内容,两个应用程序访问的内容就会发生冲突.

而结构化文档从存储模型上而言,类似于目录形式,在目录中可以有子目录和文件,在结构化文档中叫子存储和流.这种存储形式最大的好处

就是不同应用程序可以同时访问同一结构化文档的不同部分,就象访问同一个文件系统中不同目录下的文件一样不会发生任何冲突.

多多听得似懂非懂,眨眨眼睛又问:那它和您要说的OLE有什么联系呢?

结构化文档的概念才会有后来的OLE的出现,在此基础才有组件,从local CALL到RPC,到SOA,这些技术的出现都因为有解决结构化文档

的初衷.MS office在这个历史发展中起着不可磨灭的伟大作用.

最先,MS的一批牛人开发了MS WORD这个东西,它的功能性和易用性一下子把中国流行了十多年的WPS踢出了峨眉山顶,关且从此再也没

有爬起来过.这批牛人不仅有牛的技术,更有牛的理念,这一点WPS连提鞋的水平都不能比.他们在设计出WORD的同时,还同时设计出excel,

powerpoint等office套件,最关键的是,他们成功地解决了在套件中每个应用程序之间的功能调用.

比如在一个word文档中,如果要插入excel表格,一般人的思想就是把电子表格的逻辑COPY到WORD中,也就是解释Wrod中必须有解释电子

表格的功能代码.但MS的牛人们并没有这么做,而是利用结构化文档的功能将电子表格存为doc文件中的一个子存储,并在其中存储了用什么

应用程序来解释的一段编码,在windows中csid,根据它就能从注册表中找到要解释这个子存储中的流的应用程序.这样其实结构化文档可以

存储任何其它应用程序能处理的内容.

这样,具有单一功能的"组件"(这时还没有叫组件,但我现在就提前用组件这个词,因为当前叫什么我也不知道),就可以被其它应用程序多次重复

地调用,使单个组件能够组成具有复杂功能的系统.MS的牛人开始把多个应用不断地用local CALL方式调用其它组件的模型修改成组件服务

模型,即把有某个功能的组件发布成服务,其它应用程序要调用组件的功能,只要向这个系统服务提供相应的参数就行了,而应用程序本身根本

不必关心它所存储和访问的子存储是什么内容,以及如何处理.要做的是仅仅向组件提供基础的存诸访问API环境即基础输入输出.组件自身就

可以完全处理应用程序指定要处理的内容.

虽然OLE最后被发展成COM,COM+,REMOTING,但最初它确实是为了解决office套件中功能的互调用的.把功能相对完善,稳定且被多次访问

的部分独立出来发布为服务.加上对服务访问的协议和控制,就演变成了组件模式.

组件模型的改变功能的调用边界从的locall API CALL变成了异构访问.举个最简单的例子,操作系统命令如果单单实现一段程序,那么它只能被

以API方式去连结,但系统命令通过shell这个容器被发布成了一个服务,那么它在系统中可就以被多种能进行shell调用的编程语言所调用.而完成

相同的功能,实上这就是弱化模型的组件服务.

多多忍不住拍手称赞,太好了,太好了,这样以后大家都方便了.

Axman摸了摸多多的头:"多多,你太善良了,事实并不象你想的那样."

这世界就是如此,任何事情都具有相对性,人类社会中,有些人本来就是一个P(person),但一旦给了他们一个特定的名称,比如把他们叫官员时,让他

们提供相应的服务就不是寻么容易的事了.

"组件"本质上只是完成些特定功能的代码,但现在它的位置升到了组件,要想让它服务,你就要遵循一定的协议,这些协议规定了访问组件的很多接口.

在MS这个领土上,即使是MS家族的贵族成员VC/VB要访问这些组件也要通过IUnknow,IDispatch这些接口,加上令有头晕的UUID之类不是人能理解

的参数之类复杂的关系和手续才能让"组件"为你服务.在java领土上你通过复杂的EJB访问协议来让组件为你服务.其复杂程度不是你能想象的.比如

我上次要去交480块钱的车船税,却要以请一天假(扣掉1500大洋)的代价来向通州地税这个组件请求服务,因为这个组件周末不上班.

后来组件调用者不乐意了,他们向"组织"提意见了,要求提供功能的组件应该有统一的方便的调用接口,我们只要向这个接口提供足够的信息,组件就

应该提供服务,这些接口不能耦合于某一特定环境,能接受外国人,本地人这些不同类型的人的相同请求.于是"组织"让组件们把自己包装成WEB服务.

任何调用者只要通过http连结发送定义好的文档,组件就提供服务.组织发现有一种叫SOAP的东西正好能完成这样的通讯,而不同国家不同种类的

调用者也乐意使用这样协议,于是大家都过统一的WEB服务模型来向请求服务,至于他是如何提供服务的调用者并不关心,这下一来确实方便多了.

SOA从本质上并不复杂,它只是组件调用方式网络化的一种设计思想,并不是指具体的实现技术.在此之前已经很多"概念"实现了这个功能,把一定功能的

组件加上网络的功能,这可以把调用的边界从同一机器扩展到机器间调用,这从设计上其实扩大通用的功能共享范围.加上调用协议的控制使调用更新方

便灵活.这种"方便为民的思想"确实不仅给调用者带来方便,而且给服务提供者也带来了方便,同一套组件作为WEB服务方式发布可以为所有能访问该

WEB服务器的人提供服务(这里不涉及安全讨论),从"组织"的观点看提了机构的工作效率,而且得到调用者的好评,于是"组织"把这种模式提高为"为人民服务"

的思想,英文名就叫"SOA".我们以前设计系统是以功能为着眼点,用户要什么我们就给什么,现在,我们以服务为主,我们有很多专业的服务队伍发布在多个

服务器上,当你需要服务时就来访问我们.这就是SOA的本质.

Axman回头看了看多多,多多已经流着口水要打酣了......................

几句重要的话:

SOA是一种设计思想,Web Service是SOA的一种实现手段.(意味着你可以不用Web Service来实现SOA,只要你的架构符合SOA思想)

SOA不是灵丹妙药,不是所有系统架构都适合SOA的,比如无远程调用和分布式应用的桌面应用系统,这样的系统使用SOA的唯一好处就是让你的系统变慢.

SOA是早已存在的思想,只是近来又被一些厂商拿出来包装一下,所以它是经济产物而不是技术产物.

分享到:
评论

相关推荐

    OLE高级编程

    通过OLE,一个程序可以嵌入或链接到另一个程序的对象,实现数据的即时更新和交互性。 《Inside OLE 2nd Edition》是关于OLE技术的经典著作,由微软的专家Steve Mcconnell撰写。这本书深入浅出地介绍了OLE 2.0的高级...

    Android组件模型评析(上)--孟岩 来自程序员杂志200801

    回顾历史,组件技术的发展经历了从OLE到COM,再到DCOM、CORBA、J2EE(包含J2EE中的JBOSS,简称JB),以及后来的SOA(Service-Oriented Architecture)。这些技术都是为了实现软件服务的复用和组合,以满足不断变化的...

    Webole管理系统

    此外,考虑到企业级系统的复杂性,Webole很可能还采用了服务化(SOA,Service-Oriented Architecture)或微服务(Microservices)架构,这样可以将大型系统拆分为多个小型、独立的服务,每个服务都能独立部署和扩展...

    基于物联网的煤矿可视化系统研究

    数据处理系统是关键组成部分,它接收从井下采集的数据信息,通过OPC功能模块和以太网传递到三维功能模块。在这个阶段,数据挖掘和态势分析得以执行,然后通过三维展示将复杂的信息以直观的方式呈现出来,帮助管理...

    opc入门资料附简单实例代码

    OPC(OLE for Process Control)是工业自动化领域中数据交换的标准接口,它允许不同厂商的软件和硬件系统之间进行通信。这个标准最初由Microsoft提出,目的是解决Windows环境下自动化设备之间的互操作性问题。本篇...

    opcda-utgard-demo

    此外,从“opc”这一标签可以联想到OPC技术的其他方面,比如OPC XML-DA、OPC .NET等,这表明演示可能涉及OPC家族的其他成员或者它可能是一个跨平台的示例,因为OPC UA支持包括.NET在内的多种开发平台。 由于提供的...

    Matrikon 一款优秀的OPC UA测试软件,亲测可用!

    OPC(OLE for Process Control)是一种工业通信标准,旨在实现不同制造商的自动化设备和系统之间的数据交换。随着技术的发展,OPC统一架构(OPC UA)应运而生,它是一种基于服务导向架构(SOA)的平台无关协议,旨在...

    OPC采集程序.rar

    OPC(OLE for Process Control)是工业自动化领域中一种广泛使用的接口技术,它允许不同的软件应用之间进行数据交换。在“OPC采集程序.rar”这个压缩包中,我们推测包含了一个用于从OPC服务器获取数据的采集程序。...

    SCM,ERP与CRM系统集成技术.pptx

    此外,还有DLL(Dynamic Link Library)动态链接库,OLE(Object Linking and Embedding)对象连接与嵌入,以及DCOM(Distributed Component Object Model)分布式组件对象模型,这些技术都是微软平台下实现系统集成...

    OPC DA/UA的client模拟器和server模拟器

    MatrikonOPC产品线包括各种OPC服务器软件,能够支持从简单的数据采集到复杂的数据集成的多种需求。MatrikonOPC软件不仅支持OPC DA和OPC UA标准,还支持其他多种工业通讯协议,比如Modbus、Ethernet/IP等。 一个典型...

    C# 写的OPC转发源代码

    标题中的"C#写的OPC转发源代码"表明这是一个使用C#编程语言编写的OPC(OLE for Process Control)服务器或客户端应用,用于数据转发。OPC是工业自动化领域的一个标准接口,它允许不同厂商的软件和硬件之间进行数据...

    《OPC统一架构》中文版

    随着时间的发展,OPC已经从早期的COM/DCOM技术演进到现在的OPC UA,它基于服务导向架构(SOA),支持多种操作系统和网络环境,不再局限于Windows平台。 OPC UA的核心特性包括: 1. **安全性**:通过内置的安全机制...

    Adabas SQL Gateway.ppt

    2. Adabas SQL Gateway Client:客户端组件,允许桌面应用程序,如Crystal Reports和Business Objects,以及通过.NET和OLE DB环境的应用程序,通过标准SQL语句连接到Adabas。 3. Java Server:处理来自Java应用程序...

    电信设备-一种OPC服务器通信系统.zip

    4. 数据交换流程:描述从电信设备收集数据到OPC服务器,再到上层分析应用的过程,包括数据过滤、转换和实时更新机制。 5. 安全性和可靠性:OPC服务器如何确保数据传输的安全性,防止未授权访问,并提供故障恢复和...

    OPC协议相关参考文档

    OPC(OLE for Process Control)协议是工业自动化领域中用于数据交换的标准接口,它使得不同制造商的设备和软件能够相互通信。OPC协议最初由OPC基金会制定,旨在简化工业控制系统之间的数据交换,提高互操作性和兼容...

    opc 全套DLL下载

    OPC(OLE for Process Control)是微软提出的一种标准接口技术,用于工业自动化系统中的数据交换。这个“opc 全套DLL下载”很可能包含了实现OPC规范的各种动态链接库(DLL)文件,这些文件通常由软件开发者使用,...

    欧姆龙运动控制系统NX/NJ控制器通过OPC与上位机通讯资料

    在现代制造业中,与上位机的通讯是不可或缺的一环,而OPC(OLE for Process Control)技术就是实现这种通讯的关键。本资料主要探讨的是如何利用OPC UA(Unified Architecture)协议,使得欧姆龙NX/NJ控制器与上位机...

    OPC综述

    OPC(OLE for Process Control)是过程控制领域中一种数据交换的标准,它允许不同厂商的自动化设备和软件之间进行通信。这项技术起源于微软的OLE(Object Linking and Embedding)技术,旨在解决工业自动化系统中...

    OPC UA SDK 1.00.132 (MSI)

    OPC UA不仅继承了早期OPC(OLE for Process Control)技术的优点,如数据交换的高效性,还引入了服务导向架构(SOA)和安全传输层(TLS)。它提供了一种跨平台、语言无关的接口,允许不同厂商的设备和系统之间无缝...

    OPC client c++

    OPC(OLE for Process Control)是一种在工业自动化领域中用于数据交换的标准接口,它允许不同制造商的硬件和软件系统之间进行通信。C++是编程语言的一种,被广泛应用于开发包括工业自动化在内的各种应用。当你提到...

Global site tag (gtag.js) - Google Analytics