BT

Appleは、Swift向け低レベルノンブロッキングI/OフレームワークのSwiftNIOをオープンソース化

| 作者: Sergio De Simone フォローする 17 人のフォロワー , 翻訳者 編集部T フォローする 1 人のフォロワー 投稿日 2018年4月4日. 推定読書時間: 3 分 |

原文(投稿日:2018/03/04)へのリンク

読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールとWeb通知を受け取ることができます新機能の詳細をご覧ください。

最近のtry! Swift Conference in TokyoでAppleはSwiftNIOプロジェクトを発表した。NottyのようなノンブロッキングクロスプラットフォームのI/OフレームワークはSwiftで書かれている。

SwiftNIOは、高性能サーバ、クライアントの開発向けの非同期のイベント駆動ネットワークフレームワークを目指している。これは現在、macOS (10.12+)とLinux (Ubuntu 14.04)で開発、テストされている。 Appleは次のように述べている。

SwiftNIOは、メンテナンス可能な高性能プロトコルのサーバ&クライアントの迅速な開発のための、クロスプラットフォーム非同期イベント駆動のネットワークアプリケーションフレームワークです。

SwiftNIOは、ネットワークで接続されたアプリケーションやフレームワークを構築するための基本機能を提供するツールを目指している。それは、低オーバーヘッドのI/Oプリミティブとプロトコル実装を提供することにフォーカスしている。主にSwiftNIOは、アプリケーションが使用する上位レベルのネットワーキング通信フレームワークのためのビルディングブロックと見ることができる。あるいは、非常に厳しい要件を持つアプリケーションが直接使用できる高性能フレームワークと見ることができる。このアプローチの結果として、ほとんどのネットワーキングプロトコルのサポートは、管理外で実装される。SwiftNIOに携わったAppleエンジニアの一人であるCory Benfield氏によると、HTTP/1.1プロトコルのサポートは管理されるが、TLSサポート、Websocket、HTTP/2のサポートは管理外である。

SwiftNIOによって提供される基本的な抽象化は、EventLoopである。EventLoopは、イベントが発生するのを待ってコールバックを発生させるオブジェクトである。コアに対して1つまたは2つのイベントループがあるのが理想的である。イベントループ間の負荷の分散させるために、EventLoopGroupを使用できる。EventLoopsの上には、ChannelsとChannelPipelinesがあり、それは、指定されたファイル記述子に関連する入力イベントを通知し、それを処理するために作業をディスパッチする、より扱いやすい方法を提供する。ChannelHandlerはステップを提供し、パイプラインがイベントを処理するために、そのステップに従って順次実行する。すべてのハンドラは同じスレッド上で実行され、同期を必要としないことにより、実装がシンプルになる。これはまた、ハンドラがブロックできないことを意味する。SwiftNIOが提供する最高レベルの抽象化はBootstrapで、ServerBootstrap、ClientBootstrap、DatagramBootstrapなどの特定のユースケース向けのチャネルの作成を効率化している。すべての詳細は、公式文書で見つけることができる。

自身のPackage.swiftに以下の依存関係を追加することでSwiftNIOを独自のプロジェクトに含めることができる。

dependencies: [
    .package(url: "https://github.com/apple/swift-nio.git", from: "1.0.0")
]

さらに、フレームワークの使い方を示すSwiftNIOレポジトリにNIOChatとNIOEchoという2つのサンプルアプリケーションがある。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT