需要关于面向服务架构的建议
Need suggestion on the service oriented architecture
我们是一个完整的 SOA 研讨会(仅限 Java),我们使用 SOAP 进行数据传输。目前,我们正在为特定组件集中数据库工作,以便其他组件可以使用 SOAP 从一个应用程序中获取数据。
我的论点是集中化很好,但是在数据库调用之间添加 soap 时会增加很多延迟。我想要一个 RMI/EJB 类型的实现,这样我们就可以得到序列化的对象,它可以减少编组开销。我喜欢 Ejbs 的实现方式并愿意使用它。但是我们return的数据根本不是来自一个table,所以,我不能return一个数据库table实体,数据可能来自其他20个[=15] =]s 或更多。
因此,在我们当前的系统中,我们创建了自定义实体以映射到繁重的 sql 查询。 (与一个 table 无关)
ejbs 可以用于这种类型的环境吗?如果是这样,是否有现成的库可以将查询结果映射到实体?
不幸的是我们的内部系统很旧,我们使用 java 1.4。
这是可以做到的,但是会很痛苦。创建 EJB 3.0 实体 bean 是有原因的。这是因为处理这些复杂的需求确实很难通过旧的 2.x 实体 bean xml 文件进行映射。
如果您真的要构建一个新的 SOA 层来表示您的数据库内容,为什么要使用已经过时将近 10 年的技术来实现这一点?
更糟糕的是,使用 EJB 2.x 构建它然后使用 RMI/EJB 会将所有其他应用程序绑定到相同的过时技术。很少有人会选择开始一个 new EJB 2.1 项目。
老实说,我相信您最好使用 SOAP 而不是 EJB 作为您的服务,至少它不会让您连接到过时的平台。当前的最佳实践更喜欢将 REST 用于实体传输,而将 SOAP 用于 RPC 样式的交互,但是有很多很好的库可以将您的数据库表映射到 SOAP,其中许多对于 RDMS 来说是开箱即用的。
最后,如果你下定决心要这样做,我建议你先做一个测试。构建一个测试框架来实际查看 SOAP 反序列化是否是一个重要的成本组成部分。将其与网络传输的成本进行比较。除非这些实体在兆字节范围内,否则反序列化将只占您整个应用程序时间的一小部分。
我们是一个完整的 SOA 研讨会(仅限 Java),我们使用 SOAP 进行数据传输。目前,我们正在为特定组件集中数据库工作,以便其他组件可以使用 SOAP 从一个应用程序中获取数据。
我的论点是集中化很好,但是在数据库调用之间添加 soap 时会增加很多延迟。我想要一个 RMI/EJB 类型的实现,这样我们就可以得到序列化的对象,它可以减少编组开销。我喜欢 Ejbs 的实现方式并愿意使用它。但是我们return的数据根本不是来自一个table,所以,我不能return一个数据库table实体,数据可能来自其他20个[=15] =]s 或更多。
因此,在我们当前的系统中,我们创建了自定义实体以映射到繁重的 sql 查询。 (与一个 table 无关)
ejbs 可以用于这种类型的环境吗?如果是这样,是否有现成的库可以将查询结果映射到实体?
不幸的是我们的内部系统很旧,我们使用 java 1.4。
这是可以做到的,但是会很痛苦。创建 EJB 3.0 实体 bean 是有原因的。这是因为处理这些复杂的需求确实很难通过旧的 2.x 实体 bean xml 文件进行映射。
如果您真的要构建一个新的 SOA 层来表示您的数据库内容,为什么要使用已经过时将近 10 年的技术来实现这一点?
更糟糕的是,使用 EJB 2.x 构建它然后使用 RMI/EJB 会将所有其他应用程序绑定到相同的过时技术。很少有人会选择开始一个 new EJB 2.1 项目。
老实说,我相信您最好使用 SOAP 而不是 EJB 作为您的服务,至少它不会让您连接到过时的平台。当前的最佳实践更喜欢将 REST 用于实体传输,而将 SOAP 用于 RPC 样式的交互,但是有很多很好的库可以将您的数据库表映射到 SOAP,其中许多对于 RDMS 来说是开箱即用的。
最后,如果你下定决心要这样做,我建议你先做一个测试。构建一个测试框架来实际查看 SOAP 反序列化是否是一个重要的成本组成部分。将其与网络传输的成本进行比较。除非这些实体在兆字节范围内,否则反序列化将只占您整个应用程序时间的一小部分。