Pythonで1つのWeb応用を書いて、周辺の知識は整理します

3355 ワード

まず、これはネットワークプログラミングの範疇なので、この部分の知識を理解してみましょう.
まず,ネットワーク上で通信を行うには,関連ネットワークプロトコルが必要である.
TCP/IP、UDP…など.
もちろん、私は直接フレームワークを選んで、こんなに多くのことを知りたくないと言ってもいいです.それでも大丈夫ですが、一定の時間になると、振り返ってこれらの基礎知識を見たいと信じています.
ネットプログラミングといえば、Socketを見たことがあるに違いありません.翻訳するとソケットです.これは何ですか.あなたも私と同じように初めてそれを見たとき、霧がかかっていたと信じています.私は翻訳が悪いと思います.引用して、まあまあだと思います.
Socketはネットワークプログラミングの抽象概念である.通常、Socketは「ネットワークリンクを開いた」ことを表し、Socketを開くにはターゲットコンピュータのIPアドレスとポート番号を知ってからプロトコルタイプを指定する必要があります.
では、さまざまなフレームワークを置いてPythonで直接ネットワークプログラミングを行う場合、socketモジュールが一般的に使われます.具体的なサンプルコードは、本書の偽コードを探して以下に写しました.
  TCP   
ss = socket() #         
ss.bind() #         
ss.listen() #     
inf_loop:#        
    cs = ss.accept() #        
    comm_loop:#     
          cs.recv()/cs.send() #   (  /  )
          cs.close()#         
ss.close()#         #(  )
  TCP   
cs = socket() #         
cs.connect() #        
comm_loop:#     
    cs.send()/cs.recv() #   (  /  )
cs.close()#         

プロセスは、サーバ側を作成してからクライアントを作成し、接続が終了するまで、送信と受信の会話に参加します.
具体的な操作では、2つのコマンドラインウィンドウを開き、1つはサーバプログラムを実行し、もう1つはクライアントプログラムを実行する必要があります.ダイアログの効果を見ることができます.
ここでは、ネットワーク上で通信し、通信を必要とする双方、およびネットワークプロトコルを構築し、連絡を確立するという大まかな概念があるはずです.
Web開発
Webはもちろんネットワークの一部です.
Webアプリケーションでは、サーバがWebページをブラウザに渡すのは、実際にはWebページのHTMLコードをブラウザに送信し、ブラウザに表示させることです.ブラウザとサーバ間の転送プロトコルはHTTPなので、
  • HTMLはウェブページを定義するためのテキストで、HTMLができて、ウェブページを書くことができます.
  • HTTPは、Web上でHTMLを伝送するプロトコルであり、ブラウザとサーバの通信に用いられる.

  • HTTPプロトコルはWeb開発において非常に重要なプロトコルであるようです.
    HTTPプロトコルの具体的な知識については、1冊の本「図解HTTPプロトコル」をお勧めします.
    そのため、Webアプリケーションでは、HTTPリクエストを受け付けたり、HTTPリクエストを解析したり、HTTPレスポンスを送信したりするなどの苦労をすることが多い.そのため、自分で実現する必要がある場合は、TCP接続、HTTP元のリクエスト、応答フォーマットに触れなければなりません.多くの関連仕様を読む必要があります.
    WSGI
    しかし、ほとんどのWebアプリケーションの開発者は、これらの苦労に時間を費やしたくないので、WSGIが誕生しました.フルネームはWebサーバGateway Interfaceです.
    WSDIインタフェースの定義は非常に簡単で、Web開発者に1つの関数を実現するだけで、HTTP要求に応答することができます.
    PythonにはwsgirefというWSGIサーバも内蔵されており、純粋なPythonで作成されたWSGIサーバのリファレンス実装です.「リファレンスインプリメンテーション」とは、WSGI規格に完全に準拠しているが、開発およびテストのために実行効率を考慮せずに使用されるインプリメンテーションを指す.
    WSGIフレームワークを理解して、私達は発見します:実は1つのWeb App、1つのWSGIの処理関数を書いて、各HTTPの要求に対して応答します.
    しかし、HTTPリクエストやURLが多くなると、URLと処理関数のマッピング関係をどのように処理するかという問題が発生します.
    WSGIが提供するインタフェースはHTTPインタフェースよりかなり高度であるが、Web Appの処理ロジックと比べると、まだ比較的低級であり、WSGIインタフェースの上でさらに抽象化する必要がある.一つの関数でURLを処理することに専念し、URLから関数へのマッピングはWebフレームワークに任せる.
    そのため、Pythonに内蔵されているWSGIサーバはもちろん多くの人のニーズを満たすには十分ではありません.他のフレームワークがあります.
    Webフレームワーク
    現在WSGIプロトコル上で実行されているWebフレームワークは非常に多い.個人的な経験から言えば、軽量級はFlask、重量級はDjango、もちろん他にもありますが、私は深く理解していません.皆さんは自分で検索することができます.
    それらを学ぶチュートリアルもたくさんあります.例えば、Flaskには「狼書」「Flask Web開発実戦:入門、進級と原理解析」「犬書」「Flask Web開発:Pythonに基づくWeb応用開発実戦」などの良い参考書があります.
    もちろん,これらのフレームワークはWSGIに対してもそれぞれ実現されている.
    各Webフレームワークは実装サーバに専念していないため,これらのWSGIサーバは一般的に開発デバッグ時に使用される.本番環境で導入する場合、Webフレームワークに付属するサーバは簡単には使用できません.
    実環境で使用するWSDIサーバ
  • Gunicorn

  • 一番流行っているのはたぶんこれでしょう.
  • uwsgi

  • C言語で開発されているので、下層部との接触がよくなります.
    一般的な生産環境では、どちらかを選びます.私が今使っているのはGuniornです.
    小結
    この文章を読むと、ネットワークプログラミングの基本原理から、フレームワークの選択、生産環境の導入まで、関連概念があるはずです.
    リクエスト処理関数を具体的に書く方法を教えてくれなかった以外は、周辺の知識は分かりましたよ?まだ問題があれば、伝言を歓迎します.
    参考文献:
    http://python.jobbole.com/88653/http://python.jobbole.com/88447/?utm_source=blog.jobbole.com&utm_medium=relatedPosts https://www.liaoxuefeng.com『Pythonコアプログラミング(第3版)』