Web 服务和 SOA 之前是什么?
我对分布式、协作式、跨组织编程范式的历史感兴趣 - Web 服务和 SOA 现在已经成为事实,但之前发生了什么? SOA 取代了哪些模型?
谢谢
I'm interested in the history of distributed, collaborative, cross-organisational programming paradigms - web services and SOA are de-facto now, but what came before? What models have been superceded by SOA?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
嗯,我想有 RPC——这实际上就是 SOAP,只是它们没有将数据负载搭载在标准协议(在 SOAP 中是 http)之上。因此,CORBA、DCE-RPC 和 ONC RPC 都做了同样的事情,但只是通过内部网络,而不是通过互联网。
还有 EDI 作为不同实体之间交换数据的“标准”。这实际上是一种定义数据负载的方式(类似于 SOAP 的 XML 部分)。
但这些仍然不是真正的 SOA,它们提供相同的功能,但最大的区别在于人们如何看待使用它们。一旦你可以编写一个机器对机器的“网站”并让不同的机器通过它们相互通信,它就会起飞。例如,您可以在使用 CORBA 之前做到这一点,但它并不那么容易或广为人知。您可以通过以下事实看出这种情况的发生:我们有多个术语实际上用于同一件事 - SOA、SaaS、Web 服务...都是同一件事(但通过“咨询”差异可以赚很多钱;))
Well, I suppose there was RPC - which is really what SOAP is, only they didn't piggy-back the data payload on top of a standard protocol (http in SOAP's case). So CORBA and DCE-RPC and ONC RPC all did the same thing, but only over internal networks, not over the internet.
There was also EDI as a 'standard' for exchanging data between disparate entities. This was effectively a way of defining what the data payload would look like (similar the the XML part of SOAP).
But these are still not SOAs really, they provide the same functionality but the big difference was how people thought of using them. Once you could write a machine-to-machine 'website' and have different machines talk to each other through them, it took off. You could do it before using CORBA, say, but it wasn't as easy or as widely known about. You can tell this has happened by the fact we have several terms used for effectively the same thing - SOA, SaaS, Web Services... all the same thing (but lots of money to be made 'consulting' on the difference ;) )
也许孤岛?
...服务不在整个企业内共享,至少以标准方式共享。这就是使用 BizTalk 等产品的原因:让孤岛通过标准接口相互通信。
Maybe Silos?
...where services are just not shared across an enterprise, at least in a standard way. This is why products like BizTalk are used: to get silos to talk to each other via standard interfaces.
我真的认为您不会发现任何被 SOA 取代的东西。您会发现在组织计算机程序以利用 SOA 类型原则方面已经取得了进展。至于已经相当普遍使用的编程模型,好吧,让我们看看...... CORBA ,RPC,更通用客户端-服务器应用程序。当然,计算机到计算机的通信之前是进程到进程的通信使用各种约定。
SOA 作为一种将大问题分解为小问题然后组合结果的哲学,自从人类开始砌砖而不是建造完整的墙以来就已经被人们所熟知和应用。当然,这大多是隐含的。 SOA 的显式声明真正开始随着 CORBA 的出现而出现,虽然 SOA 独立于 Web 服务,但 HTTP 和 XML 以及随后的 SOAP 的出现确实开始使非专业“服务”的开发变得更容易、更有价值,因此常见的。
I don't really think you'll find anything that's been superceded by SOA. You will find that there's been progress in organizing computer programs to take advantage of the SOA type principles. As for programming models that have been in reasonably common use, well, let's see... CORBA, RPC, more generic client-server applications. Of course, computer-to-computer communications were preceded by process-to-process communication using a wide variety of conventions.
SOA as a philosophy of breaking large problems into smaller ones and then composing the results has been known and applied since humans started making bricks instead of building complete walls. Of course, that was mostly implicit. Explicit statements for SOA really started to come about with CORBA and, while SOA is independent of Web Services, the advent of HTTP and XML, and then SOAP, really started to make development of non-specialized "services" easier, more worthwhile and thus common.
此 pdf 关于分布式的说明计算应该是一本有趣的读物。它是 SOA 之前的版本,可以提供截至该点(1994 年)的历史概况。
我会说分布式对象技术。在它之前远程过程调用。
RPC 是较早的方法之一,并因 Sun 的实现而受到欢迎。著名的用途之一是 NFS(网络文件系统)。
随着面向对象编程变得越来越流行,分布式对象也随之而来。最重要的是 Microsoft DCOM(以及后来的 COM+)以及更广泛的行业范围内的 CORBA。
SOA 是一种分而治之的方法,它严重依赖于服务的概念。这与 CORBA 等人使用的对象不同,也与 REST 中的资源不同。
对象的创建及其生命周期通常由客户端控制。另一方面,假设服务始终由服务器提供。这就是 SOA 不等同于分布式对象的原因之一。
服务也是无状态的,这意味着服务器在考虑对服务请求的响应时不需要查看与客户端交互的历史记录。最初设计 RPC 概念时并没有考虑这一点,因为当时可扩展性并不是那么重要的问题。有趣的是,RPC 的大规模用户确实注意到了可扩展性和无状态性之间的关系。 NFS RFC 明确提到了无状态服务器,但主要关注的是可靠性。不管怎样,无状态性是服务和普通的老式 RPC 之间的主要区别之一。
简而言之,不。我不相信 SOA 从一开始就有修正主义的历史。不仅仅是用 Lisp(或 Perl)编写的宇宙。它也不等同于分而治之或分工。
SOA 作为一个概念诞生于 20 世纪 90 年代的某个时候。与CORBA的发展重叠。确定实际的日期或事件要困难得多,而且对其概念化的说法也有不少。
This pdf A Note on Distributed Computing should be an interesting read. It is pre-SOA and would give an idea of the history up to that point (1994).
I would say distributed object technology. And before it remote procedure calls.
RPC is one of the earlier approaches and gained popularity from the Sun implementation. One of the famous uses is NFS (network file system).
As object oriented programming became more popular, distributed objects followed. Most important was Microsoft DCOM (and later COM+) and, more industry wide, CORBA.
SOA is a divide and conquer approach that is critically dependent on the concept of services. Which is different from objects as used by CORBA et al, as well as being different from resources as in REST.
Objects are created and their lifetime is typically controlled by the client. On the other hand, services are assumed to be always there provided by the server. This is one reason why SOA is not equivalent to distributed objects.
Services are also stateless, which means that the server when considering the response to a service request need not look at the history of interaction with the client. This was not a consideration when originally devising the RPC concept as scalability wasn't such an important issue then. Interestingly, large scale users of RPC did notice the relationship between scalability and statelessness. The NFS RFC explicitly mentions stateless servers, though with reliability as the main concern. Anyway, statelessness is one of the main difference between services and plain old RPC.
In short, no. I don't believe in the revisionist history of SOA being since the dawn of time. Any more than the universe being written in Lisp (or Perl for that matter). Nor is it equivalent to divide and conquer or division of labour.
SOA started as a concept at some point in the nineties. Overlapping with the development of CORBA. It is much harder to pinpoint an actual date or event and there are more than a few claims to the conceptualisation of it.