在阅读Service Oriented Architecture Principles网站和相应的维基百科article后,我有一个想法:Erlang / OTP平台可以被视为SOA平台,SOA应用程序可以构建在它上面。
唯一的问题是这种系统中每个服务的Service Contract都非常具体:为了在Erlang / OTP中调用服务,Orchestrating层必须通过Erlang消息或调用gen_server进行调用(取决于实施)。
这不会让对Erlang / OTP平台范围之外的服务进行任何调用。
但是,如果我们尝试通过将所有相应的服务功能移动到基于Erlang的Web服务器(如Mochiweb)并基本上从gen_server更改每个服务的接口来构建每个服务:调用XML?
这将允许使用基于WSDL的通用服务合同,从标准化的“砖块”中组合各种应用程序。
此外,这种方法将让我们继续使用OTP主管和其他OTP功能,因为这样的服务仍然是OTP应用程序。
所以,问题是: 您是否认为使用OTP Web服务器(Mochiweb)作为服务构建具有面向服务的体系结构方法的软件应用程序是一个好主意?附加的XML处理层能否破坏这种方法的所有优点?
答案 0 :(得分:5)
未完成此操作的主要原因是您将自己限制在SOA协议中。 Erlang使用一些附加点(监视器)实现IP协议。虽然你可以做到,但我想知道它是否值得。
原则上,Erlang已经拥有了SOA的 idea 的所有工具,但没有 SOAP 和 WSDL 的所有臃肿:)< / p>
答案 1 :(得分:4)
这是我们Erlang的主要应用:Web服务。我们通常使用Yaws Appmods,而article here可以向您展示其完成方式。由于以下原因,Erlang一直是SOA的良好平台:
1。 Side Effect免费代码非常容易编写和测试。
2。隔离:Erlang中的进程有助于以干净的方式隔离每个服务请求。
3.大多数Erlang库(如mochiweb
,misultin
和Chicago Boss
)都是从头开始构建的支持用Erlang编写的SOA系统。
很高兴的是将自己的OTP应用程序应用于这些框架中的任何一个。 erlang适合SOA的另一个重要原因是冗余。 SOA系统需要启动。如果服务请求失败,则会沿着不同的路径重新尝试(当然,在物理层,它由正在分发OTP应用程序的其他计算机处理)。
试一试,好主意
答案 2 :(得分:2)
SOA可以应用于许多实现技术,而不仅仅是SOAPy Web服务,我发现它总是有益的。例如,您可以将数据库视图和存储过程建模为服务。您可以为您的Java API建模服务。等
现在,回答你的实际问题:
所以,问题是:你认为构建一个软件应用程序 使用OTP使用面向服务的体系结构方法 webservers(Mochiweb)作为服务是一个好主意?
没有。每个人都在远离SOAP和REST;然而,使用OTP Web服务器(Mochiweb)作为RESTful服务构建一个使用面向服务的体系结构方法的软件应用程序可能是个好主意。
额外的XML处理层可以破坏这种方法的所有优点吗?
这取决于你的目标是什么。如果您只是添加XML层,因为您认为它是“正确的事情要做”,那么您将始终遇到XML层问题,因为它将是一个寻找要解决的问题的解决方案。如果您的目标是从客户端实现中解析服务器实现技术,通过为您的实体创建通常理解的表示,那么额外的XML(或JSON或任何最合适的)处理层是值得的。