Frage

Ich bin derzeit einen WCF-Dienst, die einen COM-DLL für seinen Dienst verwendet. Das COM-Objekt wird nur einmal geladen und über einen Singleton gespeichert. Das Problem ist der erste Lauf etwa 1 Minute dauert das COM-Objekt zu laden. Der WCF-Dienst wird über einen Windows-Dienst gehostet. Ich frage mich, wie kann ich das COM-Objekt Singleton über die Inbetriebnahme des Windows-Dienst laden.

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

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

    objectConn.getInstance()
}

Wenn ich versuche, die Last des Singleton in der OnStart des Windows Service Startup hinzufügen, es nicht immer. Ich möchte fragen, ob das i die richtige Art und Weise Startroutine für die objectConn Instanz hinzuzufügen. Ich habe versucht, den Singleton Laden in der MyService construtor zu platzieren, aber es wird nur mit dem ersten Aufruf des Web-Service-Betrieb / Methode, die ich berufen, das macht den erste Service-Aufruf umständlich genannt.

Ich las über Dependency Injection, aber ich denke, das addierte Verhalten nicht anwendbar ist, da ich nur ein einziges Mal der COM-Objekt Quelle laden möge.

War es hilfreich?

Lösung

Sie können dies wahrscheinlich tun - aber ich würde empfehlen, bevor das tun

host.Open()

Anruf. Dieser Aufruf dreht sich die gesamte WCF-Laufzeit und alles, und ich würde es vorziehen, alle Initialisierung Aufgaben vor, das zu tun, wenn überhaupt möglich.

Marc

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top