互联互通有啥好处?

     2023-02-19     220

关键词:

【中文标题】互联互通有啥好处?【英文标题】:What's the benefit of Connectedness?互联互通有什么好处? 【发布时间】:2010-09-17 05:48:28 【问题描述】:

资源导向架构 (ROA) 定义的连通性有什么好处?按照我的理解,Connectedness 的关键在于能够仅使用根 URI 抓取整个应用程序状态。

但这真的有用吗?

例如,假设 HTTP GET http://example.com/users/joe 返回一个指向 http://examples.com/uses/joe/bookmarks 的链接。

除非您正在编写一个愚蠢的网络爬虫(即使这样我也想知道),您仍然需要在编译时告诉客户端每个链接的含义。也就是说,客户端需要知道“书签 URI”返回书签资源的 URI,然后将控制权交给特殊的书签处理算法。您不能只是盲目地将链接传递给某些通用客户端方法。因为无论如何你都需要这个逻辑:

    客户端在运行时确定 URI 与在编译时提供(使 http://example.com/users/bookmarks 成为根 URI)有什么区别?

    为什么使用@987654324@ 链接而不是id="2"

我能想到的唯一好处是能够随着时间的推移更改非根 URI 的路径,但这会破坏缓存的链接,因此无论如何它并不是真正可取的。我错过了什么?

【问题讨论】:

【参考方案1】:

您说得对,更改 Uris 是不可取的,但确实会发生,使用完整的 Uris 而不是构造它们会使更改更容易处理。

另一个好处是您的客户端应用程序可以轻松地从多个主机检索资源。如果您允许您的客户端构建 URI,则客户端需要知道某些资源驻留在哪个主机上。当所有资源都位于单个主机上时,这没什么大不了的,但是当您聚合来自多个主机的数据时,它变得更加棘手。

我最后的想法是,也许您将连通性的概念视为静态链接网络,从而过度简化了连通性的概念。当然,客户需要知道资源中可能存在的某些链接,但不一定需要确切知道跟随该链接的后果是什么。

让我举个例子:用户正在为一些商品下订单,他们准备提交他们的购物车。提交链接实际上可能会转到两个不同的地方,具体取决于订单是在本地交付还是在国际交付。也许超过一定价值的订单需要经过额外的步骤。客户端只知道它必须遵循提交链接,但它不知道下一步要去哪里。当然,您可以构建一个通用的“下一步”类型的资源,这样客户端就可以明确地了解这一点,但是通过让服务器动态传递链接,您可以减少客户端-服务器之间的耦合。

我认为资源中的链接是用户可以选择做什么的占位符。谁来完成这项工作以及如何完成工作取决于服务器附加到该链接的 uri。

【讨论】:

【参考方案2】:

它更容易扩展,您可以编写小应用程序和脚本来相当容易地与核心应用程序一起工作。

补充:嗯,重点是你没有在编译时指定如何以硬编码的方式将 URI 转换为 uid,而是你可以使用字典或解析来做到这一点,给你更多灵活的系统。

然后说其他人决定更改 URI 语法,该人可以编写一个小脚本来翻译 URI,而无需接触您的核心应用程序。另一个好处是,如果您的 URI 是合乎逻辑的其他用户,即使在公司场景中,也可以轻松编写 Mash-ups 以使用您的系统,而无需触及您的原始应用程序甚至重新编译它。

当然,与整个论点相反的是,在简单的 UID 系统上实现基于 URI 的系统将花费您更长的时间。但是如果你的 App 会被其他人以常规方式使用,那么最初的时间投资将得到很大的回报(可以说具有很好的基于可扩展性的 ROI)。

补充:另外一点在某种程度上是一个口味问题,URI 本身将是一个更好的名称,因为它传达了一个逻辑和定义的含义

【讨论】:

我不确定我理解你的意思。需要详细说明吗? 是什么阻止您使用“逻辑名称”作为自定义 ID 并将它们映射到底层的真实数据库 ID?例如,id="2" 将改为 id="john"。我了解逻辑 ID 的好处,但这似乎无法回答我的问题。 不幸的是,我想我已经回答了“为什么”,问题是“为什么”不是你想做的。所以你不想使用 URI,这很好。这些论点并不比面向对象编程与过程编程更有效。它只是一种思维定势和编程哲学,仅此而已 我真诚地试图理解为什么 URI 是有益的。我有这样的感觉,并且我正在尝试尽可能多地接受 ROA,但我认为理解为什么它的最佳实践是有益的而不是盲目地应用它们是至关重要的。 您为资源 URI 为什么应该使用逻辑 ID(而不是数据库 ID)提出了一个很好的论据。但是使用逻辑 ID公开 资源 URI 与从另一个资源表示引用这样的 URI 不同。我明白为什么前者是有益的,但为什么是后者?【参考方案3】:

我会添加我自己的答案:

    遵循服务器提供的 URI 比自己构建它们要容易得多。当资源关系变得过于复杂而无法用简单的规则表达时,尤其如此。在服务器中编写一次逻辑比在众多客户端中重新实现更容易。 即使单个资源 URI 保持不变,资源之间的关系也可能会发生变化。例如,假设谷歌地图从 0 到 100 索引他们的地图图块,从屏幕的左上角到右下角计数。如果 Google 地图要更改其图块的比例,计算相对图块索引的客户端将会崩溃。 自定义 ID 标识资源。 URI 通过识别如何检索资源表示更进一步。这简化了只读客户端(例如网络爬虫)或下载不透明资源(例如视频或音频文件)的客户端的逻辑。

【讨论】:

onenote有啥好处

...备上。OneNote2007能够与Outlook同步,方便邮件和笔记之间的互通。可以轻松地创建笔记中的跳转链接来在分区和页,甚至是网站或者电脑上的文档之间跳转。OCR光学字符识别和搜索支持。所有笔记的展示列表和强大的搜索功能,包... 查看详情

百度副总裁沈抖:互联网的下一波红利是“互联互通”,将屏蔽清单变成机会清单

...度联盟峰会中,百度集团执行副总裁沈抖表示:互联网的下一波红利是“互联互通”。互联互通将大大拓宽商业的边界,互联网公司可以将“屏蔽清单”变成“机会清单”。百度集团执行副总裁沈抖2021年9月,工... 查看详情

冗余限定符有啥缺点吗?有啥好处吗?

】冗余限定符有啥缺点吗?有啥好处吗?【英文标题】:Isthereanydownsidetoredundantqualifiers?Anybenefit?冗余限定符有什么缺点吗?有什么好处吗?【发布时间】:2010-09-1102:07:13【问题描述】:例如,引用System.Data.Datagrid而不仅仅是Datagri... 查看详情

防火墙网络信息安全试验拓扑的配置互联互通

一、实验拓扑:  二、网络拓扑互联互通:路由器、交换机、主机的IP地址配置 略。交换机LSW1 VLAN的配置如下所示:[SW1]dispvlanThetotalnumberofvlansis:3--------------------------------------------------------------------------------U: 查看详情

使用 UITableViewController 有啥好处?

】使用UITableViewController有啥好处?【英文标题】:WhatdoesonegainfromusingaUITableViewController?使用UITableViewController有什么好处?【发布时间】:2016-07-0411:48:16【问题描述】:为什么不使用嵌入了TableView的UIViewController?【问题讨论】:【... 查看详情

工厂模式有啥好处? [复制]

】工厂模式有啥好处?[复制]【英文标题】:what\'stheadvantageoffactorypattern?[duplicate]工厂模式有什么好处?[复制]【发布时间】:2012-02-2619:26:56【问题描述】:可能重复:WhatarethepracticalusesofFactoryMethodPattern?DifferencesbetweenAbstractFactoryPa... 查看详情

依赖注入容器有啥好处?

】依赖注入容器有啥好处?【英文标题】:Whatarethebenefitsofdependencyinjectioncontainers?依赖注入容器有什么好处?【发布时间】:2010-09-1300:24:40【问题描述】:我了解依赖注入本身的好处。让我们以Spring为例。我也了解其他Spring特性... 查看详情

使用 ExecutorService 有啥好处?

】使用ExecutorService有啥好处?【英文标题】:WhataretheadvantagesofusinganExecutorService?使用ExecutorService有什么好处?【发布时间】:2011-04-2809:33:15【问题描述】:与将Runnable传递给Thread构造函数的运行线程相比,使用ExecutorService有什么... 查看详情

使用 NSOutputstream 有啥好处?

】使用NSOutputstream有啥好处?【英文标题】:What\'stheadvantagesofusingNSOutputstream?使用NSOutputstream有什么好处?【发布时间】:2014-11-2413:09:55【问题描述】:我需要从网上下载大文件,并保存到本地磁盘。一开始我是这样保存数据的... 查看详情

使用静态方法有啥好处?

】使用静态方法有啥好处?【英文标题】:Whatistheadvantageofusingstaticmethods?使用静态方法有什么好处?【发布时间】:2011-01-2703:57:00【问题描述】:我用代码在python中遇到了未绑定方法错误importrandomclassSample(object):\'\'\'Thisclassdefines... 查看详情

在解析 JSON 时使用 NSDictionary 有啥好处或好处?

】在解析JSON时使用NSDictionary有啥好处或好处?【英文标题】:WhatistheadvantageorbenefitofusingNSDictionarywhileparsingJSON?在解析JSON时使用NSDictionary有什么好处或好处?【发布时间】:2014-07-1609:32:51【问题描述】:我知道我们在进行序列化... 查看详情

春季自动装配有啥好处

】春季自动装配有啥好处【英文标题】:Whatistheadvantageofautowiringinspring春季自动装配有什么好处【发布时间】:2013-04-2623:32:04【问题描述】:Spring的自动装配到底有什么优势?春天自动装配的一个例子是publicclassTestClasstestMethod()//... 查看详情

MySQL中的zerofill有啥好处?

】MySQL中的zerofill有啥好处?【英文标题】:WhatisthebenefitofzerofillinMySQL?MySQL中的zerofill有什么好处?【发布时间】:2011-07-1212:06:40【问题描述】:我只是想知道在MySQL中为INTDataType定义ZEROFILL有什么好处/用途?`id`INTUNSIGNEDZEROFILLNOTNUL... 查看详情

C#接口有啥好处[重复]

】C#接口有啥好处[重复]【英文标题】:WhatarebenefitsofC#interfaces[duplicate]C#接口有什么好处[重复]【发布时间】:2018-02-1417:09:20【问题描述】:我已经使用接口完成了演示实现:classProgramstaticvoidMain(string[]args)#regionCallingmethodwithoutinter... 查看详情

Kafka分区有啥好处?

】Kafka分区有啥好处?【英文标题】:WhatisbenefitofpartitioninKafka?Kafka分区有什么好处?【发布时间】:2019-11-2920:38:35【问题描述】:那么,让我们比较一下Kafka和RabbitMQ。Kafka(Partition)=RabbitMQ(Queue)队列包含所有消息,如列表。Kafka分... 查看详情

使用 INNER JOIN 有啥好处? [复制]

】使用INNERJOIN有啥好处?[复制]【英文标题】:WhatstheadvantageofusingINNERJOIN?[duplicate]使用INNERJOIN有什么好处?[复制]【发布时间】:2015-11-1014:27:35【问题描述】:我看到thisexample:SELECTOrders.OrderID,Customers.CustomerName,Orders.OrderDateFROMOrder... 查看详情

使用 DataRelation 有啥好处?

】使用DataRelation有啥好处?【英文标题】:WhatistheadvantageofusingaDataRelation?使用DataRelation有什么好处?【发布时间】:2009-09-2719:59:59【问题描述】:我想知道在.NET中使用DataRelation的优势是什么,而不是在数据层本身中制作关系?... 查看详情

使用 WCF 有啥好处?

】使用WCF有啥好处?【英文标题】:WhatarethebenefitsofusingWCF?使用WCF有什么好处?【发布时间】:2010-09-2105:49:30【问题描述】:我们目前只使用肥皂网络服务进行所有通信,但一直在考虑改用WCF。与asmx服务相比,使用它有什么好处... 查看详情