我目前正在搜索Java网络库。我想要做的是将XML,JSON或其他序列化消息从客户端发送到另一个客户端和/或客户端到服务器。
我的第一次尝试是为每条消息创建一个POJO,另外还有一个用于发送的MessageWriter和一个用于接收它的MessageReader。加上套接字和错误处理。这是一个很容易出错的工作。
我正在寻找的是一个从套接字中抽象出来的更高级别的库。此外,它应该支持诸如消息的代码生成之类的东西。
Google的协议缓冲区(http://code.google.com/apis/protocolbuffers/)看起来很有前途。但有其他选择吗?重点不在于速度或安全性(目前),它应该是可靠的,并且实施时间很短。
答案 0 :(得分:13)
根据您希望获得的原始套接字的抽象方式,您有多种选择。一旦你离开套接字级编程,你就会进入远程领域,
我不完全确定消息代码生成的含义。你能详细说明吗?
答案 1 :(得分:4)
啊......抓住了。 而不是使用代码gen。如果两端都有Java,你可以使用简单的对象序列化来编组和取消编组吗?如果要考虑性能和/或消息大小,可以使Message类可外部化。
之前我没有看过Protobuf。看起来很体面。使用它,您只需要一个传输方法。
答案 2 :(得分:3)
从apache尝试HttpClient。
答案 3 :(得分:2)
如果你还没有使用Spring,这可能比你想要的更多。但HttpInvoker是发送消息的相当高级别的抽象。所有remoting information都可在线获取,HTTP Invoker部分位于17.4。
答案 4 :(得分:0)
如果您喜欢这些功能,您可能还需要查看JBossCache。它是使用JGroups实现的,虽然您的要求不是缓存解决方案,但它通过基本实现带有事件通知等的分布式哈希映射,确实很好地抽象了JGroups的一些显着功能。
答案 5 :(得分:0)
答案 6 :(得分:0)
我建议您查看ActiveMQ以传递消息。它简单,灵活,快速。它支持Serializable对象,但也支持Map消息和其他JMS消息类型,因此除非效率很重要,否则您不需要自己的序列化格式。如果性能很重要,我建议使用Hessian,它非常快,不需要代码生成。