Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Language agnostic 什么是「;SDK与&x27;导线上的位'&引用;争论什么?_Language Agnostic - Fatal编程技术网

Language agnostic 什么是「;SDK与&x27;导线上的位'&引用;争论什么?

Language agnostic 什么是「;SDK与&x27;导线上的位'&引用;争论什么?,language-agnostic,Language Agnostic,似乎有一些关于“想要SDK和想要了解底层协议之间的区别”的争论(参见) 我真的不明白这指的是什么,也不明白为什么它们是相互排斥的 每种方法的原理是什么?它们为什么会冲突?假设客户机C需要与供应商V提供的服务S对话。如果您只有一个SDK,那么您必须在客户机C上安装供应商V的SDK软件,以便与S对话。另一方面,如果供应商V详细说明了如何与服务S对话到位级别,然后,您可以在客户端C上编写自己的软件,直接与服务S对话。它们不必相互排斥,只是任何提供服务的人都会将SDK或wire协议作为面向客户的公共承诺

似乎有一些关于“想要SDK和想要了解底层协议之间的区别”的争论(参见)

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


每种方法的原理是什么?它们为什么会冲突?

假设客户机C需要与供应商V提供的服务S对话。如果您只有一个SDK,那么您必须在客户机C上安装供应商V的SDK软件,以便与S对话。另一方面,如果供应商V详细说明了如何与服务S对话到位级别,然后,您可以在客户端C上编写自己的软件,直接与服务S对话。

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

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

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


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

它们实际上并不相互排斥。这更像是一个连续体,但系统背后的开发理念往往倾向于一端或另一端

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


另一方面,苹果(Apple)和微软(Microsoft)等拥有单一产品的公司有权选择另一种理念,即构建完整的端到端SDK。从理论上讲,通过抽象底层协议的复杂性,同时释放产品来做更复杂的事情,并减少开发人员的错误,这使得开发人员的工作更轻松。当然,仍然有比特,它们仍然在电线上,它们可以被反向工程。然而,与使用设计为可理解的协议相比,这要困难得多(数量级),尤其是当它被故意混淆或加密以服务于商业利益时。

如果您选择SDK路线,则不提供wire spec上的位非常重要,正如在中发生的那样。

我不认为这是一个真正的问题,所以。。。SDK给你一个翻译器,线上的比特给你罗塞塔石头?