このレッスンでは、クライアントとサーバーの関係を見ていきます。クライアント/サーバー アーキテクチャは無制限の通信の可能性を提供し、それがインターネットを可能にします。後で API を呼び出すために使用されるクライアント/サーバー モデルの基本的な理解を説明します。クライアント/サーバー アーキテクチャに関する網羅的なリソースをカバーすることは、このレッスンの範囲を超えています。代わりに、クライアント/サーバー通信の主な原則に焦点を当てます。
次のことができるようになります。
通信テクノロジのクライアント サーバー モデルは、サーバー と呼ばれるサービスのプロバイダーとクライアントと呼ばれるサービスのリクエスター間のワークロードを管理する、分散アプリケーション アーキテクチャとネットワーク操作のセットです。
クライアント サーバー モデルは個々のコンピュータ内のプログラムで使用できますが、ここではネットワーク環境を扱う点に焦点を当てます。この場合、クライアントは、ローカル エリア ネットワーク (LAN)、インターネットなどのワイド エリア ネットワーク (WAN) を介してサーバーへの接続を設定します。 Xbox Live をプレイしたり、PlayStation Network を使用したことがありますか? Xbox One はクライアントであり、ネットワークにログインすると、Xbox Live サーバーに接続して、アップデート、ビデオ、ゲーム デモなどのゲーム リソースを取得します。
私たちのほとんどが日常生活で使用している典型的な多層クライアント サーバー アーキテクチャを以下に示します。
クライアントは、サーバーによって提供されるサービスを要求するコンピューター ハードウェア デバイスまたはソフトウェアです。サーバーは多くの場合 (常にではありませんが)、別の物理コンピューター上に配置されます。
サーバーは、クライアントのニーズに応えるサービスを実行するための専用の物理コンピューターです。実行中のサービスに応じて、ファイル サーバー、データベース サーバー、ホーム メディア サーバー、プリント サーバー、電子メール サーバー、 Web サーバーなどがあります。
クライアントとサーバーがネットワーク経由で通信するという考え方により、Web サイトの表示や Web アプリケーション (Gmail、Facebook、LinkedIn など) との対話が可能になります。このモデルは、Web アプリケーションにおけるクライアントとサーバー間のギブアンドテイク関係を記述する方法であり、コンピューター間で情報が受け渡される方法を制御します。
Web クライアントからのリクエストを受け取り、それに応じてサービスを提供する基本的な Web アプリケーションがどのようなものかを見てみましょう。
Web アプリケーション (Web アプリ) は、リモート サーバーに保存され、ブラウザ インターフェイスを通じてインターネット経由で配信されるアプリケーション プログラムです。 Web サービスは定義上 Web アプリであり、すべてではありませんが、多くの Web サイトに Web アプリが含まれています。ユーザーに対して何らかの機能を実行する Web サイト コンポーネントは、Web アプリとして認められます。 Google の検索エンジンは Web アプリですが、その根本的な概念は、名前や番号を検索できる電話帳とほとんど変わりません。
ほとんどの Web アプリは、実際には対話のためにブラウザ インターフェイスを使用します。つまり、エンド ユーザーは、最新の Web ブラウザ インターフェイスを通じてこれらのアプリケーションにアクセスを要求し、情報/サービスを要求します。 Web アプリケーションを構築および構成するには何百もの方法がありますが、そのほとんどは同じ基本構造 (Web クライアント、Web サーバー、およびデータベース) に従います。
クライアントは、エンド ユーザーが対話するものです。 「クライアント側」コードは、ユーザーが実際に見るもののほとんどを実際に担当します。何らかの情報を Web ページとしてリクエストする場合、クライアント側は以下を行う必要があります。
これらのタスクのほとんどは、情報やページのスタイルを構造化し、ナビゲーションやフォーカスのためのインタラクティブなオブジェクトを提供するために、HTML/CSS/JavaScript のようなテクノロジによって管理されます。
Web アプリケーションの Web サーバーは、クライアントから受信するリクエストをリッスンします。 HTTP (ハイパーテキスト転送プロトコル - インターネットの言語) サーバーをセットアップすると、ポート番号をリッスンするようにサーバーがセットアップされます。ポート番号は常にコンピュータの IP アドレスに関連付けられます。ポートは、さまざまなタスクを実行するために使用できるコンピュータ上の個別のチャネルと考えることができます。1 つのポートが www.facebook.com をサーフィンし、別のポートが電子メールを取得することができます。これは、各アプリケーション (Web ブラウザと電子メール クライアント) が異なるポート番号を使用するために可能になります。
特定のポートをリッスンするように HTTP サーバーを設定すると、サーバーはその特定のポートに届くクライアント要求を待ちます。クライアントを認証した後、サーバーはリクエストで指定されたアクションを実行し、リクエストされたデータを HTTP 応答経由で送信します。
データベースは Web アーキテクチャの基礎です。 SQL/NoSQL または同様のタイプのデータベースは、簡単にアクセス、管理、更新できるように情報を保存する場所です。たとえば、ソーシャル メディア サイトを構築している場合、ユーザー、投稿、コメントなどに関する情報を保存するためにデータベースを使用することがあります。訪問者がページをリクエストすると、ページに挿入されるデータはサイトのデータベースから取得されます。 Facebook などのサイトや Gmail などのアプリとのリアルタイムのユーザー操作が可能になります。
上のサンプル画像では、上記のセットアップが実際に動作しているのがわかります。ブラウザは、そのドメイン (www.google.com) を呼び出すことによって Web サーバーにリクエストを送信します。要求者に基づいて、サーバーは SQL データベースに必要な情報を収集します。この情報は HTML コードとしてラップされ、クライアントに送り返されます。 Web ブラウザは、HTML 内に埋め込まれた構造情報とスタイル情報を読み取り、それに応じてページをユーザーに表示します。
クライアント/サーバーのアーキテクチャと、それらがインターネット上でどのように現れるかについては、多くの詳細が記載されています。このセクションで強調されているアイデアにもう少し焦点を当てて、Python でクライアントをセットアップしてリクエストを作成します。これらのスキルは、分析実験のためにサーバーにデータをリクエストするのに役立ちます。クライアント サーバー モデルと、それがさまざまなアーキテクチャでどのように設定されているかをさらに詳しく知りたい場合は、ここに追加のリソースがいくつかあります。
このレッスンでは、クライアント サーバー モデルの基本を検討し、このモデルが Web ベースのアプリケーションにどのように実装されるかに焦点を当てました。私たちは、Web クライアント、Web サーバー、およびクライアント情報を運ぶデータベースの役割を検討しました。次のレッスンでは、Python を使用してこれらのアイデアを実装する方法を見ていきます。