2010-02-27 10 views

risposta

25

Vedere here per informazioni sull'hosting CLR che era rilevante per CLR v2 (.NET 2.0, 3.0 e 3.5). Per informazioni sulla nuova API CLR Hosting in .NET 4.0, see here.

Fondamentalmente, il CLR funge da libreria che può essere caricata e "ospitata" da un processo. Puoi sviluppare un'app che carichi e ospiti il ​​CLR, se lo desideri; ciò consentirebbe alla tua app di contenere un'intera macchina virtuale CLR, caricare gli assembly ed eseguire tutto il codice gestito .NET al suo interno.

SQL Server 2008, ad esempio, può farlo. È possibile scrivere codice .NET archiviato in un database SQL Server ed eseguirlo dal motore del database di SQL Server. SQL Server ospita il CLR per ottenere ciò.

Un host CLR diverso dalla shell di Windows (la normale interfaccia utente) può fornire un contesto specifico per l'esecuzione del codice. Questo può essere utile per applicazioni specializzate o scenari molto particolari. MSDN (link sopra) ha alcune linee guida su questi argomenti.

+1

+1 Grazie per la risposta. Inoltre: quando un eseguibile .NET viene fatto doppio clic e avviato, chi ospita il CLR? È ospitato da Windows Explorer? – Sabuncu

+0

@Sabuncu: Sì. Questa è la shell di Windows che stavo citando nella mia risposta. – CesarGon

+0

Grazie. Ho visto il tuo riferimento "shell di Windows", ma non ero sicuro. In questo caso, penso che stai usando "shell" in senso generico, non un programma di shell come il cmd.exe DOS o la console di PowerShell. – Sabuncu

11

CLR Hosting ospita il Common Language Runtime .NET in un processo a scelta.

Il caso d'uso sarebbe situazioni in cui gli ambienti esistenti non soddisfano le vostre esigenze. Alcuni degli ambienti esistenti sono ASP.NET, WinForms, Windows Workflow Foundation, ecc. Se questi non sono adatti alle tue esigenze, puoi ospitarlo tu stesso.

2

CLR Hosting è Hosting utilizza l'applicazione .NEt. Quando si avvia .NET Runtime all'interno di un processo nativo, quell'applicazione nativa diventa un host per il runtime. Questo ti consente di aggiungere funzionalità .NET alle tue applicazioni native.

Se il runtime è in esecuzione, ma non ha ancora caricato alcun codice utente. Alcuni programmatori di thread interni e garbage collector sono sicuramente in esecuzione, perché fanno parte del runtime CLR È molto complicato rispetto ad altri servizi di hosting.