自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一文帶你了解什么是API和SDK

開發(fā) 開發(fā)工具
隨著軟件規(guī)模的日益龐大,開發(fā)者常常需要把復(fù)雜的系統(tǒng)劃分成小的組成部分,這個(gè)時(shí)候,編程接口的設(shè)計(jì)就顯得尤為重要。良好的接口設(shè)計(jì)可以降低系統(tǒng)各部分的相互依賴,提高組成單元的內(nèi)聚性,降低組成單元間的耦合程度,從而提高系統(tǒng)的維護(hù)性和擴(kuò)展性。

隨著軟件規(guī)模的日益龐大,開發(fā)者常常需要把復(fù)雜的系統(tǒng)劃分成小的組成部分,這個(gè)時(shí)候,編程接口的設(shè)計(jì)就顯得尤為重要。良好的接口設(shè)計(jì)可以降低系統(tǒng)各部分的相互依賴,提高組成單元的內(nèi)聚性,降低組成單元間的耦合程度,從而提高系統(tǒng)的維護(hù)性和擴(kuò)展性。

而對(duì)于接口,最讓大家耳熟能詳?shù)哪^(guò)于API和SDK。這兩者都有哪些特點(diǎn),作為開發(fā)者又該如何選擇,今天的這篇文章,將給你全方位的解答。

 

[[263002]]

什么是API?如果你在百度百科上搜索,你會(huì)得到如下結(jié)果:

API(Application Programming Interface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問(wèn)特定的能力,而又無(wú)需訪問(wèn)源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。

通俗易懂的說(shuō),API 其實(shí)就是別人已經(jīng)寫好的可以實(shí)現(xiàn)特定功能的函數(shù),而你只需要調(diào)用他的方法,傳入他規(guī)定的參數(shù),然后這個(gè)函數(shù)就會(huì)幫你實(shí)現(xiàn)這些功能,且不需要知道這些功能的具體實(shí)現(xiàn)過(guò)程都是什么。

API 的程序功能包括以下這幾個(gè)方面:

遠(yuǎn)程過(guò)程調(diào)用(RPC)

通過(guò)作用在共享數(shù)據(jù)緩存器上的過(guò)程(或任務(wù))實(shí)現(xiàn)程序間的通信。

標(biāo)準(zhǔn)查詢語(yǔ)言(SQL)

是標(biāo)準(zhǔn)的訪問(wèn)數(shù)據(jù)的查詢語(yǔ)言,通過(guò)通用數(shù)據(jù)庫(kù)實(shí)現(xiàn)應(yīng)用程序間的數(shù)據(jù)共享。

文件傳輸

文件傳輸通過(guò)發(fā)送格式化文件實(shí)現(xiàn)應(yīng)用程序間數(shù)據(jù)共享。

信息交付

指松耦合或緊耦合應(yīng)用程序間的小型格式化信息,通過(guò)程序間的直接通信實(shí)現(xiàn)數(shù)據(jù)共享。

而至于SDK即為“軟件開發(fā)工具包”,是用于為特定軟件包、軟件框架、硬件平臺(tái)、操作系統(tǒng)等建立應(yīng)用軟件時(shí)所用的開發(fā)工具的集合。

SDK實(shí)現(xiàn)其功效的主要手段是封裝操作。封裝是在客戶端層面的Library(也叫做“包”或者“庫(kù)”)進(jìn)行的,這個(gè)Library可以是Dynamic Library(動(dòng)態(tài)庫(kù))或者 Static Library(靜態(tài)庫(kù)),它提供的是一些客戶端API接口。

當(dāng)然,SDK不光存在于客戶端,服務(wù)端也有,只要是封裝了一組完整的操作和規(guī)范就算。所以,可以說(shuō)SDK實(shí)際上是一種中間服務(wù)的功能,將一組不易使用及不透明的API封裝成另一組對(duì)第三方透明且易于使用的API。比如說(shuō)支付寶SDK,是把支付寶內(nèi)部的一些API操作封裝之后,暴露成易于外部開發(fā)人員使用以及兼顧數(shù)據(jù)安全性的另一組API,就可以稱為SDK。

云服務(wù)實(shí)現(xiàn)了IT資源與能力的共享,通過(guò)API和SDK,開發(fā)者得以像搭積木一樣快速搭建產(chǎn)品架構(gòu),這大大降低了開發(fā)成本與門檻。而對(duì)于軟件提供商來(lái)說(shuō),留出API和SDK,讓別的開發(fā)者來(lái)調(diào)用,形成生態(tài),軟件才能發(fā)揮***的價(jià)值;

那么問(wèn)題來(lái)了,兩種接口都是如此的優(yōu)秀,身為開發(fā)者,該如何選擇呢?

從本質(zhì)上來(lái)看,API是一個(gè)具體的函數(shù),一個(gè)確定的功能,已經(jīng)明確了它的作用(比如做加法)。而SDK就像是很多方法的集合體,是一個(gè)工具集。比如你要做加法,你就調(diào)用計(jì)算機(jī)SDK的加法API,要做減法就調(diào)用減法API,無(wú)論你想完成什么計(jì)算,SDK里總有能實(shí)現(xiàn)的方法。再比如你要開車去一個(gè)地方,車就是SDK,可以讓你完成到達(dá)目的地的目的。車上的方向盤,燈,發(fā)動(dòng)機(jī),油門,剎車像一個(gè)個(gè)API,你在使用SDK時(shí),就是調(diào)用一個(gè)個(gè)API功能。如果貼心一點(diǎn)的車,可能還帶有使用說(shuō)明(SDK說(shuō)明文檔)。

SDK還有一點(diǎn)是除了提供完善的接口,它還會(huì)給你提供開發(fā)環(huán)境。例如java的JDK里,除了各種API,還包括了java運(yùn)行需要的JRE。

而從整體運(yùn)維上來(lái)看

API開發(fā)成本低,對(duì)接比較簡(jiǎn)單,可以快速驗(yàn)證商業(yè)模式和用戶體驗(yàn),但是API會(huì)經(jīng)過(guò)對(duì)接平臺(tái),廠商會(huì)獲取到對(duì)接平臺(tái)相關(guān)數(shù)據(jù)信息。而SDK對(duì)接后的功能比較穩(wěn)定,響應(yīng)速度快,而且對(duì)接平臺(tái)相關(guān)數(shù)據(jù)不會(huì)被獲取,但是需要的開發(fā)環(huán)節(jié)較多,開發(fā)工作量大,對(duì)接周期略長(zhǎng)。

所以,大家在實(shí)際開發(fā)過(guò)程中,如果只是簡(jiǎn)單功能調(diào)用,還是使用API更快速便捷一些;如果是繁瑣復(fù)雜的功能,多數(shù)情況下還是使用SDK更穩(wěn)妥一些。

總而言之,沒(méi)有哪種接口是***的,只有哪種接口是最適合開發(fā)需求的。

【本文為51CTO專欄作者“移動(dòng)Labs”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

戳這里,看該作者更多好文

責(zé)任編輯:未麗燕 來(lái)源: 移動(dòng)Labs
相關(guān)推薦

2025-01-15 09:06:57

servlet服務(wù)器Java

2022-09-29 13:09:38

DataClassPython代碼

2019-07-04 15:16:52

數(shù)據(jù)挖掘大數(shù)據(jù)算法

2022-09-06 11:21:49

光網(wǎng)絡(luò)光纖

2023-05-17 11:33:45

梯度下降機(jī)器學(xué)習(xí)

2022-03-14 08:01:06

LRU算法線程池

2023-04-11 08:01:32

Web 開發(fā)源代碼映射

2023-11-20 08:18:49

Netty服務(wù)器

2018-10-22 08:14:04

2023-11-06 08:16:19

APM系統(tǒng)運(yùn)維

2022-11-11 19:09:13

架構(gòu)

2019-11-14 09:16:56

物聯(lián)網(wǎng)技術(shù)路由器

2024-05-27 00:00:00

.NET游戲引擎C#

2022-02-24 07:34:10

SSL協(xié)議加密

2023-11-08 08:15:48

服務(wù)監(jiān)控Zipkin

2023-10-27 08:15:45

2020-02-02 15:14:24

HTTP黑科技前端

2020-10-08 14:32:57

大數(shù)據(jù)工具技術(shù)

2022-04-28 09:22:46

Vue灰度發(fā)布代碼

2020-12-11 11:40:37

RDBAOFRedis
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)