如何在分布式平台中设计规范数据模型?

时间:2013-08-06 10:59:47

标签: rest java-ee apache-camel soa eai

我正在尝试为我正在开发的分布式平台定义规范数据模型,该模型基于以下架构:

  • RESTful API外观,向客户端公开功能
  • 基于Apache Camel的底层中间件,用于路由和转换客户端请求
  • 中间件调用的RESTful业务服务

我们的想法是让façade层将传入的请求转换为公共信息模型,该模型具有带头和有效负载的自定义消息的形式:

  • 标题应包含中间件(Apache Camel)所需的信息,以便将消息路由到请求的工作流(因此,基本上façade知道应该调用哪个业务流程以处理来自客户端的每个传入请求) 。它可以建模为枚举映射或表示自定义消息的类的一组属性。
  • 有效负载应包含一个适当的Java bean,表示传入请求的“业务模型”(例如TicketOrder或Customer对象)。它可以在表示自定义消息的类中建模为Object属性,并且管理该消息的工作流中涉及的Camel的所有处理器/转换器应该期望有效负载类型(所选Java bean)。

简而言之,我正在尝试为中间件定义业务数据模型,该模型仅包含Camel处理传入请求并将其路由到业务服务所需的相关信息。此数据被建模为Java bean,并作为有效负载附加到消息中,其标头包含对Camel有意义的路由详细信息。

您如何改进上述解决方案?你会说这是一个很好的方法并且足够灵活吗?非常感谢你。

1 个答案:

答案 0 :(得分:0)

如果您使用Camel作为(轻量级)ESB,我认为没有太多事情需要担心。在camel路由中你可以保持最适合这种情况的格式,你甚至可以为一些解决方案并行运行多种格式(例如,你可以使用Java Bean来做一些业务逻辑,但你也可以使用XSTL将消息转换为XML和XPath以获得更好的解耦并执行一些CBR处理。

如果您需要对Java Bean模型进行大量工作,我建议您创建一个可以从JSON中提取模型的项目,这样您就可以控制此工件的版本(例如,使用Maven)这可能是Java应用程序的规范模型(如果JSON请求发生了很大变化,您需要更新此项目)。由于OSGi可以为不同的应用程序使用不同版本的模型,因此创建Java数据模型项目并使用OSGi容器将为您提供更多解耦的好处。

此致 栾