WCF Ria DomainService — инициализация веб-службы при запуске

В настоящее время мой DomainService выполняет инициализацию ресурса каждый раз, когда к нему подключается клиент. Каждый клиент должен получить доступ к одному и тому же экземпляру этого ресурса. Я хотел бы инициализировать этот ресурс при запуске веб-службы. Есть ли шанс сделать это с WCF Ria Services?

EDIT: Хорошо, не упоминайте об этом. Я хотел использовать это для глобального объекта DbContext. В любом случае это не очень хорошая идея, потому что HttpApplication будет управлять несколькими потоками, которые будут одновременно обращаться к DbContext. Я изменю свою реализацию на подход «на поток», соответственно «на HttpContext». Спасибо в любом случае.


person 0xbadf00d    schedule 14.05.2011    source источник


Ответы (1)


Вы можете определить класс, содержащий статическое свойство для этого ресурса. Затем в DomainService вы можете получить доступ к этому свойству. Затем он будет инициализирован только при первом доступе.

Пример:

public class ResManager {
    public static MyObject {...}
}

В доменном сервисе:

public IQueryable<SomeClass> GetSomeObjects()
{
    // you can access it here and it will not be initialized 
    // every time the DomainService is called
    MyObject obj = ResManager.MyObject;
    return new List<SomeClass>().AsQueryable();
}

Если вы хотите инициализировать его при запуске службы, вы сможете сделать это в классе Global.

person Florian Lim    schedule 14.05.2011
comment
Я пробовал это со статическим объектом DbContext. Теперь я получаю сообщение об ошибке загрузки: DbContext был удален. Я проверил вызовы конструктора и деструктора DbContext. Последний не вызывается до закрытия приложения. Что тут происходит? - person 0xbadf00d; 15.05.2011