Код запуска для загрузки COM-объекта для службы WCF

В настоящее время у меня есть служба WCF, которая использует DLL COM для своей службы. COM-объект загружается только один раз и сохраняется через синглтон. Проблема в том, что первый запуск занимает около 1 минуты для загрузки COM-объекта. Служба WCF размещается через службу Windows. Мне интересно, как я могу загрузить синглтон COM-объекта через запуск службы Windows.

protected override void OnStart(string[] args)
{
    if (host != null)
    {
        host.Close();
    }

    Type serviceType = typeof(MyService);
    host = new ServiceHost(serviceType);
    host.Open();

    objectConn.getInstance()
}

Когда я пытаюсь добавить загрузку Singleton в OnStart запуска службы Windows, это всегда терпит неудачу. Я хотел бы спросить, является ли это правильным способом добавления процедуры запуска для экземпляра objectConn. Я попытался разместить одноэлементную загрузку в конструкторе MyService, но она вызывается только при первом вызове операции/метода веб-службы, которую я вызываю, что делает первый вызов службы неудобным.

Я читал о DependencyInjection, но думаю, что добавленное поведение неприменимо, поскольку я просто хочу один раз загрузить источник COM-объекта.


person Nap    schedule 07.12.2009    source источник


Ответы (1)


Вы, вероятно, можете сделать это, но я бы рекомендовал сделать это до

host.Open()

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

Марк

person marc_s    schedule 07.12.2009