2011-02-05 15 views
0

私の問題のために実装できるアーキテクチャソリューションが必要です。 Unixサーバー上で実行されるApache上で動作するJSP Webサイトがあります。クライアントは、このWebサイトのフロントエンドをSilverlightで設計する必要があると判断しました。我々は次のようである何をしたか概念の私達の証明をした 適切なアーキテクチャを選択するSilverlight WebアプリケーションがJSP Webページにアクセスする

サンプルSilverlightのWebアプリケーション(ただ、ログイン画面とアカウントの概要ページ)に設計されています。 .net Webclientクラスを使用して.jsp URLを呼び出し、レスポンスを読み込んで解析し、C#オブジェクトに変換し、それらのオブジェクト/データをUIにバインドしました。 Silverlightアプリケーションはダウンロードされるだけで(* .xapファイルだけで十分です)、クライアント側ですべての実行が行われるため、apache/unixプラットフォームでSilverlight Webアプリケーションをホストすることも可能です。

私たちのマネージャー(MAINFRAME BACKGROUNDから)がちょうど私たちに既存の* .jspコード/ウェブサイトの再利用を依頼したからです。

ここでは、考慮する必要があるいくつかの問題があります。セッションは.jspコード/ Webサイトで作成され、Silverlightはそのセッションに対する制御やアクセス権を持ちません。また、* .jspレスポンスを解析するために使用するコードは、維持するための優れたコードではありません。

* .jspから返されるレスポンスはJSON形式であり、JSONArrayで解析してコード内で使用したり、さらにエンティティに変換したりすることができます。

近いうちに他の問題に直面するかどうかはわかりません。

だから私の計画ではなく、我々は、.NET自体

2でアプリケーション全体を記述し、なぜカントURLを呼び出すことによって*の.jspコードを再利用する) 1だった)問題をするために、Java開発者に与えることがしてみましょう私たちが必要とするデータを返すようにサービスを公開するJava Webサービスを作成し、Silverlightはこれらのサービスのみを使用できます。

本当にありがとうございました。

答えて

0

Silverlightクライアントから呼び出される.jspページがHTMLまたはJSONを返すかどうかを確認するだけです。 HTML、そして、はい、絶対に、あなたは何らかの種類のWebサービスを介してデータを返すようにそのアプリケーションを書き直す必要があります。 HTMLを解析することは、あなたのアプリケーションのバックボーンにするにはあまりにも脆弱です。しかし、JSONを返す場合、JSONの解析は妥当なアプローチです。その場合、基本的にはJSPページをREST APIの一種として扱うことができます。手動でデシリアライズ・ステップを呼び出すのは少し難しいかもしれませんが、アプリケーション全体のかなり小さい部分であり、心配しませんそれについて多くの。

これは、REST(JSONまたはXML)またはSOAPのいずれであっても、.NETまたはJavaのいずれの場合でも、真のWebサービスを作成することは確かにより洗練されたアーキテクチャです。 .NET/WCFは、どちらもSOAPをベースにしていても、JavaベースのWebサービスよりもはるかに小さくても重要な方法でSilverlightをはるかに上手く機能することがわかります。実際の問題は、「本物の」Webサービス(.NETかJavaかに関わらず)を作成するために必要な作業と、あまり面白くないSilverlightデシリアライズコードを維持するために必要な作業とのバランスをとることです。そして、それはここに誰もが多くの情報なしで知的に答えることを望むことができる質問ではありません。

"セッションはJSPコードで作成されており、Silverlightはそのセッションへの制御やアクセス権を持っていません"という意味は不明です。これはもちろん、「SilverlightはJSPバックエンドセッションでキャッシュされたものに直接アクセスできません。これは、「Silverlightコールは、Webブラウザからのコールとは別のセッションに属していると解釈される」という意味では必ずしも当てはまりません。デフォルトでは、すべてのSilverlight HTTPアクセスはブラウザのHTTPスタックを経由します。その結果、ユーザがブラウザ/ HTMLを介してログインし、バックエンドWebサーバ上にセッションを作成した場合、デフォルトではSilverlightからの呼び出しは同じセッションの一部として解釈されます。は独自のたとえば、ブラウザスタックよりも多くのクライアント要求を同時に開く機能を持つ代替のHTTPスタック。このスタックは独自のCookieデータベースを保持しているため、Webサーバーを代替Silverlight HTTPスタックから呼び出すと、同じマシン上の別のWebブラウザから来ているかのように扱われますが、Silverlightが起動する前に代替スタックを有効にする必要がありますそれを使って。 (意味がありますか?)詳細はhereを参照してください。

関連する問題