wsgi、uwsgi、および asgi プロトコル間の関係

WSGI, UWSGI和ASGI

最初に WSGI とは何か、次に UWSGI とは何か、そして ASGI について紹介します。

        最初に紹介するCGIとは、正式名称はCGI(Common Gateway Interface、Common Gateway Interface)で、クライアントとWebサーバーの間で通信するプログラムを定義したもので、例えば通常の状況でクライアントがリクエストを送信する際に、 CGI はリクエストのコンテンツを分析し、計算されたコンテンツは計算後にカプセル化されます。たとえば、サーバーは HTML ページを返し、返されたコンテンツの形式は http プロトコルに従って構築されます。関連する TCP 接続、http 元のリクエスト、および対応するフォーマットはすべてソフトウェアによって実行され、上記の作業を完了するにはプログラム、つまり CGI が必要です。

  WSGI については、正式名称はWeb サーバー ゲートウェイ インターフェイス (Python Web Server Gateway Interface、WSGI) で、 Web サーバーと、Python 言語用に定義された Web アプリケーションまたはフレームワークとの間のシンプルかつ汎用的なインターフェイスです。 Web サーバーとクライアント間の通信を処理するには、 (このモジュールの機能である wsgiref モジュールを使用して、django フレームワークを例として取り上げます)

django フレームワークを例にとると、wsgiref モジュールが使用されます。このモジュールの機能は、
    ポート 8000 をリッスンし、WSGI プロトコルに従って http リクエストをアプリケーションの environ パラメーターに変換し、アプリケーション関数を呼び出すことです。
    wsgiref がアプリケーションの関数を提供します レスポンスヘッダの設定を http プロトコルのレスポンスヘッダに変換し、アプリケーションの戻り値 ( return ) をレスポンスボディとして使用します http プロトコルに従ってレスポンスを生成し返信しますブラウザ。

UWSG I、WSGI プロトコル、uwsgi、http およびその他のプロトコルを実装する Web サーバーです。

uwsgi は、あらゆる種類の情報を伝送できるバイナリ プロトコルです。uwsgi データ パケットの最初の 4 バイトは、情報の種類を記述するために使用されます。このプロトコルは主に tcp モードで動作します。uwsgi は、通信プロトコルではなく回線プロトコルですそのため、uWSGIサーバーと他のWebサーバー間のデータ通信によく使用されます。

uwsgi プロトコルは、送信される情報の種類を定義するために使用される uWSGI サーバー独自のプロトコルです。

Nginxの HttpUwsgiModule の機能は、uWSGI サーバーとのやり取りです。WSGI は Web サーバー ゲートウェイ インターフェイスです。これは、Web サーバー (nginx、uWSGI など) が Web アプリケーション (Flask フレームワークで書かれたプログラムなど) と通信するための仕様です。

uWSGI サーバーは管理者向けに、コマンド ライン、環境変数、XML、INI、YAML、JSON、SQlite3 データベース、LDAP などのさまざまな構成方法を提供します。

さらに、その設計は完全にモジュール化されており、互換性を確保するために、さまざまな技術的アプリケーションに合わせてさまざまなプラグインを使用できることを意味します

 これは、非同期ゲートウェイ プロトコル インターフェイスであり、ネットワーク サービスと Python ドリンク アプリケーション間の標準インターフェイスであり、http、http2、WebSocket などのさまざまな一般的なプロトコル タイプを処理できます。

WSGIとASGIの違いは次のとおりです。

WSGI は http プロトコル モードに基づいて開発されており、WebSocket をサポートしていません。ASGI の誕生により、Python の WSGI が現在の Web 開発におけるいくつかの新しいプロトコル標準をサポートしていないという問題が解決されました。同時に、ASGI は独自のモードとWebsocket の拡張、つまり ASGI は WSGI の拡張です。

ASGIの応用事例については次回のブログでお話しましょう

おすすめ

転載: blog.csdn.net/bruce_van/article/details/98477037