最後に[復刻版] EJBとは何ですか?(簡単には方言を理解します)

最後にEJBは何ですか?(簡単には方言を理解します)

1.私たちは、依頼する必要があり、「サービス・クラスタ」は何ですか?「企業の発展」とは何ですか? 
EJBは、「サービス・クラスタ」と「企業の発展」であることがあるので、それから、彼は、「サービスと呼ばれるものについての話になります
クラスター」と「企業の発展」に!
J2EEとは、そう言っていなかったため、この問題はそこには、特定の対象ではありませんか物語が伝える、実際には非常に重要であり
、未使用のEJBへのプログラマーとの大部分を。我々は、すべてのいくつかの関連性を持っているので、EJBという「分散型輸送
事業者」は、システムの効率を改善するために、「負荷分散」を参照します。しかし、それは多くの人がミスを犯していると推定され、この「サービス・クラスタ」
と「分散コンピューティングは、」基本的に、特にデータベース・アプリケーション・システムのために、負荷を実行している問題を解決しません。
なぜ?
ゆっくりと分析に皆をつついたち最初のEJB。


2. EJBブレークは別にして崩れビットに 
我々は良いEJBの概念を分析し、手がかりを見つけることができるか見て置きます。


分析3.1 EJBの概念は
:我々は、EJB公式の説明を見て
そのビジネス・ソフトウェア・ビジネス・ロジックのコア部分。抽象ビジネスロジック全体の業務プロセスの流れ、およびメーターの使用
、それらを達成するためのコンピュータ言語。
......
この問題のためのJ2EEアプローチは、グループの中にカプセル化、ビジネス・ロジック・ソフトウェア・クライアントから抽出された
メンバー。ネットワークが提供する個別のサーバー、クライアントサービスにこのコンポーネントの実行は、実際にソフトウェアコンポーネントを呼び出し
、現金、ビジネス・ロジック、およびクライアントソフトウェアでは、要求を送信し、結果を表示するための唯一の責任への単純な関数呼び出しです。J2EEでは、
これは別のサーバー、およびカプセル化ビジネス・ロジック・コンポーネント上で実行すると、EJB(エンタープライズJavaである
ビーン)コンポーネント。
:これは、いくつかのポイントだからここで私たちの主な関心事である、我々は1つの分析ずつ来る
「ビジネスロジック」:1の分析:行く 
私たちはEJBの主な言及の概念は最後にパッケージの「ビジネスロジック」、そしてこのビジネス・ロジックがあることに注意
何を?Xuanhuは、実際には、このいわゆる「ビジネスロジック」は、我々は完全に特定のタスクを実行するために理解することができ、そう言う「クラス
。」
2つの分析:いわゆる「ビジネスロジックを組み立てパッケージのうち、クライアントソフトウェアから抽出された......サービスを実行する
サービスには、」
今、私たちは、「ビジネスロジック」の概念は、特定のタスク、「クラス」を実行することです知っていることそう、「クライアントから何
を抽出ソフトウェア」?実際には、これはクライアントの「クラス」にオリジナルであることは、クライアントに出していない、と入れて
一つの成分の中に、そしてそれを実行するには、サーバーに、このコンポーネント。
3。 
大きな方言になって「あなたはそれらのクラスで書いソフトウェアが策定タスクを実行する必要はなく、クライアントソフトウェアにある
作品ではなく、むしろ彼は、サーバー上のパッケージプットとして表示与えます。」
3.3には、問題を発見した 
いずれかの単語に記載されているEJBの概念の言葉で「八股文、」言う、または白で- 「クライアントソフトウェア」
「クライアントソフトウェア」?EJBの言うC / Sソフトウェアの概念はありますか?
はい、そうです!
EJBは、「のような」に、サーバー上の「クラス」の形でC / Sクライアントソフトウェアを使用して、サーバー上に置く人々にある
ラインのコール。
ほとんどそれを崩壊!
EJBとJSPの関係は何ですか?EJBとJSPが関連しているが、関係はJSPのほとんどがされ、実際には非常に大きいです
何よりも、サーバ側のリモートEJBクラスのサービスで呼び出さ。


下4 0.1 EJBは何だ 
、我々は「ステレオタイプ」のEJBの概念の本質発見、そして、のは本当の根本を通じて基本的なEJBテクノロジーの実現を分析してみましょう
EJBの作品を分析するために、現在の技術。
4.2 EJB実装技術
EJBコンポーネントが別々のサーバ上で実行されている、クライアントは、ネットワークを介してEJBオブジェクトを呼び出しています。Javaでは
、この技術は、リモートオブジェクトの呼び出しがRMIで可能にし、EJBテクノロジーは、RMIの基礎です。、RMIによるJ2EEテクノロジは、
クライアントがネットワーク経由でEJBオブジェクトを呼び出すことができ、リモートオブジェクトのEJBコンポーネントを作成します。
4.3 RMIはどのようなものを見るために 
、我々はRMIを言う前に、二つの用語を理解する必要性を:
の直列化オブジェクト
分散コンピューティングおよびRPC
1名詞:直列化されたオブジェクトの 
オブジェクトのシリアル化の概念:オブジェクトのシリアル化プロセスは、ターゲット状態にありますバイトストリームとの回復からのバイトストリームに変換する
オブジェクト。バイトストリームにオブジェクトの状態を変換した後、それを保存するために、様々なバイト・ストリーム・クラス・ファイルをパッケージ、java.ioで使用することができる
、または別のホストへの送信対象データネットワーク接続による。
上記の文はほとんどが「ステレオタイプ」は、我々はその後、方言説明するかもしれない:あなたのプログラムの直列化オブジェクトは本当である
オブジェクトのクラスの例として、たとえば、あなたは、MyClassクラス、またはオブジェクトのクラスのいずれかをカスタマイズします、に変換、それを
あなたがバイト配列を置くことができることを意味し、バイト配列、この時間は、あなたがバイトにオブジェクトを入れているので、
配列、そしてもちろん、あなたは簡単にほとんどでそれを処分することができます彼は、ネットワーク上のリモートコンピューティングに送信する
マシン上で。図に示すように。


:名詞2分散コンピューティングRPCと 
ジャワの誕生は、すでにRPCのこの概念を持って前に、RPCがあるため、RPCは、純粋なJavaのコンセプトではありません
「リモートプロシージャコール」つまり、「リモートプロシージャコール」の略称です 前にJavaプログラミング言語のほとんどでは
などのFortran、C、COBOL、などの単語、手続き型言語ではなく、オブジェクト指向です。したがって、コンパイルされた
ネットワーク上の別のマシンに許容天然加工プロセスで表さプログラミング言語、例えば、関数またはサブルーチンは、実行。彼は言った
はっきり、リモートコンピュータ上の関数を呼び出すには、ローカルコンピュータです。
図に示すように。


名詞3:両方RMIの組み合わせされ 
、その中国名は「リモートメソッド呼び出し」で、RMI英語名は「リモート・メソッド呼び出し」である
クラスの分散コンピューティング、リモートオブジェクトのインスタンスを達成するためのJavaオブジェクトのシリアル化メカニズムを使用することです通話の方法。
セイはより明確に、使用し、上記の二つの概念を組み合わせたものです長距離通話を実現するために使用するオブジェクトのシリアライズにある
リモートのクラスは、あなたがソケットプログラムを記述する必要はありませんし、ターゲットにする必要はありませんときに呼び出すには、この方法をシーケンス
の操作は、ライン上の直接呼び出しは非常に便利です。
リモートメソッド呼び出しは、メカニズム、他のプロセス、これを利用アクティブに、互いの機能間のコンピュータオブジェクトの呼び出しで
使用し、コンピュータ上の別のメソッドを呼び出すために一度に一つのコンピュータ上のメカニズムの種類、プログラムの構文オブジェクトをルールと
同じマシン上のローカルオブジェクト呼び出しの間法における文法規則。
図に示すように。


4.4利点
分散コンピューティングシステムの設計のためのこの機構は、プログラミングは非常に便利をもたらしました。ただ、RMIの設計プロセスのルールに従う
ようにTCPソケットと:シーケンスを、あなたは、もはやのようなネットワークの詳細については、下のRMIに干渉することはできません。任意の二つのコンピュータの
RMIの責任の間の通信。リモートコンピュータ上のオブジェクトと同じように簡単にローカルオブジェクトを呼び出します。
引数及び戻り値が渡されるようにRMIはなく、事前定義のデータ型よりも、オブジェクトを完了することができます。
あなたがパラメータとして渡され、このような複合型のJavaハシナテーブルと同様であってもよい、と言われています。
4.5欠点 
は、比較的簡単なメソッド呼び出しがある場合、その効率ははるかに遅いリモートともソケット、ローカルよりも実行することができる
ため、その必要性のため、遅くなり返さ単純データのメカニズムのアプリケーションに比べて、ネットワークを通過します情報だけでなく、
関数の戻り値の情報を含む、また、標的配列のバイトの内容が含まれています。
4.6 EJBはRMIベースで
、EJBコンポーネントは、リモートオブジェクトに対して、EJB RMI技術にかかわらず、のみJ2EE技術は、RMIによって作成され
、それはRMI技術なりますので、その実装クラスを生成することなく、リモートインタフェースを定義します詳細の一部が隠されました。
しかし、いずれにしても、土台は、あなたが長いなどとしてEJB、RMIの原理を理解したいのであれば、まだEJB RMIある
ライン上の明確の原則。あなたは、EJBにEJBを使用する必要がないときに使用してしたときに把握します。


5. EJBいわゆる「サービスのクラスタ」 
今、私たちが知っていること、RMIは異なるサーバー上でさまざまなタスクや機能にクラスであり、それぞれがによって提供
も呼び出し規約の確立の間に分散コンピューティングタスクの実装EJBは、いわゆる「サービス・クラスタ」の概念を理解しています。
オリジナルは、運用共有するためにそれを実行するために、すなわち、別のコンピュータに、いくつかのカテゴリのコンピュータ計算上で
これらのクラスは、CPUとメモリリソースを占有する必要がある行を。それはまた別のモジュールに異なるソフトウェア機能を可能にする
すべての修正の顧客の直後に、ライン上のサーバにこれらのクラスを変更するときに必要がある特定の機能を変更するには、サーバー上、
クライアント・ソフトウェアが変更されています。図に示すように。

6.この展開はそれが完璧である 
214に示されているこの「サービスクラスタ」一見「完璧」のビューは、実際には、この数字は、それがフルに描くことはなかった、私たちがしなければならない
この絵の完全な、問題はないもので、見てみましょうを置きます。
データベース側の6.1ボトルネック 
に示すように、この構成は、ボトルネックであることを慎重に観察した後、。


我们看看图2 15的结构图,现在如果想实现各个服务器针对同一个数据库的查询,那
么,不管你部署多少个功能服务器,都需要针对一个数据库服务器进行查询操作。也就是说,
不管你的"计算"有多么"分布"也同样需要从一台服务器中取得数据。虽然,看起来将各个功
能模块分布在不同的服务器上从而分担了各个主计算机的CPU 资源,然而,真正的瓶颈并不
在这里,而是,数据库服务器那里。数据库服务器都会非常忙的应付各个服务器的查询及操
作请求。
因此,通过这个结构图使我们了解到了EJB 根本不能完全解决负载的问题,因为,瓶颈
并不在功能模块的所在位置,而是在数据库服务器这里。
6.2 假如分开数据库,数据共享怎么办 
有的读者一定会想到下面的这个应用结构,如图所示。


就是把每一个功能服务器后面都部署一个数据库,这样不就解决了上节所说的问题了
吗?是的解决了数据库查询负载的问题,然而又出现了新的问题,就是"数据共享"的问题就
又不容易解决了。
6.3 网络面临较大压力,让你的应用慢如老牛
我们再向前翻看看如图2 15所示的这种架构中存在两个网络,一个是"A 网"一个是"B
网",这两个网络是不同的。"B 网"往往是局域网,一般带宽是10M/100M,速度较快,因此
到还好说,然而,"A 网"往往是互联网或者是利用电信网络互联VPN 网或称广域网。"A 网"
的特点是带宽一般较窄,如ADSL 的网络仅仅有512K-2M 的带宽,由于广域网互联的成本较
高,所以一般不会有较高的带宽。
而在这个网络上恰恰跑的是功能模块和客户端软件之间交换的数据,而这部分数据恰恰
优势非常占用带宽的。
因此,这个应用架构其运行速度可以想见是多么的慢了。说句不夸张的话,有点想老牛
拉破车一样的慢。
一个如老牛的系统:
目前在中国互联网做运营商网络管理系统的一个大公司,它的一个早期的网管软件就是
采用了这种架构来做的C/S 结构的应用系统。
有一次,我作为评估者来对其应用系统进行评估,将其部署到一个非运营商大型的网络
中的时候,便出现了我们上述描述的情况,速度已经到了难以忍受的地步,打开一个流量图,
有时候需要用15分钟的时间才能呈现完整。然而,该系统在开发阶段并没有发现这个问题,
为什么呢?因为,他们没有考虑到应用的实际用户连接网络的复杂性,从而给该公司造成较
大损失,以至于,这个开发架构被最终遗弃。

7. EJB 活学活用,J2EE 不是必须使用EJB 
通过上面小节的讲解似乎好像EJB 和开发Web 应用的B/S 结构的系统关系并不大,其实
倒也不然。我们如果把"客户端程序"理解成某一台服务器,这样也是可以被应用的,而且,
如果是服务器互相之间做EJB 的调用的话,也就不存在广域网带宽限制的问题了。
但是,如下情况尽量就不要使用EJB 了:
1、较为简单的纯Web 应用开发,不需要用EJB。
2、需要与其他服务程序配合使用的应用,但调用或返回的自定义的网络协议可以解决
的应用程序,不需要使用EJB。
3、较多人并发访问的C/S 结构的应用程序,尽量不要使用EJB。

 

 

总结:

a.EJB实现原理: 就是把原来放到客户端实现的代码放到服务器端,并依靠RMI进行通信。

b.RMI实现原理 :就是通过Java对象可序列化机制实现分布计算。

c.服务器集群: 就是通过RMI的通信,连接不同功能模块的服务器,以实现一个完整的功能。


原文:https://blog.csdn.net/jojo52013145/article/details/5783677 

おすすめ

転載: www.cnblogs.com/jinanxiaolaohu/p/12166615.html