看新聞很累?看技術(shù)新聞更累?試試下載InfoQ手機(jī)客戶端,每天上下班路上聽新聞,有趣還有料!
在近日舉行的try! Swift東京大會(huì)上,蘋果宣布了SwiftNIO項(xiàng)目,這是一個(gè)用Swift編寫的、類似Netty的非阻塞、跨平臺(tái)I/O框架。
SwiftNIO是一個(gè)為開發(fā)高性能服務(wù)器和客戶端而設(shè)計(jì)的事件驅(qū)動(dòng)的異步網(wǎng)絡(luò)框架。目前,該框架在macOS (10.12+)和Linux(Ubuntu 14.04)上進(jìn)行開發(fā)和測試。據(jù)蘋果介紹:
SwiftNIO是一個(gè)跨平臺(tái)的、事件驅(qū)動(dòng)的異步網(wǎng)絡(luò)框架,用于開發(fā)可維護(hù)的高性能協(xié)議服務(wù)器&客戶端。
SwiftNIO旨在成為一個(gè)構(gòu)建網(wǎng)絡(luò)應(yīng)用程序和框架的底層工具,致力于提供低開銷的I/O原語和協(xié)議實(shí)現(xiàn)。因此,通常可以將SwiftNIO視為一個(gè)構(gòu)造塊,用于構(gòu)建供應(yīng)用程序使用的高層網(wǎng)絡(luò)通信框架,或者是供有苛刻要求的應(yīng)用程序直接使用的高性能框架。通過這種方法,針對(duì)大多數(shù)網(wǎng)絡(luò)協(xié)議的支持在源碼樹外被實(shí)現(xiàn)出來。按照蘋果SwiftNIO工程師Cory Benfield的說法,雖然HTTP/1.1協(xié)議的支持在源碼樹內(nèi),但TLS支持、Websocket和HTTP/2支持在源碼樹外。
EventLoop是SwiftNIO提供的一個(gè)基本抽象。該對(duì)象會(huì)等待事件,并在事件發(fā)生時(shí)觸發(fā)某個(gè)回調(diào)方法。在理想情況下,會(huì)有一個(gè)或者兩個(gè)核心事件循環(huán)。為了在事件循環(huán)之間分配負(fù)載,可以使用EventLoopGroup。在EventLoop之上是Channel和ChannelPipeline。它們提供了一種友好的方式,可以在與特定文件描述符關(guān)聯(lián)的事件到來時(shí)發(fā)送通知,并調(diào)度處理。ChannelHandler提供了管道順序執(zhí)行事件處理的步驟。所有的處理器都是在同一個(gè)線程中執(zhí)行,不需要同步,實(shí)現(xiàn)起來更簡單。這也意味著處理器不能阻塞。SwiftNIO提供的最高層抽象是Bootstrap,簡化特定場景的通道創(chuàng)建,如ServerBootstrap、ClientBootstrap、DatagramBootstrap。要了解所有細(xì)節(jié),請(qǐng)查閱官方文檔。
在Package.swift中添加以下依賴項(xiàng)可以把SwiftNIO包含到自己的項(xiàng)目中:
此外,SwiftNIO提供了兩個(gè)示例NIOChat和NIOEcho,說明該框架的使用方法。
相關(guān)內(nèi)容 相關(guān)廠商內(nèi)容 用Kafka Streams搭建實(shí)時(shí)的廣告消費(fèi)系統(tǒng) OpenResty十年開源的歷程和思考 阿里巴巴Blink流計(jì)算平臺(tái)介紹與實(shí)踐 Apache Kafka的過去,現(xiàn)在,和未來 相關(guān)贊助商
您好,朋友! 您需要 注冊一個(gè)InfoQ賬號(hào) 或者 登錄 才能進(jìn)行評(píng)論。在您完成注冊后還需要進(jìn)行一些設(shè)置。 獲得來自InfoQ的更多體驗(yàn)。 告訴我們您的想法 允許的HTML標(biāo)簽: a,b,br,blockquote,i,li,pre,u,ul,p 當(dāng)有人回復(fù)此評(píng)論時(shí)請(qǐng)E-mail通知我
關(guān)閉 by 發(fā)布于 查看 回復(fù) 回到頂部