フロントエンド、バックエンド、ミドルウェア (「ミドルエンド」?) の違いを簡潔に比較/対比できる人がいるかどうか疑問に思っていました。
重複する場合はありますか?それらがオーバーラップしなければならず、フロントエンド/バックエンドを分離できない場合はありますか? ボトルネックに関して、どのエンドがどのタイプのボトルネックに関連付けられていますか?
フロントエンド、バックエンド、ミドルウェア (「ミドルエンド」?) の違いを簡潔に比較/対比できる人がいるかどうか疑問に思っていました。
重複する場合はありますか?それらがオーバーラップしなければならず、フロントエンド/バックエンドを分離できない場合はありますか? ボトルネックに関して、どのエンドがどのタイプのボトルネックに関連付けられていますか?
ここに1つの内訳があります:
フロントエンド層 -> 通常、HTML、Javascript、CSS、Flash、および ASP.Net、従来の ASP、PHP などのさまざまなサーバー側コードの組み合わせで構成されるユーザー インターフェイス層。これはユーザーに最も近いと考えてください。コード的に。
ミドルウェア、中間層 -> 一般にシステムの「配管」部分と呼ばれる 1 つ後ろの層。Java と C# は、この部分を作成するための一般的な言語であり、UI とデータの間の接着剤と見なすことができ、Web サービス、WCF コンポーネント、またはその他の SOA コンポーネントである可能性があります。
バックエンド層 -> データベースおよびその他のデータ ストアは、通常、このレベルにあります。データの最終処理を行うソフトウェアとしては、Oracle、MS-SQL、MySQL、SAP、およびさまざまな既製のソフトウェアが思い浮かびます。
Javascript を生成する組み込みの AJAX 機能を使用する ASP.Net Web サイトのように、すべてを 1 つのレイヤーに注ぎ込むことができるため、これらのいずれの間にも重複が存在する可能性があります。 -層を終了します。別の方法として、VBScript を使用して、ADO オブジェクトを使用してすべての層として機能させ、3 つの層すべてを 1 つに結合することもできます。
同様に、ミドルウェアとフロントエンドまたはバックエンドのいずれかを使用する場合もあります。
一般に、ボトルネックにはいくつかの異なるレベルがあります。
1) データベースまたはバックエンド処理 -> これは、データベースへのスループットが低下している給与計算、販売、またはその他のタスクとは異なります。
2) ミドルウェアのボトルネック -> 一部の Web サービスが容量に達している可能性がありますが、フロントエンドとバックエンドにはより多くのトラフィックを処理するための帯域幅があります。あるいは、Biztalk や MSMQ などを使用してボトルネックになる可能性のある UI 部分または生データではないシステムの一部であるサーバーが存在する可能性があります。
3) フロントエンドのボトルネック -> これは、クライアントまたはサーバー側の問題である可能性があります。たとえば、ローエンドの PC を使用して、大量のデータをダウンロードする Web ページをロードした場合、ボトルネックはクライアントにある可能性があります。同様に、Amazon.com やその他のトラフィックの多い Web サイトが時々取得するようなリクエストがサーバーに殺到している場合、サーバーはリクエストをキューに入れている可能性があります。
これの一部は解釈の対象となるため、決して完璧ではありません。
編集: 考慮すべきことは、システムによっては複数のフロントエンドまたはバックエンドを持つことができるということです。たとえば、コンテンツ管理システムには、サイト訪問者がフロントエンドであるコンテンツを表示する方法がある可能性がありますが、コンテンツ編集者がサイト上のデータを変更できる方法についてはどうでしょうか? このデータを取得する機能は、UI コンポーネントであるためフロントエンドと見なすことができます。また、サイトを閲覧する一般ユーザーではなく内部ユーザーによって使用されるため、バックエンドと見なすこともできます。したがって、ここで文脈のために言わなければならないことがあります。
一般的に言えば、人々はアプリケーションのプレゼンテーション レイヤーをフロント エンド、永続レイヤー (通常はデータベース) をバック エンド、中間層と呼んでいます。この一連のアイデアは、多くの場合、3 層アーキテクチャと呼ばれます。これにより、アプリケーションをより理解しやすい (そしてテストしやすい!) チャンクに分割できます。下位層のコードを上位層でより簡単に再利用することもできます。
どのコードがどの層の一部であるかは、やや主観的なものです。グラフィック デザイナーは、プレゼンテーション以外のすべてをバック エンドと考える傾向があり、データベース担当者は、データベースの前にあるすべてをフロント エンドと考える傾向があります。
ただし、すべてのアプリケーションをこのように分離する必要はありません。確かに、index.php を開いてクラッキングするよりも、3 つの個別のサブプロジェクトを用意する方が手間がかかります。(1) アプリを維持する必要があると予想される期間 (2) アプリがどれほど複雑になると予想されるかによっては、複雑さを忘れた方がよい場合があります。
これは、フロント/ミッド/バックエンドを示す実際の例です。
フロントエンドとバックエンドが重複する可能性があります。これは通常、アプリケーションのメンテナンスとスケーラビリティに関する長期的な問題につながります。レガシー アプリケーションではかなり一般的です。
最新のテクノロジ スタックのほとんどは、開発者が厳密に分離することを奨励しています。たとえば、図では、最初のシステムのバックエンドに、明確な分離線である残りの Web サービスがあることがわかります。
大規模なボトルネックのほとんどは、データベース/ネットワークが原因です。データベースはバックエンドにあります。ネットワークの問題に関しては、すべての接続がネットワークを経由するため、すべての接続が遅くなる可能性があります。優れたアプリケーション設計により、これらの問題は大幅に回避できます。
ネットワークとセキュリティの観点から、バックエンドは最も安全なノードです。
ミドルエンドの部分は、通常は Web サーバーですが、ある程度野放しで、多くの点で企業のネットワークから切り離されています。通常、ミドルエンド ノードは DMZ に配置され、ファイアウォール設定でネットワークからセグメント化されます。Web ページのサーバー側コード解析のほとんどは、ミドルエンド Web サーバーで処理されます。
バックエンドにたどり着くということは、データベース(バックエンド)サーバーに保存されている重要な数値へのアクセスを許可/禁止する慎重に作成された一連のルールを持つミドルエンドを通過することを意味します。