什么是关于电线的“SDK vs.'位”辩论?

时间:2008-11-24 02:19:13

标签: language-agnostic

似乎存在一些关于“想要一个SDK并希望了解基础协议之间存在分歧”的争论(见http://www.tbray.org/ongoing/When/199x/1999/08/18/BitsOnTheWire)。

我真的不明白这是指什么,或者为什么它们是相互排斥的。

每种方法的理念是什么,为什么会发生冲突?

5 个答案:

答案 0 :(得分:10)

假设客户端C需要与供应商V提供的服务S通信。如果您拥有的是SDK,则必须在客户端C上安装供应商V的SDK软件才能与S通信另一方面,如果供应商V完全如何与服务S通信到位级别,那么您可以在客户端C上编写自己的软件以直接与服务S通信。

答案 1 :(得分:7)

他们并非真正相互排斥。它更像是一个连续统一体,但系统背后的发展理念往往倾向于一端或另一端。

基本上线上的位表示通信协议非常简单,可以通过一些相对简单(甚至非正式)的规范向外部开发人员描述。这意味着该服务可以以各种不可预见的方式使用,服务消费者不必是官方支持的平台。

另一方面,像苹果和微软等单一产品的公司可以选择另一种理念,即构建完整的端到端SDK。从理论上讲,这可以让开发人员更轻松地抽象出底层协议的复杂性,同时释放产品以执行更复杂的操作,并减少开发人员的错误。当然还有比特,它们仍然可以通过电线,它们可以进行逆向工程。然而,与使用旨在理解的协议相比,这将相当大(数量级)更难做,特别是如果它被故意模糊或加密以服务于商业利益。

答案 2 :(得分:3)

虽然在某些情况下有助于了解位级别的情况,尤其是故障排除,但使用供应商的SDK可能是将集成与供应商在其消息传递结构中可能进行的任何未来更改隔离的最佳方式。

这并不是说在获取最新的SDK等方面不会有任何不便,但至少如果供应商的工作正确,您不必担心更改代码,只需使用他们的新SDK。

例如,我们与一家名为ISD的公司合作,专门从事支付交换机产品。我们编码了他们的SDK。虽然他们的产品经历了一些版本控制,但我们最需要做的就是更新客户端计算机上的DLL。 DLL保留了相同的公共接口。

答案 3 :(得分:1)

它们不必相互排斥,只是提供服务的任何人都将专注于SDK或有线协议作为面向公众客户的承诺接口。您可以提供同时提供服务的服务,并让您的客户选择要关注的服务,但这可能是一种奢侈。

答案 4 :(得分:1)

如果你采用SDK路由,那么不要在线路规范上提供比特非常重要,如this story中所发生的那样。