首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >软件层和数据映射

软件层和数据映射
EN

Software Engineering用户
提问于 2018-07-08 20:43:41
回答 1查看 214关注 0票数 1

在我提出我的问题之前,这里是一个上下文:我正在研究一个相对较大的软件的一个部分。在其最简单的形式,有3层的软件让他们称为较低的层,中层和顶层。我在中间层工作。中间层的工作非常简单,从底层检索信息并将其传递到顶层。它还可以接收来自顶层的各种请求,并在下层执行操作,并向顶层提供反馈。

下层是第三方组件,因此我们商定了一个在中间层和顶层之间常见的数据模型。这两层通过专有的进程间通信协议进行通信。数据模型是作为包含专有通信协议libs的框架的一部分交付的(因此,包含模型的报头使用的是框架的名称空间,而不是中间层)。

我的方法:我实现的方式是在整个中间层直接使用数据模型,尽管它使用了comm协议的名称空间,因为我认为它是中间层的数据模型。因此,我会直接将数据从底层读取到数据模型中,通过中间层中的各个子层发送到通信协议的顶层。

其中一位同事批评我的做法,认为这是通讯层的数据模型,如果明天通讯层发生变化,或被另一个通讯层所取代,我便要更换每一个透过中间层使用的情况。因此,他建议使用一个内部数据模型,用于从底层读取数据,并将这个模型发送到我将通信层上的数据发送到顶层的位置。在发送数据之前,我应该执行数据映射到通信层数据类型。

我不相信他是对的,因为这是中间的数据模型,我自己定义的。仅仅因为它必须通过通信层发送,所以它是与框架一起交付的,因此有一个框架的命名空间。但是,这并不意味着它是通信层数据类型。此外,如果通信层以及名称空间发生了变化,这也不是什么大问题,因为我只需简单地定义就可以解决这个问题。

那么,在一个很长的故事之后的问题:执行与层本身的映射真的有意义吗?你是如何看待这种情况的?

EN

回答 1

Software Engineering用户

发布于 2018-07-09 13:15:23

如果你的同事是对的,你就应该做好准备,以应对必须支持不同的通信技术的潜在需求。这并不意味着他提出的解决方案是正确的,也不意味着你必须投入大量的精力来支持其他技术,“以防万一”。

您应该关心的是,您的通信层中的数据模型应该是与通信技术本身无关的。想想当你需要改变技术的时候会发生什么。您可以重用大多数数据模型而不必替换使用它的每个实例吗?也许通过创建一个具有兼容(或至少几乎兼容)数据结构的"comm层V2“?

如果您能够做到这一点,就没有必要以附加的“内部数据模型”的形式添加另一个间接层。否则,它可能是值得考虑的。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/373792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档