圖片來源: 

GitHub

蘋果GitHub上開源以Swift編寫的跨平臺非同步事件驅動的網路應用程式框架SwiftNIO,這個框架目標並非提供給一般開發者,因為從根本上SwiftNIO是一個非常低階的工具,所以蘋果希望高階網路應用程式的框架可以用SwiftNIO來提供網路功能,開發者再以這些框架開發應用程式。

SwiftNIO的名字組成第一個單字是程式語言Swift,NIO則是非阻塞(Non-blocking)I/O的縮寫。蘋果表示,這是特別為每個連線都由一個執行序負責(Thread-Per-Connection)的並行模型使用者案例設計,改善其發生的效率低落或是無法維持連線品質的情況。

而SwiftNIO非阻塞I/O的設計,有別於多數常見的非阻塞I/O模型,SwiftNIO要求作業系統核心在進行I/O操作時主動發出通知,而非被動等待資料從網路傳送或接收。蘋果表示,多數的使用者不會想要直接使用SwiftNIO,他們反而會期待那些使用SwiftNIO處理底層網路功能的網頁應用程式框架。

SwiftNIO為高效能網路應用程式設計,但並不會在各抽象層提供完美的解決方案,SwiftNIO專注提供基礎的I/O功能與協定,並成為伺服器應用程式的磚塊之一,因而SwiftNIO倉儲庫僅包含非常重要的協定實作,像是HTTP等,因為蘋果認為,多數的協定實作應脫離SwiftNIO釋出循環,所以他們鼓勵社群維護自己協定實作,並將程式碼放置在主要SwiftNIO程式碼樹外。

SwiftNIO目標提供所有Swift支援的作業系統,不過目前還在macOS與Linux上測試,版本分別是macOS 10.12以及Ubuntu 14.04以上。


Advertisement

更多 iThome相關內容