JSPのフェーズアウト(RPM)

出典:のhttp://1t.click/peD

そして、中規模企業が専門家を必要とする、小規模企業はオールラウンドが必要ですが、個人やプロの開発のために、私は別のをお勧めします。あなたはこの人生でご飯を食べる場合は、Java、ように、どのようなCSSを勉強するつもりはJSとされていません。

あなたのコアコンピタンスはますますなるようなので、上のJava、JVMの原則、春の原則、MySQLのロック、トランザクション、マルチスレッド、高並行性、分散アーキテクチャ、マイクロサービス、および関連するプロジェクト管理に集中するあなたのエネルギーを入れて、あなたが人生の中に入れたものを言うように高く、寿命が何に戻ってきます。

いくつかは、我々はJavaのWebプロジェクトを使用するときに持ってspringmvc /ストラット+春+春のjdbc /休止状態/ MyBatisのなど、バックエンドのフレームワークの数です

プロジェクトのほとんどは、3つの層、層制御(コントローラ/アクション)、サービス層(サービス/管理)、持続性(DAO)に分割されたJavaバックエンドです。

層は、ページをJSPに制御パラメータ、通話関連のビジネス層、データをカプセル化、およびルーティングを受信するための責任があります。その後、種々の標識(JSTL / EL)または手書きのJavaを(<%=%>)を使用して、JSPページでは、バックグラウンドデータに表示します

あなたは正しい、などのEclipseのMavenなどのツールを使用するか、戦争のパッケージとしてラベルされたコードを入れ、その後、本番環境の場合、Webコンテナ(Tomcatの/のjboss /のweblogic /のWebSphere /桟橋/樹脂)に、戦争のパッケージを公開する必要があります?

リリースが終わった後、あなたのWebコンテナを開始したい、サービスの提供を開始、あなたのWebサイトに関連するなど、ドメイン名、DNSを設定するには、この時間は、(あなたがウェブサイトと仮定)訪問することができます。 

その後、我々はあなたの前で見て、バックエンドのコードはバッグ内のすべてのその戦争ではないでしょうか?あなたのJS、CSS、画像、様々なサードパーティのライブラリを含む、右?

ブラウザ、ウェブサイトのドメイン(www.xxx.com)を入力し、その後、何が起こったのか?

Webサーバーが要求を取得した後、あなたのサービスへのIP経路によるブラウザは、TCP3握手した後、TCP契約を経由してWebサーバへの訪問を開始した、サービス要求が受信された提供を開始し、その後、応答でのお返事に戻りましたブラウザ。 

その後、我々はのは、あなたの家は100枚の絵を持っていると仮定しましょう、見て、ユーザーが閲覧し、ユーザーが最初に訪問したときに、一度ではない、実際には、httpリクエストを見えるかもしれませんが、その場合には、単一のテーブルを、照会します何のバッファは存在しません、あなたの100枚の画像が添付ブラウザが100 httpリクエスト(いくつかは私と一緒に、長鎖のhttp短鎖の問題は、ここで議論されていないと言うでしょう)を要求するために、Webサーバーが要求を受信すると、このすべては、TCP送信を再生するためのソケットを作成するために、メモリを要します。 

1万人が(話をしていない場合には、このような場合は、すべての要求はこのサーバーのみあなたにページを要求しているため、Webサーバの圧力は、非常に大きくなり、ここでの焦点、一人より良い場合は、同時アクセスWebサーバのクラスタ、ここですることができますどのように多くのサーバのTCPカン朱リンク、Webサーバーの単一のインスタンスを)言うの?メモリーサーバーどのくらい?あなたはIOの数に耐えましたか?どのくらいのメモリへのあなたのWebサーバのポイント?ダウンタイムのでしょうか?

それは、より多くの彼らは分離したい理由を、より多くの中規模および大規模なWebアプリケーションです。

理論的にはあなたが置くことができ、データベースアプリケーションサービス+ + +バッファ+メッセージキューのユーザーが+ +、等の単一のホスト上でスローされるログファイルをアップロードするために、これを使用すると、1つのバスケットにあなたの卵を置くように、危険です非常に大きいです。

通常の分散アーキテクチャは、オープンにすることで、アプリケーション・サーバ・クラスタ(フロントとリア)+ +ようにデータベースサーバークラスタのファイルサーバークラスタ+ +メッセージキュークラスタキャッシュ・クラスタと。

痛みのポイントを使用してのJSP:

 

  1. すべて一緒に、動的リソースと静的リソースを結合し、真に静的および動的分離することはできません。サーバーのストレス、サーバは、そのようなので、上のHTTPリクエストCSS、JS、画像、および動的なコード、およびなど様々なHTTPリクエストを、受け取ることになりますので。サーバーの状況が発生すると、それはフロントとバックで終了する、ユーザーエクスペリエンスが悪いです。

  2. フロントエンドエンジニアの後、HTML、HTMLはJavaのJSPページ、高い誤り率(多くの場合、ページはjsのコードの多くになりますので)にエンジニアによって変更する必要がない、とき改正や非効率的なの質問共同開発する両面が必要です。

  3. JSPは(などのTomcat、など)を実行する必要があり、そのパフォーマンスアップはもちろんのこと、(HTTP同時nginxのは、最大5ワットへの単一のインスタンスは、この利点を使用すると言われて)JavaでサポートnginxのWebサーバーで使用することはできません。

  4. 最初の要求のJSPは、最初の実行が遅くなり、Webサーバでサーブレットにコンパイルする必要があります。

  5. 各要求へのJSP、サーブレットへのアクセス、出力ストリーム出力htmlページです、高効率のHTMLには直接使用することはありません。

  6. フロントエンドエンジニアで、JSPタグや式でより多くの痛みのポイントを大量に発生した、ページを変更するために、ハード押されたことになるがあります。

  7. 多くのJSPページのコンテンツは、それが同期的にロードされているので、反応が遅い場合。

 


 

痛みのポイントの上の数字に基づいて、我々はプロジェクト全体前方に体重移動、前後端の真のデカップリングを開発する権利でなければなりません!

 


 

古い方法の前にあります。

 

  1. クライアントの要求

  2. サーブレットサーバまたはコントローラは、(バックエンドによって処方ルーティングルール、バックエンド全体プロジェクトの開発権のかなりの部分)の要求を受信します

  3. コールサービス、DAOビジネスロジックのコード補完

  4. JSP復帰

  5. いくつかの動的なコードを表示するJSP

 

新しい方法:

 

  1. ブラウザが要求を送信します

  2. 直接htmlページ(ルーティングルールは、フロントエンドによって策定、前方再開発プロジェクト全体に右)に

  3. htmlページは(など、AJAX経由で)サーバ・インタフェースを呼び出すための責任があるデータを生成し、

  4. 動的効果を表示するには、HTMLを充填。

(子供用の靴に興味がアリババと他の大規模なサイトでアクセスすることができ、その後、F12をクリックし、ページを更新するものを監視し、HTTPは、彼が遊んだ方法です、それらのほとんどが単独のバックグラウンドデータを要求している、JSONはデータを送信するのではなく、全てを含むページ全体を移動するための大規模なHTTPリクエスト)は、静的+オーバー返さ

 


 

この利点は、次のとおりです。

 

  1. これは、nginxのを使用してデカップリングフロントエンドサーバーの終了前後に本当かもしれません。フロントエンドサーバーは、CSSを入れて、JS、画像などの静的リソースのシリーズ(あなたも、CSS、JS、等アリクラウドOSSなどの特定のファイルサーバに画像や他のリソース、およびCDNアクセラレーションを使用することができます)に、フロントエンドサーバー制御ページ参照は、ジャンプ、バック、Tomcatを使用してバックエンドサーバー上のソケットを呼び出します。(我々は、そのようなnodejsなどのフロントエンド・エンジニアリング・フレームワークの一部を使用して反応させ、ルータ、Reduxの、WebPACKの、反応しなければなりません)

  2. 問題を迅速に見つけることができます発見のバグは、お互いに責任を転嫁する現象が表示されません。ページのロジック、すべてのフロントエンドエンジニアのための責任があると、その上のブラウザの互換性の問題、スクリプトエラー、ページのスタイルとの誤差をジャンプします。インターフェイスのデータエラーは、データが正常に送信されていない、応答タイムアウトの問題は、すべてのバックエンドエンジニアによって解決しました。

  3. お互いを乱すことなく、双方は、家族のそれぞれ他の表と裏が大好きです。

  4. 大規模な同時の場合、私はそのような淘宝網のようにフロントとリアエンドサーバは、ホーム2000フロントエンドサーバーのクラスタが必要になりながら水平に拡張することができ、毎日+ PVの毎日何十億に耐えないし。(アリの技術サミットに行き、彼らは、自分自身を書くためにWebコンテナにされている耳を傾けた場合でも、彼抗同時HTTP 100,000 2,000同時HTTP 200百万円、彼らはまた、予知ピークに基づいて、無制限の拡大することができ、単一のインスタンス、ひどい、それは家であります...)

  5. すべてのフロントnginxのに転送し、他のすべてのインターフェイスのhttpリクエストに加えて、同時減圧バックエンドサーバ、。

  6. バックエンドサービスが一時的に出ているか、ダウンした場合でも、フロントページは、通常の訪問になりますが、データはそれを磨くません。

  7. アプリ関連のサービスがある場合は、インターフェイスを共有することができますので、たぶん、あなたも限りいくつかのリファクタリングを介するなど、あなたはまた、効率を向上させる、インタフェースの多くを再利用することができ、マイクロチャネルの光関連のアプリケーションを必要としています。

  8. それが非同期でロードされているので、より多くのものは、ページ表示を恐れていないです。

 


 

注意:

 

  1. オープンミーティングの要件、フロントとリアエンドエンジニアは、すべてが参加し、良好な界面のドキュメントを開発する必要しなければならない場合には、テストケースを書くためのバックエンドをエンジニアは、フルタイムのテストグループは、クロームプラグインの郵便配達、サービス層を推奨されているように、あなたのフロントエンドエンジニアは行動することはできません。 JUnitの書き込みテストケースを取ります。

  2. 上記インターフェースは、それがはっきりインターフェイスメソッドを呼び出し、インターフェースでJavaではありません中にあなたのcontrolerを呼び出すことです。

  3. 作業負荷を軽減し、パフォーマンスとスケーラビリティを向上させるために、チームのフロントエンド、バックエンドのチームの作業負荷を増加させました。

  4. 私たちは、ネストされたページ、ページネーション、ページジャンプ制御と同様に対処するために、フロントエンドのフレームワークの番号が必要です。(上記フレームの前端のもの)。

  5. プロジェクトが小さい、または単純なネットワークプロジェクトである場合は、任意のフレームワークなしで保証することができますが、あなたのプロジェクトは、ネットワークプロジェクトの外にある場合、ハァッ騒々し。

  6. そのようなテンプレートの静的なページを生成するためのフレームワーク、そして今、このような行為と同様の速度/ FreeMarkerの使用中に人がいる前にも出て排除されています。

  7. この記事の主な目的は、JSPがネットワーク外外大のJava Webプロジェクトに除去すべきと言うことです、JSPは完全に一部の学生の友人、JSP /サーブレットのJava Webおよびその他の関連財団のために、学ぶことができないか、しっかりと把握すること言ってませんでしたあなたはspringmvcこのフレームワークを書き込むものに基づいていると思いますか?

おすすめ

転載: www.cnblogs.com/BobHuang/p/11220251.html