我正在构建依赖于其他服务的服务。典型的面向服务架构。我依赖的服务暴露了一些API和数据类型。如果我将该服务公开的对象类型转换为我的服务理解的特定对象,我感到很困惑。我确实希望他们的服务随着时间而变化,因为这是两种不同的服务。我有两个选择:
我试图回答这些问题,但仍无法做出最后的决定。我需要帮助才能做出这个决定。
为什么我应该使用封装/转换类型?
为什么我不应该对封装的类型进行更改?
据我所知,如果我采用任何一种方法,影响都是一样的。帮忙?
答案 0 :(得分:1)
我不是架构师或SOA专家,所以如果我说任何愚蠢的话,请原谅: - )
但我真的认为这里的方法是保持您的服务简单。
在你的鞋子里,我只是直接使用现有的API。我不会花任何时间将这些方法包装或调整到另一个API中。您的第二项服务(使用现有的第一项服务)业务逻辑应该负责此转换,IMO,,除非您被迫使用现有API 做一些非常昂贵的事情。
请记住,服务是可变的。他们是软件。他们有错误,随着时间的推移业务逻辑发生变化,您必须更改API,有时您必须保持旧方法与其他服务使用者兼容。您可能不希望维护两个提供相同信息的API,而没有任何实际原因。不是维护工作的两倍。
创建另一个API只是为了让数据格式听起来有点像旧的" DTO是邪恶的"火焰战争。我想现在很少有人写下使用DTO的优点: - )
答案 1 :(得分:0)
这是一个基于意见的问题,所以我的意见是,你应该制作自己的数据类型,让你的代码片段理解哪个变量应包含哪些内容。
我认为服务是一种数据提供者,它接受某些请求并满足我们的需求,反过来可能会给我们一些数据。我认为服务的角色只是为客户提供服务。
客户应负责接受服务返回的数据并将其存储在某些数据结构中,因为单个服务可能有n个不同的客户端,并且它们可能有不同的要求,这可能导致他们设计客户特定的数据-structure包含数据。
另外,正如您所说,客户服务可能会在一段时间内发生变化,那么如果您制作自己的数据结构,那么您需要在一个地方进行更改,其余代码将是安全的