質問
3Cp> Struts2を使用してWebアプリケーションgを構築しました。それから私は同じ戦争で小さな管理者インターフェースを構築しました。u003C/
3Cp> WebAppが増えているので、管理インターフェイス。さて、私は管理者インターフェースを他のアプリから別の戦争で分けることを考えていますu003C/
3Cp>それは良い考えですか?管理者戦争と残りのWebAppの分離が原因で取得できるパフォーマンス上の利点はあります。u003C/
3Cp>管理者部分は、データベース内の変更/更新/設定を行うことについてほとんどのものです。そのため、Appの残りの部分のUIに直接影響しません。それを分離することはまた、私が他の部分に影響を与えずに両方の部分を更新することができることを保証します。u003C/
3Cp> [アップデート]u003C/
3Cp>管理者部をローカルマシンに入れることはできません。それはWebアプリです。u003C/
3Cp> Do they use the same classes?
n nope、パッケージ全体が管理アクションで異なり、ビューも個別です。u003C/
3Cp> How do you update them?
Nアップロード戦争u003C/
3Cp> Do you use application session?
nもちろん、admin&normal-userには異なるセッションが使用されていますが。u003C/
解決
3Cp> Webアプリケーションのさまざまな部分を別々の戦争として互いに分けることは、アプリケーションサーバーで個々のアプリケーションを停止して再起動し、各アプリケーションでのアクセス制御を簡素化できることを意味します。個別のアプリケーションは、主なアプリケーションがまだ実行されている間に管理者が管理者に変更を展開することができることを意味します(この後のu003Cem>理論u003C/em>を強調していることに注意してください)。u003C/
3Cp>それは本当に利益のためにそれについてです。あるセッション数が減ったため、管理ページがいくつかの非常にわずかなパフォーマンス上昇を見ることができます。メインアプリケーションでのパフォーマンスが向上するのはほとんどありません。u003C/
3Cp>今やこれをより困難にし、可能な利益のいくつかを取り除くという意味。u003C/
3Cp> user
オブジェクトがあるかどうかを検討してください。これは、管理者またはユーザーによって行うことができるchangePassword
のようなメソッドを持っています。u003C/
3Cp>これら2つのオプションを検討してください。u003C/
- 3Cul> u00
- 3Cli>ユーザーテーブルにユーザーオブジェクトに注釈を付けるには、Hibernateまたは他のORMを使用しています。u003C/l i> u00
- 3Cli>データベースに対してネイティブクエリを実行しているデータアクセスレイヤがありますu003C/l i>u003C/u
3Cp>あなたはこれらのために2つのオプションを持っています:u003C/
- 3Cul> u00
- 3Cli>ユーザーオブジェクト/データ層の2コピー - 各戦争の1つu003C/l i>u00
- 3Cli>両方の戦争を負荷にする1つの外部ジャーu003C/l i>u003C/u
3Cp>スキーマの変更をするときはいつでも(ユーザーまたはデータ層の更新を必要とするものは何でも)少なくとも2倍の作業を持ちます(アプリケーションu003Cem>の両方をu003C/em>リロードして同期に滞在させてください)、または共有JARをリロードする必要があります。u003Cem>そしてu003C/em>両方のアプリケーションを再起動します(そしてApp Serverがうっかりしている場合は、再起動します)。u003C/
3Cp>一日の終わりに、一連のデータオブジェクト(およびデータ層)をコピーしたことを確認します。管理者には数が多い可能性がありますが、メインアプリケーションにあるすべてのものが管理者になる可能性があります。u003C/
3Cp> 2つがデータ/モデルを複製した場合、バグの不可能なダミサーがあります。さらに、自分で重複したビューを見つけることができます(ユーザー更新ページの管理者ビューとユーザー更新ページのメインアプリケーションビュー)。u003C/
3Cp>最終的には、2つのアプリケーション間の承認にわずかな違いがあることがわかります - 同じ認証、同じデータ、および可能性が高いビューを共有したいと思うでしょう。それらはadminおよび普通のユーザーのためのさまざまなコントローラです。u003C/
3Cp>これから、それをすべて1つのアプリケーションとして守るだけでよいでしょう。あなた自身を繰り返さないでください。ビューを複製しないで、モデルを複製しないでください。u003C/