我正在寻找一个最简单的解决方案来使用 Spring 3 框架创建客户端-服务器网络架构。该架构将有许多客户端和多个服务器。每个客户端都可以连接到每个服务器。每个客户端都可以定义一组必须由服务器在运行时生成的服务。
通信协议(protocol):
客户端向 5 个服务器之一打招呼。
服务器收集有关存储数据的本地元数据并将其发送到客户端
客户端选择其中一些信息并将元数据子集发送到服务器,以决定稍后需要哪些数据。
服务器根据客户端选择的元数据选择,动态生成可供客户端使用的服务,并向其提供所请求(步骤 3)配置所指向的数据(例如以序列化 JSON 的形式)
客户端获取有关生成的服务的信息并将其用于将来调用这些服务。
最大的问题是,客户端在收到应答之前对要提供的服务器资源一无所知,而服务器在收到客户端请求后没有任何服务。
我考虑过 Spring 3:
- HTTP 调用程序
- JMS
- Netty(与spring结合)
但据我尝试上述方法,很难提供动态服务生成需求或者代码量(Netty)很大。
由于 SOAP 的沉重性质,我拒绝。 另一方面,据我所知,REST 并没有给这里带来任何好处。它只是一种提供数据的方式,并且需要某种 servlet 容器(例如 Tomcat),因为它使用 HTTP。 @Timmmm 的 great and simple answer to REST fashion
我追求什么:
- 尽可能简单
- 根据客户选择动态生成服务
- 保持服务器轻量级,即没有额外的服务器实例(最好消除 tomcat;但 ts 并不重要)
- 基于 Spring
您会推荐什么技术?
由于需要在运行时生成基于配置的服务,因此很难完成此任务。
我不想想要基于属性文件,服务必须根据客户端请求动态生成。
提前感谢您的回答和提示。
最佳答案
我会研究 RESTful 架构。它的一些原则就是你所追求的,包括发现。
Spring 提供了与 REST 的轻松集成。
关于java - Spring 3 : Network Client-Server with custom protocol for runtime service generation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17972482/