私の現在のプロジェクトでは、ここ数年Struts 1を使用していますが、...ええと...Strutsはその時代を示しています。フロントエンドコードを、サーバーからXMLを使用するAjaxクライアントにゆっくりと移行しています。従来のStrutsアプリケーションを別のフレームワークに移行したことがあるかどうか、またその際に直面した課題は何かと思います。
2 に答える
もちろん。StrutsからAJAXフレームワークへの移行は、非常に解放的な経験です。(XMLではなくJSONを使用しましたが、解析がはるかに簡単です。)ただし、これは事実上、アプリケーションを完全に書き直したものであることに注意する必要があります。
MVCの従来のデータベース/JSP/アクションスキームの代わりに、モデルがHTTP GETリクエストで表され、アクションがPOST / PUT / DELETEリクエストで表され、ビューがWebブラウザによってその場でレンダリングされます。これは、各分野で興味深い課題につながります。
サーバー側-サーバー側では、クライアントにデータを公開するための標準を開発する必要があります。最も簡単で簡単な方法は、データの階層に最適なREST手法を採用することです。これはサーブレットで実装するのはかなり簡単ですが、Sunはかなりクールに見える属性を使用してJava1.6スキームも開発しました。
サーバー側のもう1つの側面は、伝送プロトコルを選択することです。すでにXMLについて言及されていることは知っていますが、再考することをお勧めします。XMLパーサーは、ブラウザーによって大きく異なります。あるブラウザはドキュメントルートを最初の子にし、別のブラウザは特別なコンテンツオブジェクトを追加し、それらはすべて空白を異なる方法で解析する場合があります。さらに悪いことに、normalize()関数は主要なブラウザによって正しく実装されていないようです。つまり、XML解析はハッキングでいっぱいになりがちです。
JSONは解析がはるかに簡単で、結果の一貫性が高くなります。JavascriptとActionscript(Flash)はどちらも、JSONをオブジェクトに直接変換できます。これにより、データへのアクセスはxyまたはx[y]の簡単な問題になります。考えられるすべての言語でJSONを処理するためのAPIもたくさんあります。解析が非常に簡単なため、XMLよりも優れたサポートがほぼ提供されています。
クライアント側-あなたが遭遇しようとしている最初の問題は、Javascriptの書き方を誰も理解していないという事実です。特にそう思う人。Javascriptに関する本をお持ちの場合は、今すぐウィンドウから外してください。彼らがしていることに実際に飛び込むことなく、それらはすべて同じ「ハッキング」パターンに従うので、言語に関する良い本は実際にはありません。
最下位レベルから、チームはJavascript開発に関する修復トレーニングを必要とします。Javascriptクライアントガイドから始めます。これは、言語に関する事実上の情報源です。次の目的地は、Javascriptに関するダグラスクロックフォードのビデオです。私は彼が言わなければならないことすべてに同意しませんが、彼は言語の数少ない専門家の一人です。
それを理解したら、使用するフレームワークがある場合はそれを検討します。一般的に言って、私はPrototypeやMootoolsのようなものが嫌いです。彼らは単純な問題を取り、それを悪化させる傾向があります。それでも、これらのツールを自由に評価して、機能するかどうかを判断できます。
チームの経験が浅すぎるためにフレームワークなしでは生きていけないと絶対に感じる場合は、GWTが適している可能性があります。GWTを使用すると、JavaコードでDHTML Webアプリをすばやく記述し、それらをJavascriptにコンパイルできます。問題は、これを行うことによって大量の柔軟性を放棄していることです。Javascript言語は、GWTが公開するよりもはるかに強力です。ただし、GWTを使用すると、Java開発者はより速くスピードアップできます。だからあなたの戦いを選んでください。
これらは私が考えることができる重要な分野です。アプリケーションからストラットを取り除くと、安堵のため息をつくと言えます。それは少し獣かもしれません。特に、経験の浅い開発者がStrutsモデルに取り組んでいる場合はなおさらです。:-)
質問は?
編集1:あなたのチームはW3Cの仕様を忠実に研究する必要があることを付け加えるのを忘れました。これらは、最新のブラウザで使用できるAPIです。DOM 0 APIを使用している人を見つけた場合(たとえば、document.getElementById( "blah")。valueの代わりにdocument.forms ['myform']。blah.value)、DOM1仕様全体を理解するまで強制的に転記します。下に。
編集2:考慮すべきもう1つの重要な問題は、新しいAJAXアプリケーションをどのように文書化するかです。RESTスタイルのインターフェースは、Wikiに文書化するのに適しています。私がしたのは、各サービスと説明をリストしたトップレベルのページでした。サービスパスをクリックすると、各サブパスの詳細情報が記載されたドキュメントが表示されます。理論的には、このスキームは、ツリーを移動するのに必要な深さまで文書化できます。
JSONを使用する場合は、オブジェクトを文書化するためのスキームを開発する必要があります。Wikiで可能なプロパティをドキュメントとしてリストしました。これは単純なオブジェクトツリーには適していますが、より大きく、より洗練されたオブジェクトでは複雑になる可能性があります。その場合は、IDLやWebIDLなどの補足を検討できます。(XML DTDおよびスキーマよりもはるかに悪いことはありません。;-))
DHTMLコードは、そのドキュメントではもう少し古典的です。JSDocなどのツールを使用して、JavaDocスタイルのドキュメントを作成できます。注意点が1つだけあります。Javascriptコードは、コード内で文書化するのには適していません。それがダウンロードを膨らませるという事実が他の理由がない場合。ただし、まとまりのあるオブジェクトとして機能するコードを定期的に作成していることに気付くかもしれませんが、そのようなオブジェクトとしては舞台裏でコード化されていません。したがって、最善の解決策は、Javascriptオブジェクトを表現および文書化するJSDocスケルトンファイルを作成することです。
GWTを使用している場合、ドキュメントは簡単です。
Stripes フレームワークを確認してください。ストラットに慣れている場合は、ストライプが理にかなっていますが、はるかに優れています. Web サイトにStripes と Strutsのセクションがあります。それをチェックして、興味があるかどうかを確認できます。必要な任意の ajax フレームワークを使用できます。ストラットからストライプへの移行にそれほど時間はかからないと思います。