c# - java 服务器 <-> c# + javascript + java + * 客户端

标签 c# java javascript activemq protocol-buffers

您建议使用什么“技术”在 Java 服务器与用 C#、Javascript 和 Java 编写的多个客户端之间交换某种消息?

<小时/>

背景故事:

在我们当前的项目中,我们尝试用 Java 构建一个通用 UI 后端(在服务器上运行),然后通过不同的 UI 适配器(在客户端、服务器或两者上运行)“桥接”到多个 UI 前端。虽然我们的服务器技术将始终是 Java,但也会有 C# (Silverlight)、JavaScript 和 Java 客户端。也许将来会更多(不同的智能手机、平板电脑)。

UI 后端和 UI 前端通过一堆或多或少简单的消息(主要是名称/值对)进行通信,每个消息分别封装客户端或服务器上的特定属性/状态/数据更改。在单个请求周期内,多个这样的简单消息被聚合成一个大消息,然后从后端传递到前端,反之亦然。目前,发送和接收消息是在客户端和服务器上的单个入口点完成的。因此,没有公开为 WebService 等的服务器方法 - 只是因为在我们的情况下这肯定会很慢。

我们当前的原型(prototype)仅由 Java 服务器、Java 桌面客户端 (Swing) 和 Java Web 客户端 (Vaadin) 组成。后端和前端之间交换的消息实际上是序列化到 XML 或从 XML 反序列化的 POJO 列表(每个 POJO 代表一个特定的“更改”)。到目前为止,一切顺利。

现在 C# 和 Javascript 登场了。由于我们希望在每种技术中使用某种对象,因此我们认为用某种抽象语言指定消息/更改/pojo,然后为每种目标语言生成对象是个好主意。在某些时候,这些对象可以被序列化/反序列化并通过线路发送(可能通过 http/s)。为此,我们想到了 Google 的 Protocol Buffer 或 Thrift。你觉得怎么样?

目前我们的同步请求-响应周期已经足够了,但很快我们将分别需要异步请求-响应或服务器推送。这就是为什么我们立即考虑使用 ActiveMQ 之类的东西。你怎么认为?太多了?如果没有,我们如何完成上面提到的对象生成(xsd、jaxb、? for js)?还有更好的方法吗?我从未使用过 ActiveMQ,但根据该网站,它应该可以使用 Java、C# (Spring.NET) 以及 Javascript (STOMP) 来实现。然而,这对我来说似乎相当复杂......

有关此主题或相关主题的任何提示、提示、经验或评论都会非常有帮助。

提前谢谢您。

最佳答案

我建议使用网络服务。 WSDL 语言以抽象形式定义协议(protocol)的对象和消息。大多数现代语言(例如 Java 和 C#)都具有将 WSDL 转换为 native 类型的工具以及用于处理 I/O 的库。

关于c# - java 服务器 <-> c# + javascript + java + * 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4696391/

相关文章:

javascript - 委托(delegate)句柄如何在 ionic + angularjs 中工作?

c# - 归零CountdownEvent

c# - 异步方法和等待

c# - 检查 SQL Azure 中数据库是否存在

c# - 等待 Task.Run 在退出时更改跟踪 ActivityId

java - Android 应用程序在 SDK-tools 更新版本后崩溃(NoClassDefFound,工具版本 22)

javascript - 数据表: sorting not working

java - 如何在单元测试中设置Spring注入(inject)的值?

java - java中传递接口(interface)引用和类引用的区别

javascript - Javascript 可以调用 Django 方法/函数吗?