API

什麼是API?html

應用程序編程接口,簡稱API(Application Programming Interface),就是軟件系統不一樣組成部分銜接的約定。程序員

在數據封裝時,網絡分層中的每一個層相互之間會用接口進行交互並提供服務,其中應用層與用戶之間的接口稱之爲應用程序接口(API,Application Programming Interface)。API其實是一種功能集合,也可說是定義、協議的集合,不管是那種集合,它的實質都是經過抽象爲用戶屏蔽實現上的細節和複雜性。web

從用戶角度看應用程序接口,表現爲一系列API函數,用戶可使用這些函數進行網絡應用程序開發。從網絡角度看,應用程序接口給用戶提供了一組方法,用戶可使用這組方法嚮應用層發送業務請求、信息和數據,網絡中的各層則依次響應,最終完成網絡數據傳輸。數據庫

程序介紹編程

隨着軟件規模的日益龐大,咱們須要把複雜系統劃分紅小的組成部分,編程接口的設計十分重要。程序設計的實踐中,編程接口的設計首先要使系統的職責獲得合理劃分。良好的接口設計能夠下降系統各部分的相互依賴,提升組成單元的內聚性,下降組成單元間的耦合程度,從而提升系統的維護性和擴展性。緩存

API之主要目的是提供應用程序與開發人員以訪問一組例程的能力,而又無需訪問源碼,或理解內部工做機制的細節。提供API所定義的功能的軟件稱做此API的實現。API是一種接口,故而是一種抽象。 A reference implementation of an API is the implementation created by the designer of the API, or one which other implementations of the API are expected to be compared against.網絡

例如,圖形庫中的一組API定義調用繪製圖標函數的方式,以於屏幕上顯示圖標。程序中調用,編譯時鏈接到這組API,執行時便調用API的實現(庫)來顯示圖標。數據結構

系統分類app

操做系統的API可用來分配內存或訪問文件。許多系統與應用程序提供API接口與實現,好比圖形系統,數據庫,網絡,Web服務,甚至於某些遊戲。框架

一組API常常是一套軟件開發工具包(SDK)的一部分。SDK亦可包含其它工具亦或至於硬件,兩個術語並不徹底等同.

API又分爲(Windows、Linux、Unix、Mac等系統的)系統級API,及非操做系統級的自定義API。做爲一種有效的代碼封裝模式,微軟Windows的API開發模式已經爲許多商業應用開發的公司所借鑑,並開發出某些商業應用系統的API函數予以發佈,方便第三方進行功能擴展。如Google、蘋果電腦公司,以及諾基亞等手機開發的API等等。

API有諸多不一樣設計。用於快速執行的接口一般包括函數,常量變量與數據結構。也有其它方式,如經過解釋器,或是提供抽象層以遮蔽同API實現相關的信息,確保使用API的代碼無需更改而適應實現變化。

API:應用程序接口(API:Application Program Interface)應用程序接口(API:application programming interface)是一組定義、程序及協議的集合,經過 API接口實現計算機軟件之間的相互通訊。API 的一個主要功能是提供通用功能集。程序員經過使用 API函數開發應用程序,從而能夠避免編寫無用程序,以減輕編程任務。 API 同時也是一種中間件,爲各類不一樣平臺提供數據共享。根據單個或分佈式平臺不一樣軟件應用程序間的數據共享性能,能夠將 API 分爲四種類型:遠程過程調用(RPC):經過做用在共享數據緩存器上的過程(或任務)實現程序間的通訊。 標準查詢語言(SQL):是標準的訪問數據的查詢語言,經過通用數據庫實現應用程序間的數據共享。 文件傳輸:文件傳輸經過發送格式化文件實現應用程序間數據共享。 信息交付:指鬆耦合或緊耦合應用程序間的小型格式化信息,經過程序間的直接通訊實現數據共享。 當前應用於 API 的標準包括 ANSI 標準 SQL API。另外還有一些應用於其它類型的標準尚在制定之中。API能夠應用於全部計算機平臺和操做系統。這些 API以不一樣的格式鏈接數據(如共享數據緩存器、數據庫結構、文件框架)。每種數據格式要求以不一樣的數據命令和參數實現正確的數據通訊,但同時也會產生不一樣類型的錯誤。所以,除了具有執行數據共享任務所需的知識之外,這些類型的 API還必須解決不少網絡參數問題和可能的差錯條件,即每一個應用程序都必須清楚自身是否有強大的性能支持程序間通訊。相反因爲這種 API只處理一種信息格式,因此該情形下的信息交付 API 只提供較小的命令、網絡參數以及差錯條件子集。正由於如此,交付 API方式大大下降了系統複雜性,因此當應用程序須要經過多個平臺實現數據共享時,採用信息交付 API 類型是比較理想的選擇。API 與圖形用戶接口(GUI)或命令接口有着鮮明的差異:API 接口屬於一種操做系統或程序接口,然後二者都屬於直接用戶接口。有時公司會將 API 做爲其公共開放系統。也就是說,公司制定本身的系統接口標準,當須要執行系統整合、自定義和程序應用等操做時,公司全部成員均可以經過該接口標準調用源代碼,該接口標準被稱之爲開放式 API。

常見接口

應用層的應用程序接口有不少,而且發展很快,比較常見的如socket、FTP、HTTP以及telnet。這些接口從大類上可分爲四類:

  • 遠程過程調用(RPC,Remote Procedure Call Protocol)
  • 數據查詢接口
  • 文件類接口
  • 數據通訊接口

例如FTP協議就是文件類接口,基於FTP,用戶能夠實現文件在網絡間的共享和傳輸。而socket和HTTP可歸結爲數據通訊接口,基於這兩種接口,用戶能夠開發網絡通訊應用程序,以及web頁面交互程序。固然若是從編程開發角度看,不管是FTP、HTTP仍是telnet,都是基於socket接口開發出來的應用層協議,是對socket接口的進一步封裝和抽象,從而爲用戶提供更高一層的服務和接口。

socket有時稱之爲「Berkeley Socket」,它是最先由伯克利開發的應用程序接口。經常使用的socket類型有兩種:流式socket(SOCK_STREAM)和數據報式socket(SOCK_DGRAM)。

  • 流式socket是一種面向鏈接的socket,針對於面向鏈接的TCP服務應用。
  • 數據報式socket是一種無鏈接的socket,對應於無鏈接的UDP服務應用。

從用戶接口意義上講,還有傳輸層的TLI接口,是由AT&T開發的,有時也稱做XTI。它是傳輸層爲用戶提供的應用程序接口,能夠用來在傳輸層進行應用開發。

 

 

注:來自360百科

相關文章
相關標籤/搜索