#silverlight-4.0 #webcontext
#silverlight-4.0 #вебконтекст
Вопрос:
Я создал приложение Silverlight 4 и столкнулся с проблемой.
Я разделил свое приложение на несколько xaps (разные подсистемы), чтобы уменьшить загрузку / повысить производительность, поскольку не все подсистемы нужны каждому пользователю.
Однако я хочу разделить WebContext между xap, вместо повторной аутентификации и настройки WebContext для каждого xap.
Возможно ли это? Если да, то как я могу этого добиться?
Ответ №1:
Вам необходимо предоставить общий доступ к библиотеке для всех ваших приложений. Итак, давайте предположим, что у вас есть 3 проекта XAP, называемых Project1.xap, Project2.xap и Project3.xap. Все эти проекты должны ссылаться на другую библиотеку классов silverlight, которая имеет общую логику. В этом совместном проекте вы можете создать интерфейс, реализованный корневым приложением. Давайте назовем это IApplicationContext.
Корневым приложением является файл XAP, который загружает все остальные XAP. Давайте назовем это Root.xap. Этот модуль будет управлять аутентификацией и создаст реализацию IApplicationContext, которую он передаст другим XAPS при создании.
// 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.