四大PythonのWebプログラミングフレームワーク

四大PythonのWebプログラミングフレームワーク

Pythonのネットワークプログラミングフレームワークは、現在、数十、彼らは明らかに非現実的である学ぶ一つずつ限り多くを持っています。しかし、これらのフレームワークは、システムのアーキテクチャと動作環境では多くの共通点を持って、記事は、PythonのWeb開発フレームワークの共通知識に基づいて学ぶために読者を取り、現在主流のPythonのWebフレームワークの4種類:ジャンゴ、トルネード、フラスコ、ツイスト。

ネットワークFrameworkとMVCアーキテクチャ

いわゆるネットワークのフレームワークは、基盤となるネットワークアプリケーション、スレッド、プロセスなどせずに、Webアプリケーション、および契約の加工面のビジネスロジックの開発に集中する開発者を可能にPythonパッケージのセットを指します。ネットワークアプリケーションの品質を向上させながら、これは非常に、開発者の生産性を向上させることができます。

言語のPythonの数十のための現在の開発フレームワークでは、ほぼすべてのフルスタックのWebフレームワークやガイドのは、MVCアーキテクチャを使用してWebアプリケーションを開発する開発者を余儀なくされています。パッケージに加えて、いわゆるフルスタックのWebフレームワークは、ネットワークおよびスレッドの操作を意味し、それはまた、HTTPスタック、データベース管理を読み書きするための一連の機能のネットワークフレームワーク、HTMLテンプレートエンジンを提供します。記事は、典型的な全極ネットワークスタックフレームですジャンゴ、トルネード、フラスコに焦点を当てて、ツイストは、インタフェース機能HTMLテンプレートエンジンを提供するために、基盤となるネットワークせずに高性能パッケージに集中、それはフルスタックフレームと呼ばれることができません。

MVC(モデル-ビュー-コントローラ)モデルは、最初の1980年代のSmalltalkプログラミング言語の内部アーキテクチャである、トリグヴェReenskaugによって1978年に提案されました。MVCは、後に、他の言語を学ぶソフトウェア工学のソフトウェアアーキテクチャのモデルとなりました。MVC Webアプリケーションシステムは、3つの基本的な部分に分かれています。

モデル(モデル):モデルのみがそれを通して機能インタフェースを提供し、アプリケーション及びデータ処理方法に関するビジネスロジックとデータ、データ論理処理アプリケーションプログラムのためのWebアプリケーションの一部をカプセル化するために使用インターフェイスは、モデルのすべての機能を得ることができます。モデルはビューとコントローラに依存しない、彼らはいつでもデータにアクセスするためのモデルを呼び出すことができます。いくつかのモデルはまた、ビューに登録またはコントローラは、リアルタイムのデータ更新を提供されたイベント通知メカニズムを提供します。

ビュー(Viewは):Viewは、ユーザーへの直接出力され、データの表示やプレゼンテーションを担当しています。モデルMVCは、通常、複数のビューを提供しています。データモデルのリアルタイム更新を入手するためには、ビューは、できるだけ早くモデルに登録する必要があります。

制御装置(コントローラ):これは、ビューの逆関数として見ることができる、ユーザ端末からのユーザ入力を収集します。ユーザの入力結果が変化を見ると、この変更は、ビューにモデルを通じて反映されなければなりません。MVCアーキテクチャでは、コントローラは、一般的にモデルとしてサービスデータの整合性、すなわち、データセンターを改善ビューと直接通信することができません。

互いに分離し、これらの三つの基本的な部分は、そのようなことは、改善し、ユーザーインターフェースと対話プロセスのアップグレードにおいて、ビジネスロジックとデータアクセスコードを書き換える必要はありません。MVCアーキテクチャは、図1に示します。

MVCアーキテクチャ図

注意:Pythonの以外の言語でのMVCはまた、VC ++ MFC、Javaの構造体と春、C#.NET開発フレームワークなどのアプリケーションの広い範囲を持って、読者は深遠な経験を持っている必要があります。
4種類のPythonネットワークフレーム:ジャンゴ、竜巻、フラスコ、ツイスト

今日の主流のPythonのWebフレームワークでの学習の次の4種類。

エンタープライズ開発フレームワーク--Django

ジャンゴは、カンザス(カンザス州)州で2003年に誕生した、もともと2005年に、オンラインニュースのウェブサイトを作るために使用された、オープンソースのWebフレームワークになるために、BSDライセンスの家族に加わりました。その優雅豊富な(開発)を再生意味ジャンゴ・ジャンゴという名前のベルギーのジャズミュージシャンジャンゴジャンゴ・ラインハルトという名前の著者によると、音楽(Webアプリケーション)を提供しています。

これは、現在、Pythonの世界で最も有名で、最も洗練されたネットワークのフレームワークです。当初はオンラインニュースのウェブサイトを作るために使用され、それが今、最も広く使用されているPythonのWebフレームワークへと発展しています。同時に非常に強力、ジャンゴのモジュール間の比較的近いと組み合わせることで、彼らは問題が発生した際に、開発者が解決策を見つけるためにできるように、比較的閉じたシステムが、その強力なオンラインドキュメントや開発コミュニティです。

Djangoフレームワークの特性

Djangoの機能、他のPythonのWebフレームワークと比較すると、最も完全で、Djangoはサービスリリース、ルートマップ、テンプレート、プログラミング、データ処理機能の完全なセットを定義します。また、これは、Djangoの開発者が独自の定義を設定し、このスキルを習得するためのモジュールはDjangoの間に緊密な結合必要があることを意味します。ジャンゴの主な特徴は次の通りです。

十分に文書化:開発と改善の10年後、Djangoはアプリケーションの広い範囲を持っており、オンラインドキュメントを改善し、開発者は、問題が発生したときの解決策を見つけるために、オンラインドキュメントを検索することができます。
統合されたデータアクセスコンポーネント:他の技術(DBI、SQLAlchemyの、など)を学習することなくデータベースにアクセスするために、開発者を有効にDjangoの独自のデータベースORMモデル層成分。
強力なURLマッピング技術:DjangoのURLマッピングを管理するために正規表現を使用するので、開発者に高度な柔軟性をもたらします。
背景管理システムが自動的に生成します。簡単な構成によって、開発者と数行のコードは、完全なバックエンドのデータ管理Webコンソールを達成することができます。
エラー情報は完了です:異常動作があった場合、Djangoは、開発者は、このようなすぐにエラーを訂正するために、開発者を可能に抜け等が設定参照xxxの部品、などの問題を見つけやすくするために非常に完全なエラーメッセージの開発とデバッグのプロセスを提供することができます。

Djangoの組成構造

Djangoは主に以下のコンポーネントで構成されたWeb開発フレームワークのMVCアーキテクチャ以下です。

管理ツール(管理):静的ファイルのコマンドツールを維持し、内蔵のサイト、データ移行のセットを作成します。
モデル(モデル):データフィールド、メタデータ、データ関係、および動作の定義を含む、データ・アクセス・インタフェース・モジュールを提供します。
ビュー(ビュー):Djangoのビューは、テンプレートなどを結合、メイン関数URLマッピングメカニズムを含む操作とHTTPリクエスト及びレスポンスのデータ・フローのシリーズを、カプセル化します。
(テンプレート)テンプレート:タグやフィルタは、ページを定義生成する組み込みの方法の数と、独自のページをレンダリングするためのDjangoテンプレート言語のセットです。
フォーム(Form1の):組み込みデータ型とコントロールによって生成されたHTMLフォーム。
管理ステーション(管理者):モデルを管理する必要の声明、すぐにバックグラウンドデータ管理Webサイトを生成します。

高い同時実行処理フレームワーク--Tornado

竜巻は、Pythonで書かれた、強力でスケーラブルなWebサーバーを使用することです。それは十分に高いネットワークトラフィックを処理する際の強力なパフォーマンスだったが、それが作成するときに、軽量で書き込みを十分に持っている、そしてアプリケーションやツールが多数で使用することができます。トルネードフレームワークは、FriendFeedのサイトのための基礎として、2009年9月10日リリースで、コミュニティの多くの支持を受けている、と別の機会の数に適用されています。FriendFeedのやFacebookに加えて、その上のQuoraの、Turntable.fm、Bit.ly、HipmunkとMyYearbookとを含むステアリングトルネードの生産に多くの企業が、あります。

他のネットワークへのPythonフレームに対しては、竜巻は、以下の特性を有しています。

完全なWebフレームワーク: Djangoの、フラスコでというように、のような、トルネードはまた、URLのルートマッピング、リクエストコンテキスト、レンダリング技術、Webアプリケーション開発ツールに必要なテンプレートベースのページを提供します。
それは、効率的なネットワークライブラリ、パフォーマンスやツイスト、Gevent他の同等の下のフレームのPythonです:タイムアウトイベントハンドリング、非同期I / Oのサポートを提供します。Webアプリケーションフレームワークはまた、バックオフィスアプリケーションクローラアプリケーション、物事オフ、ゲームサーバを行うために使用することができ、このほかには、トルネードサーバーになります。
効率的にHTTPClientを提供:サーバー側のフレームワークに加えて、トルネードはさらに、非同期のHTTPクライアントベースのフレームワークを提供します。
効率的な内部HTTPサーバを提供します:他のPythonのWebフレームワーク(ジャンゴ、フラスコ)しながらも、内部HTTPサーバを提供していますが、唯一のテスト環境で使用するパフォーマンス上の理由から、彼らはHTTPサーバー。トルネード竜巻が密接に非同期呼び出しに統合HTTPサーバが直接本番環境で使用することができます。
完全なWebSocketをサポート: WebSocketのHTML5ブラウザとサーバ間のリアルタイム双方向通信を実現するための新しい標準です。
これらの特性のトルネード、トルネードは多くの場合、むしろ完全ジャンゴとして大規模なサイトの設立に焦点を当てたよりも大規模なサイトのためのインタフェースのサービスフレームワークとして使用され、この章では、竜巻非同期とコルーチンプログラミングを説明するに焦点を当てているため、認証フレームワーク、非ユニークWSGI展開。

フレームワークの迅速な確立をサポートしています--Flask

フラスコは、部族の若いのPythonのWebフレームワークである、それは他のフレームワークの利点を吸収して、小規模なプロジェクトに彼らの主な領域を定義することができた、2010年に登場しました。同時に、それは拡張可能であり、フラスコは、開発者がどのようなプラグインのデータベースにそのデータを保存することを選択してみましょう。多くの機能は、シンプルでありながら高性能なウェブサイトはhttp://httpbin.org/は、HTTPパフォーマンステストプロジェクトのシンプルでありながら強力な機能であるなど、フラスコの枠組みや構造に基づいています。フラスコは、シンプルで小型のマイクロフレームワークアプリケーションの需要です。

他のPython言語のWebフレームワークの相対的な次のように、フラスコの機能にまとめることができます。

内蔵デバッガの開発サーバーと
ネットワークのデバッグは、良いサイトがプロセスに文法エラーや論理エラーを修正する、操作に実際プットする前に準備し、手やコンパイラやその他の方法によってテストされますです。経験豊富な開発者は、このサイトへのシステムの正式なアプリケーションを確保するために必要なステップであることを知っています。
プログラムに、そのようなので、上のTomcat、JBossの、Apacheやなど、他のネットワークサーバをインストールする必要をデバッグないときに、開発者が付属してフラスコの開発サーバー。何らかのエラーが同時に実行されるということは二つの目的にメッセージを送信するように、デバッグ状態でフラスコのデフォルト、:1はつまり、Pythonコンソールで、コンソールPythonプログラムを起動し、他のフラスコの開発サーバにデバッグ情報をHTTPクライアントですクライアント。
Pythonのユニットテスト機能とのシームレスな
ユニットテストは、テストプログラムの内部構造に焦点を当てて、ソフトウェア開発の最小単位、主にホワイトボックステスト方法、開発者の責任のための試験です。主な目的は、開発者が担当者に警告することができる要件を満たしていない場合、所与の入力状態でユニットテスト機能は、出力が期待できることを保証することです。
Pythonのシームレステストインタフェース、すなわちtest_client()関数フラスコオブジェクトunitest内蔵ユニットテストフレームワークを備えたフラスコ。test_client()関数によって、試験シミュレーションプログラムをフラスコ呼ルーティングするために、クライアントのHTTPハンドラによってアクセスされ、カスタマイズされた検証する出力関数を取得することができます。
Jinja2のテンプレートを使用し
たHTMLページを、バックオフィスアプリケーションは、リンク先のウェブサイトは、フレームワークプログラムの重要な目的となっています。フラスコはJinja2のテンプレート技術を使用することによって、この問題を解決しました。Jinja2のは、Djangoのテンプレートから進化しますが、Djangoテンプレートを使用するより自由に、より効率的にされて非常に柔軟なHTMLテンプレート技術、です。セマンティックシステムを使用してJinja2のテンプレートは、柔軟なテンプレートの継承技術、自動クロスサイト攻撃やデバッグが容易なXSSとの戦いを提供するように配合しました。
WSGI 1.0は、標準と完全に互換性があります
WSGI(Webサーバーゲートウェイインターフェイス)は、高度にスケーラブルであり、WSGIのこの本質的な特徴を作り、グローバルロックPythonのスレッドがあるため、マルチスレッドやマルチプロセス環境で実行することができます。WSGIは、すでに主要な業界標準のPythonで、さまざまな大規模なネットワーク・サーバは、その優れたサポートしています。WebアプリケーションとWebサーバとの間に位置するWSGIは、そのフラスコWSGIと完全に互換性があり、ネットワークサーバの多種多様に構成することができます。
基づいて、Unicodeエンコーディング
フラスコは完全にUnicodeベースです。これは純粋なASCII文字が設定されている非生産現場のために非常に便利です。HTTP自体はバイトに基づいており、これは、任意の符号化フォーマットは、HTTPで送信することができることを意味します。しかし、HTTPは、明示的にHTTPヘッドの伝送に適用されるこの符号化形式に記載が必要です。プログラマがコーディングを心配する必要がないように、デフォルトでは、フラスコHTTPヘッドは自動的に、UTF-8エンコード形式を追加します。

カスタム基盤となるネットワークプロトコルフレーム--Twisted

ツイストが例外である上記3つのPythonのWebフレームワークは、HTTPのアプリケーション層の周囲に配備されています。ツイストは、イベント駆動型アプリケーションを追求するために、Python言語のネットワークで書かれたフレームワークでは、ツイストフレームワークプログラムのパフォーマンスサーバは良い選択です。

ツイストは、オープンソースのイベント駆動型フレームワークの歴史の10年の国です。ツイストは、トランスポート層を含む、さまざまなプロトコルをサポートするUDP、TCP、TLS、およびHTTP、FTPなどのアプリケーション層です。これらのプロトコルのすべてについて、ツイストは、クライアントとサーバーサイドの開発ツールを提供します。

最新のバージョンに基づいて、Pythonの2のすべてのメジャーリリースとの長い歴史のツイストフレームワークは、ツイスト15.4.0のPythonの2.7に基づいています。ツイストコミュニティは、Python 3バージョンに基づいて開発されていないが、ツイストはPython 3に基づいて、これまでのところまだ安定版リリースされています。

ねじれは、高性能プログラミングフレームワークです。異なるプラットフォーム上Caozuojitong、ツイストは異なる基礎となる技術を使用して効率的な通信を実現することができます。Windowsでは、ツイスト実装完了ポート(IOCP、入力/出力完了ポート ) テクノロジーベースのI / O、それは根本的には、効率的なフレームワークやアプリケーションへのI / Oイベントを通知することを保証し、Linuxでは、ツイストベースの実装でepoll技術は、Linuxでファイルディスクリプタを選択するために、/世論調査の強化版をI / Oインタフェースを多重化されている、それは非常に少数のアクティブで同時接続数が多い場合にはCPU使用率のプログラムを向上させることができます。
開発手法、ツイストガイドプログラマ非同期プログラミングモデルでは。ツイストは、非同期プログラミングをサポートするために延期、スレッディングやその他の機能の富を提供します。

おすすめ

転載: www.cnblogs.com/an-wen/p/11330834.html