我们构建多层软件,每层都可以在不同的平台上实现。例如,我们在界面层中的一个应用程序是C#,windows中的silverlight和引擎层中的其他应用程序是Linux中的C. Engine中的应用程序与其他层和数据库有关,因此接口层中的应用程序通过Engine层访问DB和其他层。例如,Engine从接口接收请求并连接到DB并向其发送查询并接收答案并将其发送到接口。哪种方法适合接口应用程序和Engine应用程序之间的通信? (RPC或Socket)? 我们可以使用WCF吗?
答案 0 :(得分:1)
您可以在.Net(C#)部分使用WCF,但其他平台不能轻易与它通信,但有一个例外 - 您可以将WCF公开为REST端点,我已经使用了很好的成功 - 平台通信。但是,如果您要这样做,您可能会考虑不使用WCF来支持围绕REST构建的.Net Web.API。
您可以做的另一件事是创建一个仅用于通信的公共组件,即各种消息代理:
假设每个字母都是不同的平台,这就是你的问题:
A - >乙
B - > ç
C - >甲
创建一个新组件,使用每个平台可以使用的标准通信方式(如REST)处理通信:
A - >经纪人 - >乙
B - >经纪人 - > ç
C - >经纪人 - >甲
HTH, 埃里克
答案 1 :(得分:0)
套接字是无处不在的机制,因此在跨平台和跨语言应用的情况下,它们可能是最自然的选择。如果您将来需要涉及非Windows的东西(例如iOS手机),WCF将不是一个选项。
为了避免重新发明轮子,您需要使用一些面向消息的中间件(MOM),它非常适合您的方案。市场上存在几种这样的产品,包括开源和商用产品。但是,大多数此类产品仅支持一个或两个主要平台。
我们公司创建了一个中间件产品,可以免费获得源代码MsgConnect。该产品可解决您的问题。它可以在多个平台上使用(由于Silverlight中的套接字架构非常有限,因此不支持Silverlight)并提供多种替代传输,包括TCP套接字,UDP和内存映射文件,以实现高效的本地通信。