Silverlight 4アプリケーションを作成しましたが、問題が発生しました。
すべてのサブシステムがすべてのユーザーに必要なわけではないため、ダウンロードを減らしてパフォーマンスを向上させるために、アプリケーションを複数のxap(異なるサブシステム)に分割しました。
ただし、xapごとにWebContextを再度認証して設定するのではなく、xap間でWebContextを共有したいと思います。
これは可能ですか?もしそうなら、どうすればそれを達成できますか?
Silverlight 4アプリケーションを作成しましたが、問題が発生しました。
すべてのサブシステムがすべてのユーザーに必要なわけではないため、ダウンロードを減らしてパフォーマンスを向上させるために、アプリケーションを複数のxap(異なるサブシステム)に分割しました。
ただし、xapごとにWebContextを再度認証して設定するのではなく、xap間でWebContextを共有したいと思います。
これは可能ですか?もしそうなら、どうすればそれを達成できますか?
ライブラリをすべてのアプリケーションと共有する必要があります。そこで、Project1.xap、Project2.xap、Project3.xap という 3 つの XAP プロジェクトがあるとします。これらすべてのプロジェクトは、共有ロジックを持つ別の Silverlight クラス ライブラリを参照する必要があります。この共有プロジェクトでは、ルート アプリケーションによって実装されるインターフェイスを作成できます。これを IApplicationContext と呼びましょう。
ルート アプリケーションは、他のすべての XAP をロードする XAP ファイルです。これを Root.xap と呼びましょう。これは認証を管理し、作成時に他の XAP に渡す IApplicationContext の実装を作成します。
// This is available for all projects (shared.dll)
public interface IApplicationContext
{
string Username { get; }
Guid SessionId { get; }
// ...
}
// This is implemented in the root application (Root.xap)
public class MyAppContext : IApplicationContext
{
public string Username { get; private set; }
public Guid SessionId { get; private set; }
// ...
}
アプリケーション間で何でも共有でき、いつでも IApplicationContext をスタブ/モックできるため、個別のプロジェクトをテスト可能に保つことができます。