【问题标题】:How to develop a client-server system with OSGi?如何使用 OSGi 开发客户端-服务器系统?
【发布时间】:2011-04-10 06:05:40
【问题描述】:

我最近几天正在学习如何使用 OSGi 进行开发,但遇到了很多问题。

我不知道如何以 Equinox 作为框架来设计基于 OSGi 的客户端-服务器系统。我应该使用套接字连接来实现这一点还是使用分布式模型?

我也很困惑是否需要导入一些第三方包来支持我在 socket、jdbc、swing 等上的编程,还是 Equinox 或其他 OSGi 开源项目提供的现有包?

第一次在这里提问,有大神可以帮帮我吗?

【问题讨论】:

  • 您可以使用套接字或 RMI,或 Web 服务或 Servlet 或 MQ 或任何其他您知道的分发机制。

标签: sockets client-server osgi


【解决方案1】:

看看 OSGi 远程服务实现(OSGi 规范中的更多细节):

干杯,

Dmytro

【讨论】:

  • 我在这里收到的第一个答案非常感谢:) 我知道两种方法,你提到的 Apache CXF 和套接字。考虑到我只是想搭建一个demo程序,比如用户登录和注册的模块,不知道最简单的socket方式能行吗?
  • 顺便问一下,Equinox 框架中是否包含任何实现?第二种方法您是否建议使用第三方包?
  • Equinox 系统包仅包含 OSGi 核心规范。其他一切都是可选的。
【解决方案2】:

与基于低级套接字处理和二进制协议的协议相比,HTTP 模型可能是最容易实现的。

我要问的第一个问题是您的客户端和服务器需要交换什么样的信息。如果您可以使用 HTTP(并且在许多情况下可以),那么您可以在服务器端使用 servlet、在客户端使用 http 客户端库和 RESTful 通信模型。

使用 HttpService 在 OSGi 中很容易实现 Servlet,例如,参见 http://www.osgilook.com/2009/09/08/osgi-http-service-registering-servlets-on-the-fly/

【讨论】:

  • 交换的数据主要是数据库查询和更新,我不熟悉servlet编程,所以犹豫使用http服务。
  • 使用 HTTP 可能需要您开始学习更多知识,但会阻止您通过做其他人已经为您整理好的低级内容重新发明轮子;-)
【解决方案3】:

在 OSGi 中使用套接字并不比在“普通”Java 中复杂。您设计应用程序的方式与通常情况大致相同,但通过使用 OSGi 可以获得模块化和服务的好处。

例如,您可以通过引入WorkerFactory 之类的东西来分离连接接受和请求处理,或者可以在客户端和服务器上重用服务;这些都是 OSGi 擅长的。

OSGi 作为一种“技术”(就该概念成立而言)并不强制要求任何特定的交互方法。纲要规范提到了远程服务(又名分布式 OSGi),但它也包含一个 HTTP 服务规范,因为 Servlet 是你的事。

简而言之,只需选择最适合您的场景的交互解决方案,让 OSGi 帮助您实现服务和模块化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2011-10-11
    相关资源
    最近更新 更多