この基本的な知識に欠ける質問(主にStack Overflowについて)を見てきました。この質問のポイントは、それを求めている人々とそれを参照している人々に良い情報を提供することです。
Webプログラミングのコンテキストでは、サーバー側プログラミングとクライアント側プログラミングの違いは何ですか?どの言語がどの言語に属し、どの言語をいつ使用しますか?
この基本的な知識に欠ける質問(主にStack Overflowについて)を見てきました。この質問のポイントは、それを求めている人々とそれを参照している人々に良い情報を提供することです。
Webプログラミングのコンテキストでは、サーバー側プログラミングとクライアント側プログラミングの違いは何ですか?どの言語がどの言語に属し、どの言語をいつ使用しますか?
回答:
Web開発とはコミュニケーションです。この場合、HTTPプロトコルを介した2者間の通信:
各側のプログラミングは、特定のマシン、サーバー、またはクライアントで実行されるコードを指します。
サーバー側プログラミングは、サーバーで実行されるプログラムの種類の一般的な名前です。
サーバー側と同様に、クライアント側プログラミングは、クライアントで実行されるすべてのプログラムの名前です。
* HTMLとCSSは、実際には「プログラミング言語」ではありません。これらは、クライアントがユーザーのページをレンダリングするためのマークアップ構文です。
素人の言葉で:
ここでは、Webプログラミングについてのみ説明します。
クライアント側のプログラミングは、主にユーザーが操作するユーザーインターフェイスに関係しています。Web開発では、コードを実行するのはユーザーのマシンのブラウザーであり、主にjavascript、flashなどで実行されます。このコードはさまざまなブラウザーで実行する必要があります。
主なタスクは次のとおりです。
担当者のフロントエンドプログラミングのは知っている必要があります:
サーバー側のプログラミングは、動的コンテンツの生成に関係しています。サーバー上で実行されます。これらのサーバーの多くは「ヘッドレス」です。ほとんどのWebページは静的ではなく、データベースを検索して、ユーザーに更新された個人情報を表示します。このサイドは、データベースなどのバックエンドと対話します。
このプログラミングは、多くの言語で実行できます。
このコードは次のことと関係しています:
サーバー側のプログラミング担当者は次のことを知っている必要があります。
他の答えは、クライアント側およびサーバー側のプログラミングとは何かに焦点を当てています。主に使用される言語、実行する必要のあるタスクなどです。
これは絶対に正しいことですが、 Webプログラミングのコンテキストで、両方のタイプのプログラミングの違いが何であるかという点に少し焦点を当てていません。それに対処してみましょう。
クライアント側のプログラミングでは、セキュリティ上の懸念のため、システム全体にアクセスできません。ユーザーは、Webからダウンロードされ、自分のマシンで実行されるすべてのコードを必ずしも信頼する必要はありません。これは、クライアント側環境(ブラウザーとJavaScriptエンジン)の主要な設計目標です。クライアントコードは実行できますが、許可されたスコープ外にはアクセスできません。
サーバー側のプログラミングでは、基礎となるシステムへの各アプリケーションのアクセスも制限することをお勧めしますが、最終的にはあなたまたはあなたの会社がそのシステムを制御しているため、これはあまり強制されません。この「隔離されたケージ」設計は、サーバー側のプログラミングツールや言語に組み込まれていませんが、インストールのセットアップ(アクセス許可が制限された専用ユーザーの使用、ルートアクセス許可が必要または不要なポートの選択など)によって実現されます。
サーバー側のプログラミングでは、何らかのツールを使用して(make install
またはそうであっても)コードの外部からgit clone
展開する必要があり、この展開は通常手動で行われます-または少なくとも、半監視下で行われることが予想されます仕方。展開するシステム(OSを意味します)は通常、多数のマシンで統一されていますが、ニーズに合わせて大幅にカスタマイズできます。
クライアント側のプログラミングでは、サーバー側のコードから展開が行われます。このコードは、監督なしで自動的にクライアントにサービスを提供します。基になるシステム(主にブラウザーを意味します)は、非常に多くのマシン間で大きく異なる場合があります。展開をまったく実行可能にするためには、標準を維持する必要があり、単一の言語と環境へのはるかに強い傾向があります。
これが、サーバー側のコードをあるマシンから別のマシンにコピーするのに数週間かかることがある理由です。一方、クライアント側のコードは通常、異なるマシンで実行するのは簡単です。
(免責事項:これはすべての中で最も主観的な点です。おそらく、私の議論には多くの間違った側面があります。私の見解では、これは単なる興味深い仮説です。)
サーバー側のプログラミングでは、状態ははるかに大きな懸念事項です。つまり、ユーザーの要求に応じて、同時実行による競合の可能性があるデータを取得および更新する方法を意味します。この複雑さのほとんどがデータベースサーバーにオフロードされた場合でも、データベースがインターフェイスを正しく使用してデータの整合性を保証できるようにするのはサーバー側のコードの責任です(たとえば、 DB)、サーバー側のコードの目標でもありますが、作業でデータベースを過負荷にせず、ユーザーが応答を待機し続けることです。
クライアント側のプログラミングでは、ユーザーに結果を提示することははるかに大きな懸念事項であり、これは二次的な影響(主に画面への印刷)を意味します。これは、関係する状態(Cookieなど)がないことを意味するのではなく、コードの主な目標は実際にユーザーとやり取りすることであり、これは二次的な効果なしでは起こり得ません。
これが、クライアント側のプログラミングが通常(ある時点で)すべての色とレイアウトが正しいことを確認するためにデモで画面を見ることを必要とするのに対し、サーバー側のプログラミングは、自動化されたテキスト指向環境テストでは、ロジックがまだ想定どおりに機能していることを確認します。
これは、受け入れられた回答を意図したものではありません。むしろ、私はそれを(when do you use each of them
質問に対する回答として)これまでの他の答えでまだ言及されていない補完的なポイントとして提供します。すなわち:
知的財産の保護
クライアント側(Javascriptなど)にあるソースコードは、難読化されていれば簡単に読み取り可能、および/またはリバースエンジニアリングできます。
ただし、サーバー側にあるソースコードは、独自のアルゴリズムを安全に保護し、結果のみを返すことができます。種類のブラックボックス。