スタヌトアップAjaxポヌタルテクノロゞヌ-次䞖代の゚ンタヌプラむズポヌタルに向けお

よくあるこずですが、 Ajax Portalテクノロゞヌは、䌁業Webサむトの「゚ンゞン」を構築する際の2぀の゚ンタヌプラむズポヌタルずAjaxテクノロゞヌの統合ずしお偶然登堎したした。 その結果、゚ンタヌプラむズポヌタルに新たな颚を吹き蟌む可胜性のある新しいものが登堎したした。



箄5幎間、私はペヌロッパの䞻芁な関心事であるミンスク郚門で働いおいたした。 仕事の䞀環ずしお、むントラネットに参加したした新しいアプリケヌションの開発ず叀いアプリケヌションのサポヌト。 目暙は、異皮アプリケヌションを単䞀の情報スペヌスに統合する䜕らかの統合ツヌルを開発するこずでした。 この䜜業の特異性は、アプリケヌションがさたざたなWebテクノロゞヌを䜿甚しお開発され、物理的に異なるサヌバヌに配眮されたこずでした。 技術的な芳点からは、これらのアプリケヌションを「友達にする」ための唯䞀の解決策がありたした-HTMLフレヌムを䜿甚するこずです。 HTMLフレヌムは、ブラりザりィンドりを耇数の郚分に分割できるHTMLタグのセットです。各郚分では、むンタヌネットサむト、Webアプリケヌション、およびWebペヌゞを衚瀺できたす。 このアプロヌチのハむラむトは、フレヌムの1぀ブラりザの独立した郚分の1぀に単玔なリストたたはツリヌ圢匏のリンクセットが含たれ、他のフレヌムにむンタヌネットサむト、Webアプリケヌション、Webペヌゞ、PDFドキュメント、MS Office-ドキュメントWord、Excel、PowerPointなど、写真など 以䞋、コンテンツたたはむンタヌネットリ゜ヌスず呌びたす。 この堎合、衚瀺されたコンテンツずコンテンツのタむプの堎所に違いはありたせんでした。



倖芋は次のように芋えたした。ブラりザりィンドりは2぀の䞍均等な郚分フレヌムに分割されおいたした。 巊偎狭い方には、リンクがリストたたはツリヌの圢匏で衚瀺され、右偎には、巊偎から遞択したリンクに関連するコンテンツが読み蟌たれたした。 したがっお、アプリケヌションずドキュメントのコン゜ヌルが䜜成され、異なるアプリケヌションずドキュメントが単䞀の情報スペヌスに結合されたした。 コン゜ヌルでは、情報を怜玢、ナビゲヌト、さらには保護するこずもできたした。



開発した゜リュヌションに基づいお、䌁業サむトを䜜成するための補品のリリヌスを申し出たしたが、経営陣からのサポヌトは芋぀かりたせんでした。 革新に察する倧䌁業のマネヌゞャヌの兞型的な反応は、ゞャックトラりトの著曞「Feeling the Horse」に詳しく説明されおいたす。 ただし、次の2぀の䌚瀟で働いお新しい補品を䜜成しようずするこずをgiveめたせんでした。 同時に、䌁業りェブサむトの「゚ンゞン」がたすたす完璧になりたした。



時間が経぀に぀れお、HTMLフレヌムの䜿甚はWebアプリケヌションの䜜成においお「悪い習慣」ず芋なされるようになりたした。 IFRAME HTMLタグに぀いおのみ䟋倖が䜜成されたした。これにより、Webペヌゞの任意の堎所に独立したブラりザヌりィンドりを远加し、そのコンテンツを衚瀺できたす。 その結果、組み蟌みのリンクツリヌずIFRAMEタグを持぀ペヌゞで実隓を開始したした。 同時に、ツリヌ内のリンクがクリックされるず、コンテンツはIFRAMEタグ内にロヌドされたした。 圓然、ツリヌはすぐにJavaScriptに基づいお動的になり、必芁に応じおレベルがロヌドされたした。 ツリヌが「アむコン」のセットに眮き換えられたバヌゞョンもありたした。



Ajaxテクノロゞヌの出珟により、Ajaxテクノロゞヌを䜿甚しおHTML / XHTMLコンテンツをロヌドし、JavaScriptプロパティinnerHTML䞀般にDIVタグを介しおコンテンツを挿入しお衚瀺するずいうアむデアが生たれたした。 これは、関連するアプリケヌション同じCSSおよびJavaScriptファむルを䜿甚するアプリケヌションで完党に機胜したした。



次のステップは、ロヌドされたHTML / XHTMLドキュメントコンテンツに関連するすべおの必芁なCSSおよびJavaScriptファむルを抜出し、それらをメむンドキュメントに貌り付けるずいうアむデアでした。 クヌルなアむデア、䞀芋シンプル。 考えられる状況、ブラりザヌの違いなどのほずんどをカバヌする前に倚くの時間を費やしたした。 䜜業の結果はajax4all JavaScriptラむブラリでした。これにより、JavaScriptを䜿甚しおほずんどすべおのHTML / XHTMLドキュメントWebアプリケヌションを別のHTML / XHTMLドキュメントWebアプリケヌションに挿入し、実質的に問題なく1぀ずもう1぀を操䜜できたす泚もちろん、CSSクラスずJavaScriptメ゜ッドおよびクラスの同じ名前に問題があるかもしれたせんが、この問題でさえ、CSSクラスずJavaScriptクラスおよびメ゜ッドの名前を倉曎するこずにより、プログラムで解決できたす。 ポヌタル゜リュヌションJSR-168およびJSR-286暙準に基づいた゚ンタヌプラむズポヌタルに別の情熱がなければ、このラむブラリはおもちゃになる可胜性がありたす。



そのようなこずが起こったので、埌でWebLogic Portalに移行されるプロゞェクトに取り組んでいたずきに、ポヌタル゜リュヌションに粟通したした。 その結果、䞻なこずが起こりたした-2぀の情熱のアむデアが組み合わされ、その結果、Ajax Portalが登堎したした。



ポヌタルを䜿甚するず、小さな独立したアプリケヌションであるポヌトレットに基づいおペヌゞを䜜成できたす。 ポヌトレットは、数個から数十個のポヌトレットを含むこずができるポヌタルペヌゞに小さな独立したりィンドりずしお衚瀺されたす。 必芁に応じお、ポヌトレットは互いに通信できたすポヌトレット間通信。 ポヌトレットを䜿甚するず、モゞュヌル匏の゜フトりェア開発が可胜になりたす。



たた、ポヌタルを䜿甚するず、単䞀のポヌタルペヌゞ内の異なる゜ヌスからのデヌタを集玄結合できたす。これにより、耇数のアプリケヌション間で情報を怜玢するのではなく、単䞀のブラりザヌペヌゞ必芁な堎合は耇数のペヌゞ内で情報を衚瀺できたす。 これにより、意思決定を迅速に行うこずができたす。



ポヌタルの次の利点はカスタマむズです-ポヌタルペヌゞをカスタマむズする機胜ポヌトレットの移動、新しいものの远加、叀いものの削陀、ポヌトレットの最小化ず拡匵が可胜になりたす。 プログラマヌを巻き蟌たずにデスクトップワヌクスペヌスをカスタマむズしたす。 これにより、情報ずその凊理を行う際に最高の快適さを提䟛できたす。



Ajaxポヌタルが゚ンタヌプラむズポヌタルの開発者に提䟛するもの

  1. クラむアント偎のコンテンツ集玄JavaScriptを䜿甚するブラりザヌ内は、JSR-168およびJSR-286暙準に基づく埓来のサヌバヌ偎のコンテンツ集玄よりも効率的です。
  2. ポヌタルサヌバヌの負荷を軜枛したす。 コンテンツおよびデヌタは、ポヌタルサヌバヌをバむパスしお、ポヌトレットサヌバヌポヌトレットアプリケヌションが実行されおいるサヌバヌからブラりザヌに盎接送信されたす。 トラフィックの削枛は玄10〜20回発生し、ポヌタルペヌゞ䞊のポヌトレットの数に䟝存したす。
  3. ポヌトレットの倉曎は、新しいペヌゞの远加や叀いポヌトレットの削陀など、ポヌタルペヌゞ党䜓をリロヌドするこずなく行われたす。 その結果、すべおがより速く動䜜したす。
  4. ポヌトレットは、ポヌタルペヌゞ党䜓をリロヌドするこずなく、新しいポヌトレットを開いたり、叀いポヌトレットを閉じたりポヌタルペヌゞから削陀できたす。
  5. 他のポヌトレットずの簡略化された通信ポヌトレット間通信。 これは、ポヌタルペヌゞのコアを介しお、たたはポヌタルたたはポヌトレットサヌバヌを介しお実行できたす。
  6. processActionメ゜ッドの必芁性はなくなりたした。
  7. JSR-301およびJSR-329暙準に基づいた倧きなブリッゞをサポヌトする必芁はありたせん。その結果、コンテンツずリ゜ヌスをダりンロヌドするための単䞀の方法が登堎したした。
  8. これで、通垞のWebアプリケヌションをポヌトレットずしお䜿甚できたすマッシュアップの特定の堎合、これに぀いおは以䞋のいずれかの蚘事で説明したす。 さらに、porjaxポヌトレット蚘述子を䜿甚したWebアプリケヌションの䜿甚は特別なケヌスず芋なすこずができたす。
  9. ポヌトレットずしお、比范的䜎い解像床で画面に衚瀺されるように蚭蚈されたモバむルデバむス甚のWebアプリケヌションのバヌゞョンを䜿甚できたす。 これは、そのようなアプリケヌションをポヌトレットに衚瀺するのに理想的です䟋えば、モバむル版のOdnoklassniki゜ヌシャルネットワヌクアプリケヌションやATO.BYゞオサヌビス 。
  10. 特定のAPIの欠劂。 結果ずしお、より安䟡で手頃な熟緎劎働者これは管理者たたは建築家にずっおより興味深い。




䞊蚘で挙げたすべおのこずは、最終的には゜フトりェアの䜜成が安くなり、メンテナンスの固定費が安くなるこずを意味したす。 これはすべお、基本的にajax4allラむブラリを䜿甚しお実珟されたす。 圌女はAjaxポヌタルの䞭心です。



ajax4allラむブラリを䜜成するずき、画像、スタむル、およびスクリプトぞのすべおの盞察リンクを絶察リンクに倉換する必芁に盎面したした。 それ以倖の堎合、ポヌタルペヌゞにアクセスするず、各盞察リンクの実際のアドレスが、ポヌタルペヌゞのアドレスを基準にしおブラりザによっお蚈算され始めたした。 唯䞀の深刻な問題は、JavaScriptコヌドで「配線された」盞察アドレスです。 この堎合の解決策は、Webアプリケヌションを適合させるこずだけですポヌトレットずしお䜿甚されるこずになっおいるWebアプリケヌションのベストプラクティスを玹介したす。



ajax4allラむブラリを䜜成する2番目のタスクは、通垞のハむパヌテキストリンクをAjax芁求呌び出しに倉換し、続いおポヌトレットりィンドりのコンテンツを眮き換えるこずでした。



ほずんどのWebアプリケヌションは、ただHTMLフォヌムを䜿甚しおいたす。 ポヌトレットずしお䜿甚されるWebアプリケヌションのコンテンツを単に「分離」しお、ポヌトレットペヌゞに貌り付けるだけでは䞍十分であるこずが刀明したした。 HTMLフォヌムの盞察リンクも倉曎する必芁がありたした。 次に、フォヌム自䜓の機胜をどうするかずいう疑問が生じたした。 –送信ボタンたたはJavaScriptを䜿甚しおHTMLフォヌムを送信するず、通垞、ポヌトレットりィンドりのコンテンツをリロヌドする代わりに、すべおのポヌタルペヌゞがリロヌドされたす。



事実䞊の暙準ずなったAjax Submitパタヌンを䜿甚するこずで解決策が芋぀かりたした。 このパタヌンの本質は、通垞の送信HTMLフォヌムをAjaxを䜿甚したリク゚ストに眮き換えおから、暙準のサヌバヌレスポンスを受信し、それを倉換しお、ポヌトレットりィンドり内のポヌタルペヌゞに挿入するこずです。 簡単に聞こえたすが、蚱容可胜なアヌキテクチャ゜リュヌションを芋぀けるには数か月かかりたした。 タスクの耇雑さは、ブラりザヌのDOMモデルの倧きな違いでした。 さらに、JavaScriptを蚘述するずきの最も䞍機嫌なブラりザヌは、通垞信じられおいるように、SafariではなくInternet Explorerであるこずが刀明したした。



最初は、クラむアント偎JavaScriptを䜿甚するブラりザヌずサヌバヌ偎ポヌタルサヌバヌの叀兞的なアプロヌチの䞡方のタむプの集玄をサポヌトする぀もりでした。 慣䟋により、埓来のWebアプリケヌションを䜿甚するアプロヌチは非垞に優れおおり、サヌバヌ偎の集玄をサポヌトするブランチは廃止されたした。 たぶん私は圌女に戻りたすが、埌で...



埓来のJava Portlet APIJSR-168およびJSR-286暙準ず100互換を倱ったこずで、私は䞻なこずを達成したした。AjaxPortalはHTML、CSS、およびJavaScriptに基づいお構築されおいたす。 これは、ポヌタルのサヌバヌ郚分のプラットフォヌムプログラミング蚀語を含むに䟝存しないこずを意味したす。 その結果、Ajax Portalはクロスプラットフォヌム゜リュヌションず芋なすこずができたす。 Java Webアプリケヌションの開発は、JSPタグラむブラリを介しおサポヌトされおいたした。 ラむブラリが安定し、新しいタグ属性が衚瀺されなくなるず、JSFコンポヌネントラむブラリを䜜成できるようになりたす。 今幎2011幎の6月に、.NETのラむブラリを䜜成した.NET開発者が参加したした。 PHPバヌゞョンの登堎により、Ajax Portalは絶察にクロスプラットフォヌムの゜リュヌションであるず誇らしげに宣蚀するこずが可胜になりたす。 Perl甚のラむブラリを䜜成するずいうアむデアがありたすが、これは遠い芋通しです。



JavaのPortlet APIの代替ずしお、プロゞェクトはMicroServlet Java MVCフレヌムワヌクを提䟛する堎合がありたす。 これはJavaに関する私の本の䟋であり、1぀のクラスHttpServletに基づくに基づいお文字通り本栌的なWebアプリケヌションを構築できたす。 このフレヌムワヌクは、BeanフォヌムずJSPペヌゞをサポヌトしおいたす。 広く䜿甚されおいるJavaアノテヌション。 これは、1぀たたは2぀のメ゜ッドのみを持぀こずができるポヌトレットを䜜成するための完璧な゜リュヌションです。 ナヌザヌは、「圌になろうずなかろうず」ず答えたす。 私はそれが奜きです。 MicroServletフレヌムワヌクは、Spring MVCにたすたす近づいおいたす。 これが良いか悪いかはただわかりたせん。 最新のトレンドは、MicroServletフレヌムワヌクに基づいた新しいPortlet APIです。 ナヌザヌにずっお郜合が良いかどうかがわかりたす。



倚くの堎合、ポヌタル゜リュヌションはCMSに関連付けられおいたす。 CMSの独自の実装を䜜成するこずは絶察にお勧めできたせん。 倚くのスタヌトアップがすでに混雑しおいるニッチを占有しようずしおいたす。 商甚および無料のオヌプン゜ヌスの䞡方の十分な゜リュヌションがありたす。 䞀方、Ajax Portalのアヌキテクチャを䜿甚するず、機胜を制限したCMSずしおポヌタルを䜿甚できたす。 これに぀いおは別の蚘事を曞く必芁があるず思いたす。



私は別の興味深い事実に出䌚いたした-実際のアプリケヌションを䜜成するずき、朜圚的な顧客は䌁業ですでに䜿甚されおいる承認および認蚌システムに開発を䜿甚したいです。 したがっお、セキュリティモゞュヌルの実装に関する質問はただ公開されおいたせん。



Ajax Portalの各バヌゞョンは、ajax4allラむブラリずMicroServletフレヌムワヌクに基づくPortlet APIに加えお、いく぀かの革新をもたらしたす。 バヌゞョン1.0の堎合、*、このような革新は、領域ポヌタルペヌゞのポヌトレットコンテナの動的な倉換です。 状態パタヌンが適甚されたした。 倉換はCSSを䜿甚しお行われたす。 CSSマヌカヌはマヌカヌずしお䜿甚されたす。 HTML / XHTMLコヌドの同じ構造で、マヌカヌに応じお、リヌゞョンずポヌトレットの衚珟が倉わりたす。 領域は、暙準ビュヌ各ポヌトレットは小さなりィンドりに衚瀺されたすからアコヌディオンたたはブックマヌクシステムに倉換できたす。 さらに、ポヌレットを匷調せずに、領域党䜓を単䞀のりィンドりずしお衚瀺するこずもできたす。 たた、ポヌトレットずリヌゞョンの党面的な装食がないビュヌもありたす。



過去数幎にわたっお、倚くの䌁業がポヌタル゜リュヌション垂堎を去りたした。 倚くのスタヌトアップやオヌプン゜ヌス゜リュヌションは攟棄されおいたす。 私の意芋では、䞻な理由は、JSR-286暙準がAjaxテクノロゞヌの可胜性を実珟できなかったこずです。 Ajaxの導入埌にリリヌスされたJSR-286暙準は、実際にはJSR-168の機胜を拡匵しただけで、新しいものは䜕ももたらしたせんでした。 ajax4allラむブラリヌが解決するように蚭蚈されおいるのは、これらの問題です。



最新のファッショントレンドは、ポヌタル゜リュヌションのマッシュアップぞのスムヌズな移行です。 これは別の蚘事のトピックだず思いたす。 Ajax Portalは、゚ンタヌプラむズポヌタルずマッシュアップの間のニッチにありたす。 その結果、カスタマむズずパヌ゜ナラむズをサポヌトする、クロスブラりザのクロスプラットフォヌムWeb 2.0ポヌタル/マッシュアップが䜜成されたす。



スタヌトアップにずっおの䞻な質問は、その類䌌物です。 私は長い間怜玢しおよく怜玢したしたが、ただ芋぀かりたせんでした。 この蚘事の読者がそれらを知っおいれば、私にそれらを瀺したら私は非垞に感謝したす。 次のこずに泚意しおください。

  1. HTML IFrameタグの代替ずそれをAjaxリク゚ストに眮き換えるこずに぀いお、
  2. 特別な準備オフラむンなしで暙準WebアプリケヌションのAjax Submitパタヌンを実装したす。


そしお、通垞生じる2番目の質問ず、なぜこれが以前に行われなかったのか -以前は、珟圚のドメむンの倖郚にAjaxリク゚ストを送信する機胜を指定する「 クロスオリゞンリ゜ヌス共有 」暙準はありたせんでした。 リモヌトポヌトレット甚のAjaxポヌタルもプロキシをサポヌトしおいたす。



私はiGoogleを含む倚くの䞀般的な゜リュヌションを「分析」し、それらすべおが基本的にIFrame HTMLタグを䜿甚しおいるこずを発芋したした。 したがっお、ajax4allラむブラリは、リモヌトポヌトレット甚のHTML IFrameタグで知っおいる唯䞀の遞択肢です。 Ajaxポヌタルでajax4allを䜿甚する堎合、遞択した領域をコンテンツで自然に塗り぀ぶし、それに比䟋しお垂盎方向に匕き䌞ばすこずが可胜になりたす。これは、HTML IFrameタグでは実珟できたせん。



継続

http://habrahabr.ru/blogs/AJAX/125568/



All Articles