2016-04-22 5 views
0

Ich versuche, einen WCF-Webdienst zu erstellen, der eine Legacy-exe-Datei verwendet. Im Folgenden ist die Architektur, die ich verwende.Ergebnis, das in einem Webdienst gestaut wird

enter image description here

Jetzt bekomme ich ein großes Problem. Diese EXE kann nur auf jeweils eine Anfrage antworten. Also muss ich es synchron vom Webservice ausführen.

Leider kann die Anwendung, die diesen Webdienst verwendet, nur asynchrone Anforderungen senden. und ich habe keine Erlaubnis, es zu ändern.

Aufgrund dieses Problems wird die Protokolldatei blockiert und die Ergebnisse sind nicht eindeutig.

kann ich das von Web-Service-Seite lösen? irgendeine Idee ?

+0

Was meinen Sie zu einem Zeitpunkt von einem? Pro Maschine? Pro Benutzer? Name der ausführbaren Datei? – dotctor

+0

Sie können einen Arbeiter erstellen, der Anfragen sammelt und einzeln verarbeiten. Daher ruft WebService workers stattdessen cmd auf. Oder Sie können Funktionalität von cmd zu Ihrem Worker oder WebService verschieben – BWA

+0

Wie BWA sagte, scheint dies eine Art von Nachrichtenwarteschlangensystem zu fordern. – Nyerguds

Antwort

3

WCF-Dienste können mit einem ConcurrencyMode konfiguriert werden, den Sie auf Single setzen können und der nur einen einzelnen Thread zulässt.

die Dokumente:

Jede Instanz Kontext maximal eine Gewinde Verarbeitung von Nachrichten in der Instanz Kontext zu einem Zeitpunkt, haben, ist erlaubt. Andere Threads , die denselben Instanzkontext verwenden möchten, müssen blockieren, bis der ursprüngliche Thread den Instanzkontext beendet.

https://msdn.microsoft.com/en-us/library/ms731193(v=vs.110).aspx

Verwandte Themen