我们需要从安全系统、火灾警报、摄像系统等系统中获取数十种不同的协议。并将它们集成到一个单一的公共协议中。
我希望这是一个消息服务器,许多系统可以订阅和或通过通信。
biztalk适合这个吗?
是否有开放源码的替代方案?
是否有一种Java / Java的方法来做到这一点?
在一端,该系统将是一个SCADA系统,而另一端则是一种中间件/消息服务器。
如能就最佳的处理方式提出任何意见,将不胜感激。我知道在驱动程序端将涉及大量的编程,不过,尽管我很想从零开始构建整个系统,这是不合适的。
发布于 2008-10-23 13:53:09
如果您不介意在Java上工作,那么在一个名为企业集成模式的开源项目中有一个轻量级协议转换程序和实现阿帕奇骆驼。
Camel已经可以说出大多数共同协议和技术,如文件、电子邮件、JMS、XMPP等等,因此不需要对这些东西进行实际编码。
要添加新的自定义协议,最简单的方法是构建在MINA元件之上,它负责所有的网络、套接字处理、线程等(例如,NIO与BIO等)。
然后,您只需扩展它以添加您自己的协议编解码器(如何在套接字上封送/解封送消息,并可能使用框架等)。
HL7组件就是这样做的一个例子。更多的关于在这里编写MINA编解码器的详细信息。
然后,一旦您获得了骆驼组件(让我们称之为foo),您就可以使用简单的URI将任何协议从任何协议桥接到任何其他协议,以实现任何企业集成模式,如基于内容的路由器、接受者名单、选路滑等。
例如在Java代码中
// route all messages from foo
// to a single queue on JMS
from("foo://somehost:1234").
to("jms:MyQueue");
// route all messages from foo component
// to a queue using a header
from("foo://somehost:1234").
recipientList().
simple("activemq:MyPrefix.${headers.cheese}");发布于 2008-10-23 14:30:59
我会避免BizTalk的SCADA和at 232/at 485,因为这些通常需要实时(或至少低延迟)解决方案。BizTalk是为高吞吐量而优化的,但默认情况下具有高延迟的缺点。
您可以调整BizTalk以获得较低的延迟,但此时您将发现您绕过了BizTalk内置的几乎所有东西,它可能会妨碍您,而不是帮助您。
发布于 2010-06-16 04:31:07
www.livedata.com
它有点昂贵,但它是一个基于python的引擎,它可以获取一个协议,然后吐出另一个协议,它已经为ICCP、modbus、OPC和DNP等多个scada协议做了现成的设置。然后你就可以随心所欲地说下去了。
https://stackoverflow.com/questions/229423
复制相似问题