2016-07-20 9 views
2

Wir haben einen WCF-Service namens service1 in IIS gehostet.WCF Service Hosting-Technik

Wir erstellen einen weiteren WCF-Dienst, z. B. service2, der immer im Hintergrund ausgeführt wird und überwacht, ob eine Datei, z. B. X, über genügend Daten verfügt, die von Service1 konsumiert werden müssen.

Wenn die Datei X nicht genügend Daten aufweist, wird dann service2 wird eine weitere Komponente aufrufen, die die Daten in die Datei geladen werden.

Also schlagen Sie bitte eine Hosting-Technik für service2 vor, die alle oben genannten Anforderungen erfüllt und unabhängig sein sollte, d. H. Wenn der service2 ausgefallen ist, sollte er keinen Einfluss auf service1 haben und umgekehrt. Beide Dienste sind Teil derselben App-Domäne.

Wir haben ein Szenario, in dem wir das gleiche wie einen Fensterdienst bewirteten. Jetzt versuchen wir etwas anderes zu versuchen.

Bitte geben Sie Ihre wertvollen Vorschläge.

+0

I changed "Bauch" auf "app-Domäne" in meinem bearbeiten. Ich hoffe, das war richtig. –

+0

Warum war ein Windows-Service nicht die richtige Lösung für Sie? –

+0

Hallo Tom..Thanks für die Korrektur :) Windows Service ist eine richtige Lösung für diese, die unsere Anforderung erfüllt, aber wir sind ein neues System zu bauen und dachten etwas anderes im Grunde etwas Neues ausprobieren :) –

Antwort

1

Sie suchen die richtige Art von Schraubenzieher, um einen Nagel zu hämmern. 8-)

WCF-Dienste bei Bedarf ausgeführt, basierend auf Netzwerkaktivität (eine Anfrage kommt, der Dienst läuft und übernimmt die Anfrage). Nach einem definierten Zeitraum ohne Aktivität wird der Dienst heruntergefahren und die Ressourcen werden freigegeben, und der Server wartet auf die nächste Anforderung. Das Vorhandensein einer Datei, die die gewünschten Daten enthält, erstellt diesen Anforderungstyp jedoch nicht.

Was Sie brauchen, ist ein Windows-Dienst (die Dinge, die Sie in der Systemsteuerung für Dienste sehen). Diese werden kontinuierlich ausgeführt und eignen sich für Aufgaben, die keine Netzwerkanforderungen erzeugen, z. B. die Überwachung, um festzustellen, ob Sie über die erforderlichen Daten verfügen.

Wir haben ein Szenario, in dem wir das gleiche wie ein Fensterdienst bewirteten. Jetzt versuchen wir etwas anderes zu versuchen.

Es gibt wirklich nichts, was sonst für den unbeaufsichtigten Betrieb geeignet wäre. Windows-Dienste sind genau für diese Art von Aufgabe konzipiert, WCF-Dienste nicht.

+1

Dank Terry experimentieren für Ihre wertvolle Rückmeldung. :) Aber abgesehen von Fenster Service gibt es noch etwas, was Sie denken können, um dies zu implementieren? –

+0

Sie könnten einen "check my file" -Dienst in WCF schreiben und ihn mit etwas wie wget.exe ausführen. (Windows-Klon eines * nix-Dienstprogramms), das Sie aufgerufen haben, um eine geplante Aufgabe zu erstellen. Es ist ein hässlicher Hack, würde aber funktionieren.Leider gibt es eine begrenzte Anzahl von Möglichkeiten, nach einer Bedingung zu suchen und dann eine Aktion auszuführen, ohne dass ein Benutzer angemeldet ist. –

+0

Wenn Sie einen SQL-Server haben, können Sie in SSIS etwas Ähnliches tun. –

0

Abgesehen von Ihrer Hosting-Anforderung sollten Sie auch ein FileSystemWatcher betrachten verwenden, wenn Sie nicht bereits getan haben. Sie müssten natürlich Ihre eigene Logik hinzufügen, um Ihre Anforderungen zu erfüllen.

Grund Beispiel:

protected override void OnStart(string[] args) 
{ 
    FileSystemWatcher Watcher = new FileSystemWatcher("some file path"); 
    Watcher.EnableRaisingEvents = true; 
    Watcher.Changed += new FileSystemEventHandler(Watcher_Changed); 
} 

// This event is raised when a file is changed 
private void Watcher_Changed(object sender, FileSystemEventArgs e) 
{ 
    // your code here 
} 

vollständigeres Beispiel:

http://www.rhyous.com/2012/11/27/c-creating-a-service-to-monitor-a-directory/