Frage

Ich habe erfolgreich Interop beftween Win32-Anwendung implementiert und verwaltet .NET-DLL wie hier . Aber ich lese auch hier , dass es möglich ist, die Gastgeber gesamter CLR innerhalb des nicht verwalteten Prozesses.

Also meine Frage ist: Warum würden Sie das tun? Es ist etwas komplexer als nur ein Objekt verwenden - welche Vorteile Sie Gewinn für diesen Preis einer erhöhten Komplexität

Edit: Was ich von 2 ersten Antworten verstanden wird, ist, dass Sie die Möglichkeit erhalten, die CLR für Ihre Bedürfnisse anpassen - das heißt, wenn Sie ein einfaches Business-App schreiben, werden Sie nie hosten müssen. Hosting ist für system schwerer Sachen, wie Browser oder SQL Server.

War es hilfreich?

Lösung

die CLR-Hosting ist in der Regel nicht etwas, das man zwischen verwaltetem Code und Win32 tun, um Interop. gibt es im Allgemeinen drei Methoden des Interop:

  • Runtime Callable Wrapper (RCW) - rufen Sie ein COM-Objekt von .NET
  • COM Callable Wrapper (CCW) - macht ein .NET-Objekt als COM-Objekt erscheint
  • P / Invoke

Diese wurden seit der ersten Version von .NET unterstützt. Der ganze Sinn der CLR Hosting ist, damit Sie .NET-Code in einer nicht verwalteten Anwendung zu tief einbetten. Zum Beispiel gibt es ein Modul, das .NET in Apache auf Win32 hosten kann so dass es ASPX-Seiten ausgeführt werden.

In ähnlicher Weise wollte der SQL Server eine Möglichkeit für Menschen mit verwalteten Code erweiterten gespeicherten Prozeduren und Funktionen zu schreiben. In der Vergangenheit konnten Sie diese in C / C ++ schreiben, aber wenn sie die CLR gehostet könnten sie tatsächlich zulassen, dass Menschen diese mit C # schreiben. Die Arbeit bekommen die CLR in einen Zustand waren es sicher richtig eingebettet werden könnte, die Fristen herausgedrückt, und so Dinge wie die Kontrolle über Speicher und Sicherheit geboren wurden. SQL Server hat einige schwerwiegende Stabilitätsanforderungen und Sie können nicht haben .NET das Boot zu schaukeln.

Der Hosting-API deutlich von .NET 1.x auf 2.x geändert hat aber stabiler gewesen, da die 2.0 CLR durch 3.0 .NET gelebt hat, 3.5 etc.

Andere Tipps

Microsoft SQL Server verwendet es extensivly die Sicherheit, Montag Laden, Speicherverwaltung, Thread-Management zu ersetzen und was nicht. Ein gutes Buch zu diesem Thema ist unter "Anpassen des Microsoft .NET Framework Common Language Runtime".

Sie können eine Legacy-Anwendung haben und dritten Parteien die Verwendung der Einrichtungen von .net zulassen möchten aus Ihrer Anwendung vor allem aber in einer kontrollierten Art und Weise wie Controlling wo Baugruppen geladen aus. Hier ist ein Beispiel.

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