Fanxは、オブジェクト指向の機能プログラミング言語です。 バージョン3.3は、主にasync-await関数を拡張し、それを使用して非同期IOの問題を解決しようとします。
async-awaitがクライアントUIフレームワークのネットワーク要求モジュールで使用される前は、今回はサーバー側で使用されていました。従来のブロッキングIOはパフォーマンスが低く、非同期IOには多くのコールバックがあるため、コードが読みにくくなります。async-awaitを使用すると、非同期IOのパフォーマンスを維持しながら、IOのブロックと同様の方法でコードを記述できます。
現在のネットワークフレームワークは、基本的なhttpプロトコル、サンプルコードをサポートしています。
const class HttpTestServer : HttpHandler {
override async Void onHttpService(HttpReq req, HttpRes res) {
res.headers["Content-Type"] = "text/html; charset=utf-8"
buf := NioBuf.makeMem(1024)
buf.printLine("<html>
<body>Hello World $req.uri</body>
</html>")
buf.flip
await res.writeChunk(buf)
}
static Void main() {
Server {
port = 8080
handler = HttpTestServer()
}.start
}
}
コードでは、待機するために実行すると、現在のタスクが一時停止され、IOイベントを監視するためにセレクタースレッドに渡されます。現在のスレッドはブロックされませんが、他の接続タスクの処理を続行します。セレクターがイベントの準備ができていることを検出すると、タスクは実行を再開するように通知されます。
Web開発であろうとアプリ開発であろうと、Fanx言語はフロントエンド開発とバックエンド開発で同じ言語を使用でき、それらの間のギャップを回避します。