BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース KotlinのHTTPツールキットKtor 3.0がパフォーマンスを向上させ、サーバー送信イベントのサポートを追加

KotlinのHTTPツールキットKtor 3.0がパフォーマンスを向上させ、サーバー送信イベントのサポートを追加

原文リンク(2024-10-24)

Ktorは、Kotlinの非同期HTTPサーバーおよびクライアントアプリケーションを作成するためのネイティブフレームワークで、バージョン3に達しましたkotlinx-ioが採用され、互換性を破る変更を犠牲にして、パフォーマンスが向上し、Server-Sentイベント、CSFR、ZIPファイルからの静的リソースの提供などのサポートが追加された。

kotlinx-ioは低レベルのI/Oライブラリで、変更可能なバイト列であるBufferを抽象を中心に構築されている。Bufferはキューのように動作し、末尾にデータを書き込み、先頭から読み取る。Ktor 3では、kotlinx.io.SourceをエイリアスとしてInput型を実装し、Outputを非推奨とし、ByteReadChannelByteWriteChannelを再実装している。これらの低レベルクラスを直接使用している開発者は、新しいAPIに移行するためにアプリを修正する必要がある。

kotlinx-ioがもたらす主な利点は、パフォーマンスの向上だ。

ByteReadChannel、ByteWriteChannel、ネットワークインターフェース間の不要なバイトのコピーを削減しました。これにより、より効率的なバイト変換と構文解析が可能になり、将来的な性能向上の余地が生まれました。

JetBrainsは独自のベンチマークに基づき、新しいKtorはファイルやソケット操作に必要な時間が大幅に短縮され、場合によっては90%も削減されると述べている。

パフォーマンスに加えてKtor 3.0でもっとも大きな変更点は、サーバーからクライアントへの通信チャネルの作成を可能にするサーバープッシュ技術であるサーバー送信イベントのサポートである。サーバー送信イベントは、データがほとんど一方向に流れるシナリオ、特にファイアウォールのブロックを回避したり、接続の切断に対処したりする必要がある場合に、WebSocketよりも望ましい。一方、WebSocketはより効率的で、レイテンシが低くなる。

Ktor 3.0の他の便利な機能は、任意のルートに対して指定できるクロスサイトリクエストフォージェリ(CSRF)のサポートと、ZIPアーカイブから静的リソースを直接提供する機能である。ZIPアーカイブはベースパスから提供され、サブディレクトリを含むことができ、それらはURL構造に適切に反映される。

Ktor 3についての最後の注記として、KtorクライアントがビルドターゲットとしてWasmをサポートするようになったことが挙げられる。しかし、Kotlin/Wasmはまだアルファ版の段階であるため、Ktor 3でのWasmサポートはまだ実運用には適していない。

Ktorを使用して新しいプロジェクトを開始するには、Ktorのウェブサイトにアクセスし、要件にもっとも適したプラグインを選択する。利用可能なプラグインは、認証、ルーティング、モニタリング、シリアライゼーションなどが含まれる。既存のKtor 2プロジェクトを更新してKtor 3を使いたい場合は、JetBrainsが提供する移行ガイドを必ず読んでほしい。

作者について

この記事に星をつける

おすすめ度
スタイル

BT