Domanda

Sono attualmente hanno un servizio WCF che utilizza una DLL COM per il suo servizio. L'oggetto COM viene caricato solo una volta e salvato tramite un Singleton. Il problema è la prima esecuzione richiede circa 1 minuto per caricare l'oggetto COM. Il servizio WCF è ospitato tramite un servizio di Windows. Mi chiedo come posso caricare il singoletto di oggetti COM tramite l'avvio del servizio di Windows.

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

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

    objectConn.getInstance()
}

Quando provo ad aggiungere il carico del Singleton nel OnStart della startup Windows Service, non riesce sempre. Vorrei chiedere se questo ho il modo corretto di aggiungere routine di avvio per l'istanza objectConn. Ho cercato di collocare il carico singleton construtor MyService ma viene chiamato solo con la prima chiamata al servizio web operazione / metodo che invoco che rende la prima chiamata di servizio scomodo.

ho letto su DependencyInjection ma penso che il comportamento aggiunto non è applicabile in quanto voglio solo caricare la fonte oggetto COM volta.

È stato utile?

Soluzione

Probabilmente si può fare questo - ma mi sento di raccomandare a farlo prima che il

host.Open()

chiamata. Questa chiamata gira l'intero runtime WCF e tutto, e preferirei fare tutte le attività di inizializzazione prima, se mai possibile.

Marc

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top