WSGI、ペースト、パイロン-高度なWebテクノロジー

Pythonロゴ

単一のRailsではありません!


sm.orgからの引用。

HabréのWSGIのトピックは公開されていません。非識字の可能性を排除しようとします。私の意見では、関連する技術について話すのは興味深いことです。 同時に、PastesとPasteに触れます。 しかし、まず最初に。

WSGI



WSGI (Web Server Gateway Interface) -Pythonで書かれたWebサーバーとそこで実行されるWebアプリケーションの相互作用のためのインターフェイス。 WSGIはPython標準であり、 PEP 333で説明されています。 これは非常に若い技術です。 もともとPython Web Containerと呼ばれていたPhillip J. Ebyの発案

インターフェイスは、2003年12月7日にPython Web-SIGでPEPの候補として提出されました。 そして、2004年8月にその現代的な名前を得て、すばらしい航海に出ました。 この技術に関するいくつかの言葉。

現代のさまざまなプログラミング言語とWeb フレームワークは、間違いなく新しいプログラマーを驚かせるでしょう。 そして、より経験豊富な人は、ある言語で書かれたアプリケーションでさえ、非常に互換性がなく、コードを再利用できないことに驚いています。 あるサーバーから別のサーバーにプロジェクトを移動することは、しばしば大きな頭痛の種になります。 したがって、統一規格の出現は、技術開発における論理的なステップです。

WSGIは、 WebサーバーWebアプリケーションとの間のインターフェース(言い換えれば、レイヤー) です 。 したがって、アプリケーション側ではWebサーバーのように見え、サーバー側ではアプリケーションのように見えます。 これは重要な概念です。 彼女は、WSGIで書かれたプロジェクトでは、Apacheのmod_pythonで実行されているか、他のどこかのFastCGIのように実行されているかどうかはまったく同じだと言います。 また、選択したバンドルでAPIや環境を学習することなく、アプリケーションを作成できます。



こんにちは世界!



実際には非常に美味しそうです(WSGI互換アプリケーションの例):

  <b> def </ b>アプリ(environ、start_response):
   start_response(<span style = "color:#693"> '200 OK' </ span>、[(<< span style = "color:#693"> 'Content-Type' </ span>、<span style = " color:#693 "> 'text / plain' </ span>)])
   return [<span style = "color:#693"> 'Hello World!\ n' </ span>] 


この例は簡潔で示唆的なものです。





貼り付けが効く



3行のコードを追加して、アプリケーションの動作を今すぐ確認したいですか?



  <b> if </ b> __name__ == <span style = "color:#693"> '__ main__' </ span>:
   <b>から</ b>貼り付け<b>インポート</ b> httpserver
   httpserver.serve(app、host = <span style = "color:#693"> '127.0.0.1' </ span>、port = <span style = "color:#693"> '8080' </ span>) 


貼り付けは、メタフレーム、Webプログラマーと管理者の両方のためのコンポーネントとユーティリティのセットです。

管理者:



プログラマーに、次に貼り付け



この場合、Pasteに組み込まれたHTTPサーバーを使用して、すべてがどのように機能するかを即座に示しました。 このサーバーは、フレームワークを使用して実際のアプリケーションを開発するプロセスでも使用されます。 ただし、これは完全に標準で必要なものであり、 Ruby on Railsでも使用されています

貼り付けには、 多くの便利なものも含まれてます。 それらの存在と豊富さは、フレームワークとメタフレームの両方としてペーストについて話すことを可能にします。 プレフィックスメタは、フレームワークを作成するためのフレームワークであり、ギリシャ語のμετά(後、後ろ、間に)から来ていると言います。



コンセプト:アプリケーションスタック



WSGIに戻ります。 WSGIアプリケーション内でリクエストの前処理(たとえば、Cookie内のセッションIDを使用してデータベースからユーザーを復元する)を実行し、別のWSGIアプリケーションを呼び出して後者の結果を返すとどうなるでしょうか。 それはほとんど認証をサポートするための計画をするでしょう。 そして、最初のアプリケーションが2番目のアプリケーションを呼び出し、そのアクティビティの結果にXSL変換を適用する場合はどうでしょうか?

ここに別の重要な概念があります。 これらの例の最初のアプリケーションは、レイヤーまたはミドルウェアとして機能します。 そして、すべてのミドルウェアの全体がアプリケーションスタックを形成します。 したがって、コンポーネントを接続することさえできず、WSGIベース上で適切な順序で配置するだけの非常にモジュール式のシステムが得られます(上からアプリケーションを忘れることはありません)。



このようなシステムを使用すると、 SQLAlchemy- 「アプリケーション開発者にSQLのフルパワーと柔軟性を提供するPython SQLツールキットとオブジェクトリレーショナルマッパー」、 AuthKit-ユーザーを認証するための汎用で柔軟なフレームワークなどを接続できます。 そしてもちろん-例外をキャッチして「oops」ページと「oh-oh-oh」ページに変換するためのミドルウェア。 Pasteは、構成などの非Vebパーツのミドルウェアでのラッピングを奨励していると言わなければなりません。 シンプルで、明白で、無条件に柔軟なアプリケーション構造が判明しました。



すべて一緒に、そしてもっと何か-Pylons



したがって、WSGIは、Webサーバーと多層ミドルウェア構造との接続を提供します。 貼り付けは、テスト、例外のキャッチ、リクエストの内部リダイレクト、さらにはファイルアップロードインジケーター(アップロード進行状況モニター)といった一般的なタスクの解決に役立ちます。 上記のミドルウェアの例として、SQLを1行も使用せずにデータベースでの承認、認証、および作業を行いました。

ここで、 Routesを使用してリクエストのルーティングを追加しましょう。AJAXのサーバー側はWebHelpersです (両方のコンポーネントは完全にRoRに移植されています)。コントローラーの構造とPylonsの取得-Python用の高度なWSGI互換のWebフレームワークであり、Python、RoR、およびその他のフレームワークとプロジェクトのすべてを最大限に活用しています

公平性と批判の観点から、これらの技術は非常に新しいものであることに注意してください。たとえば、Pylonsはバージョン0.9.5に戻り、AuthKitは開発中であり、本番環境での使用は推奨されていません。 それでも、WSGIが有望であり、Pasteライブラリなどで満たされたWebフレームワークがほぼ完璧な(または標準的な)Webフレームワークであることを納得させることを願っています。 TurboGearsCherryPyDjangoおよびその他のフレームワークでWSGIテクノロジーを適用できますが。

もちろん、少なくともいくつかの客観的な比較については、十分な経験はありませんが、PylonsとDjangoで同じアプリケーションを作成すると、Pylonsが本当に操縦していると結論付けることができます。



いくつかの使用






All Articles