2012-04-08 10 views
7

Ich arbeite an einem Projekt, das Inter-AppDomain-Intra-Process- und Inter-Process-Intra-Machine-Kommunikation erfordert. Ja ... Ich weiß ... NET Remoting wird weithin als Legacy-Technologie betrachtet, aber ich stehe vor zwei sehr speziellen Problemen und vielleicht ist WCF in diesen Szenarien kein vollständiger Ersatz für NET Remoting.NET Remoting und MarshalByRefObject ist wirklich tot?

1) Inter-AppDomain-Intra-Prozess-Kommunikation

Die Anwendung, die ich beim Start arbeiten und müssen sich auf mehr addins ein suchen und Last. Ich möchte jedes AddIn in einer separaten AppDomain laden. Ich brauche einen Weg, um jede Addin-Instanz in seiner AppDomain zu erstellen und einige Schnittstellenmethoden dieser Instanz zu einem bestimmten Zeitpunkt aufzurufen. Hier ist NET Remoting die einzige Möglichkeit, oder? Darüber hinaus, wenn wir das System.Addins Paradigma anwenden möchten, scheinbar basierend nur NET Remoting- und nicht als veraltet markiert ...

2) Inter-Prozess-intra-Maschine-Kommunikation

Hier kann ich sicher aussetzen aus Meine Anwendung ein WCF-Dienst und rufen Sie diesen Dienst von meinem Client mit Named Pipes.

Was ich wirklich tun möchte, ist ein Objektmodell aus meiner Anwendung verfügbar machen, so dass meine Anwendung von einigen NET-Client automatisiert werden kann, ähnlich wie das OLE/COM-Automatisierungsobjektmodell von Excel ausgesetzt. Jeder COM-Client kann einen Objektverweis auf Excel.Application abrufen und offene Dokumente abfragen, einige neue Dokumente öffnen und so weiter.

Ich denke WCF ist gut, auf eine plattformunabhängige Weise zu kommunizieren. Aber in diesem Fall muss ich nur von Net-Client zu Net-Anwendung auf demselben Computer kommunizieren. Die WCF-Service-Philosophie erlaubt meines Erachtens nicht, ein reiches Objektmodell mit Objekten, Sammlung, Feld, statischem Member, Methodenüberladung zu offenbaren ... Oder liege ich falsch?

Bitte entschuldigen Sie mein schlechtes Englisch und meine vielleicht neue Frage.

Antwort

1

Sie können Antworten auf eine ähnliche Frage hier lesen: Is .NET Remoting really deprecated?

Ich kann hinzufügen, dass ich .NET Remoting vor kurzem für relativ einfache verwendet bidirektionale Kommunikation zwischen Prozessen, und alles ging fast nahtlos, so kann ich sagen, Nach all den Jahren, in denen Microsoft von Microsoft nicht aktiv unterstützt wird, ist es immer noch sehr nützlich.

Wie für COM, wenn Sie starke Anforderungen für Ihr Produkt für COM-Clients haben, würde ich vorschlagen, COM-Schnittstellen explizit über COM-Interop zu implementieren. Außerdem gibt es einen interessanten Artikel über die Verwendung von COM und .NET Remoting zusammen, die von Interesse sein könnten: http://msdn.microsoft.com/en-us/magazine/cc164085.aspx