2011-01-07 5 views
2

So, es ist ein Traum von vielen Jahren jetzt, aber Hoffnung entspringt ewig. Gibt es ein Framework/Service (WCF/WAS/MVC/ETC), mit dem Sie Services mit minimalen Auswirkungen auf laufende Anforderungen oder "gleichgeordnete" Services hinzufügen/aktualisieren können?Welche .NET 4.0-Technologie bietet modulares Fix-in-Flight (Hotswap) REST-Service-Hosting?

Der Traum sieht ungefähr so ​​aus:

  • IIS7

    • Steckbare REST-Diensthost

      • Gemeinsame Ressourcen (Repositories, qa)

      • Service A - in Ordner in der Produktion Dropped stellt neue REST-Methoden

      • Service B - Updated "im Flug" einen Fehler zu beheben, minimale Unterbrechung der Anfragen

Ich denke, die Antwort könnte WAS oder möglicherweise AppFabric beinhalten (der Traum ist nicht vorsichtig), aber da ich es nie geschafft habe, einen einfachen Weg zu finden, es zum Laufen zu bringen, begrüße ich Ihre Eingabe, wie ich das am besten erreiche nk unsere PHP-Kameraden "nur".

+0

Ich denke, das ist eine gute Frage. HotSwap und vollständiger, JRebel tun dies in der Java-Umgebung. Java wird auch kompiliert.Ich bin interessiert zu wissen, ob es Fortschritte in diesem Bereich für .NET gibt? – Nathan

Antwort

1

MEF + selbst gehostete WCF mit WebHttpBinding. Oder MEF mit HttpListener. Der neue WCF-Http-Stack bei http://wcf.codeplex.com wird das in Zukunft viel einfacher machen

+0

Danke! Ich schätze die anderen Antworten, aber es ist immer besser, eine Antwort auf die Frage zu bekommen, sehr geschätzt. –

+0

Ich glaube nicht, dass dies die Antwort auf die Frage ist. Die Frage war über IIS, WCF, REST. Beim Self-Hosting verlieren Sie alle IIS-Funktionen und die Infrastruktur. Was noch schlimmer ist, Sie verlieren AspNetCompatibility, was beim Entwickeln von REST-Services in WCF 4 wirklich hilfreich ist (zum Beispiel Zwischenspeichern). –

+0

@Ladislav Eigentlich ging es nicht um IIS. IIS wurde nur als eine mögliche Lösung vorgeschlagen. IIS bringt so viele Probleme wie Lösungen. Das jeweilige Szenario definiert, ob sich IIS tatsächlich lohnt. –

-1

Dies ist nicht wirklich eine REST-Frage - es ist eine HTTP-Server-Frage.

In der Vergangenheit habe ich eine neue Version einer Anwendung an einem neuen Ort auf dem Server bereitgestellt, möglicherweise mit einer URL, die nur intern sichtbar ist. Ich habe dann einfach die IIS-Eigenschaften so geändert, dass sie auf die neue URL verweisen.

+0

Das ist cool, aber da mein Ziel das Erstellen/Aktualisieren von REST-Diensten ist, hoffe ich auf ein Framework, das auf diese Weise funktioniert. Wenn also WAS/WCF oder etwas, das es Ihnen ermöglicht, einen REST-Service aus vielen einzelnen und aktualisierbaren Elementen zusammensetzt, wäre das eine gute Lösung. –

+0

Hallo, warum ist es wichtig, ob dein Dienst REST ist oder nicht? Unabhängig von Ihrem Code, Service oder Website, stellen Sie ihn in einem separaten Verzeichnis auf dem Server bereit und verweisen Sie IIS dann auf den neuen Speicherort. Die vorhandenen Anforderungen werden nicht berührt, aber alle neuen Anforderungen werden jetzt an den neuen Speicherort verschoben. –

+0

Wenn ich einen http-Dienst aufbauen möchte, würde ich sicherlich eine allgemeinere Antwort wünschen, aber da mein Ziel speziell ein REST-Dienst ist, wäre die Anleitung von jemandem, der dieses spezifische Wissen hatte, hilfreicher. –

-1

Das ist eine seltsame Frage. Zuerst sind wir in der .NET-Welt, wo Assemblys kompiliert werden - das hat große Auswirkungen auf andere Dinge.

Also im Grunde ja können Sie tun, was Sie wollen, wenn Sie anfangen zu programmieren wie PHP-Programmierer. Öffnen Sie Ihre .svc-Datei und schreiben Sie Ihren gesamten Dienst direkt in diese Datei. Dies wird auch als Inline-Codierung bezeichnet. Sie können Typen aus Assemblys verwenden, die im GAC- und Bin-Ordner Ihrer Site bereitgestellt werden. Durch einfaches Kopieren der .svc-Datei in Ihr Webanwendungsverzeichnis wird Ihr Dienst verfügbar. Änderung wird auch einfach sein. Sie müssen .NET 4.0 verwenden und Sie müssen keine Konfigurationsänderungen vornehmen, wenn Sie einen neuen Dienst bereitstellen.

Edit:

auf Kommentare Basierend Ich füge einige weitere Erklärung.

IIS und alles, was von IIS abhängig ist (WAS, AppFabric), recycelt die Domäne immer, wenn eine neue Assembly hinzugefügt wird. Ich denke, der Grund liegt direkt in .NET Core - AppDomain. Das dynamische Laden und Entladen von Baugruppen erfordert eine neue Domäne.

+0

Ich schätze die Informationen, ich möchte Kompilierung, nur von einzelnen Assemblys, die dann in einen Ordner abgelegt werden können und beginnen, Anfragen sofort zu bedienen, ohne die Domäne für andere Assemblies in demselben Ordner zu recyceln. –

+0

Ich denke, "COM +" war früher ein überholter Versuch, Dienste als Komponenten zu verwenden, die einzeln aktualisiert werden können, ohne bestehende Anforderungen zu unterbrechen. –

Verwandte Themen