4

我正计划用 Java 编写一个 RPC 服务器。服务器需要接受传入的 RPC(可能通过 HTTP)并回答它们。相当基本的东西。不需要支持“长轮询”或“挂起”RPC,因此每个请求的线程模型应该是完全足够的。

如果我是用 Python 编写的,我可能会使用像 twisted 这样的框架。在 C 语言中,类似 glibc。在每种情况下,该框架都提供了处理 IO 的通用“选择循环”核心的实现,并调用处理它的更高级别的构造,最终导致我的应用程序被调用以处理诸如接收 RPC 之类的事件。

不过,我已经很久没有用 Java 写过任何实质性的东西了,所以我不知道这种事情的最新技术或建议的解决方案是什么。甚至可能有部分标准库我可以很容易地用来做这件事。因此我向 StackOverflow 提出问题:有哪些框架适合这样的任务?

请注意,尽管我可能将 HTTP 用于 RPC,但这绝不是 Web 应用程序——因此,Web 框架并不合适。

4

3 回答 3

4

Apache MINA是一个设计非常好的异步非阻塞网络框架。它提供面向字节的访问来读取和写入数据包数据。在此基础上,它有一个过滤系统,可以添加额外的层,提供面向行的文本解析、加密(通过 TLS)、压缩等。

PS:强烈推荐 2.0 版本系列,尽管它仍处于“里程碑”形式,但它已被证明非常稳定并且接近最终版本。

于 2009-04-09T11:27:13.087 回答
3

您有多项选择:

  • 使用现有的用于套接字编程的 SDK 推出您自己的解决方案。
  • Java RMI,远程方法调用框架。
  • Java CORBA 绑定不再被认为是最新的。
  • Java Web Service 框架相当复杂。查看 Apache CXF 和不同的 J2EE 产品。

然后你有不同的系统在 HTTP 传输之上运行,比如 JSON/XML-RPC,你需要一个 Web 服务器。即使你把它们排除在外。

于 2009-04-09T11:33:43.557 回答
3

你可以考虑使用像Jetty这样简单的东西,jetty的内部结构非常稳定,可以处理相当多的连接。如果您实现了特定于码头的处理程序接口,您也可以不使用所有 servlet 和 JSP 支持库,使其成为一个非常小的可嵌入应用程序服务器。

于 2009-04-09T12:31:41.217 回答