Ho una domanda seguente: È possibile che l'assembly .NET sia registrato sia con Regasm e Regsvcs? GrazieRegistrazione con regasm e regsvcs
risposta
Questa è una risposta scaduta a per la domanda. ma lascia che ti spieghi le differenze di cui sono a conoscenza.
Per comprendere ciò, è necessario evocare le differenze tra un'applicazione COM e un'applicazione COM +.
Registrare i tipi come COM - Crea oggetto su richiesta ogni volta che un codice tenta di inizializzare l'oggetto
Registrare i tipi di applicazione COM + - Crea oggetto, supporta il pool di oggetti, supporta le transazioni, supporta avanzata di Windows sicurezza e altro.
Per comprendere il pool, prendo a prestito una risposta da http://www.tek-tips.com/viewthread.cfm?qid=116249
COM 's principale metodo di aggiunta di scalabilità e prestazioni avviene attraverso il pool di oggetti +. Sfortunatamente, questo richiede un componente a thread libero, che è qualcosa che VB6 non può fare. Ma ... .NET (qualsiasi lingua) e C++ possibile.
Che tipo di pool di oggetti fa è dire a MTS/COM + di creare un pool di oggetti disponibili, da un minimo che viene creato all'avvio di COM +, ad un massimo (che non so se è un limite massimo, o se è flessibile). Ciò che il pool fa per te è fornire un chiamante con un oggetto preinizializzato. Questo è molto più veloce dell'attesa per la creazione di un oggetto (specialmente su una rete). Il chiamante si collega all'oggetto, effettua chiamate al metodo e si disconnette. L'oggetto quindi torna in piscina.
Si richiede un cambiamento fondamentale nell'architettura del programma. Prima di COM +, tutti aprivano una connessione a un database e lo lasciavano aperto per tutta la durata dell'applicazione. Questo era OK quando la popolazione di utenti era < 100, poiché il carico sul server era gestibile (ogni connessione occupa RAM). Ma per grandi popolazioni o quantità sconosciute di utenti (ad esempio utenti di Internet), il server del database viene sovraccaricato rapidamente. Qualcuno si è reso conto che ogni utente transazionale stava effettivamente facendo un vero lavoro una piccola percentuale del tempo - il resto del tempo in cui erano inattivi.
Quindi i programmi devono stabilire una connessione, effettuare una richiesta, ottenere i risultati e quindi disconnettersi (ciò vale anche per gli oggetti non di database). Ciò implica anche che l'applicazione sia senza stato (lo stato del programma non viene mantenuto tra le richieste). Perché ... l'oggetto che stai attualmente utilizzando apparteneva a qualcun altro 200 millisecondi fa. E quando usi l'oggetto, un altro utente lo userà dopo di te. Quindi gli oggetti non possono mantenere alcuna informazione in giro - devono essere solo codice.
regasm - Registra una tipi assembly .NET come COM. Ciò significa che il regasm seleziona i tipi esposti pubblicamente del tuo .Net assembly e quindi scrive voci di registro appropriate su HKCR ....; (che è il modo in cui regsvr32 funziona).
- regasm può generare un file TLB per voi (proprio come Tlbexp.exe)
- regasm può codebase vostro assembly .NET. Ciò significa che se non si dispone dell'assembly .Net in GAC, è possibile creare una base di codice COM nel percorso del file in cui è presente l'assembly .Net. E da qui il COM Marshaller sceglierà eseguire l'assemblea con CLR.
- regasm consente di creare un file .reg facendo doppio clic su cui è possibile aggiornare le voci del registro. è necessario assicurarsi che l'assembly .NET viene installato nella GAC becase/interruttore regfile in regasm non consente a/codebase (se lo fa base di codice, allora è privo di significato)
regsvcs - Crea un COM + Applicazione da un assembly .Net. Ciò significa che regsvcs preleva i tipi esposti pubblicamente del tuo .Net assembly e oltre a scrivere le voci di registro appropriate, crea anche un'applicazione COM + che è possibile gestire tramite la console di Gestione componenti di Servizi (% systemroot% \ system32 \ comexp.msc).
regsvcs crea un COM + applicazione sulla base delle informazioni passate ad esso dalla riga di comando, o sulla base delle informazioni avaialble dalla DLL .Net.
regsvcs consente di unire i tipi COM + a un'applicazione COM + esistente. Date un'occhiata a comexp.msc per attraversare per capire un'applicazione COM + e COmponet che gestisce un COM +.
Se si scrive una classe C# con ComVisible (true) -> I tipi pubblici di questa classe (Foo) è pronto per essere registrato con un regasm per COM.
// Set the COM visibility attribute to true
[ComVisibleAttribute(true)]
public class Foo{....}
se si scrive una classe C# con ComVisible (vero), che eredita da System.EnterpriseServices.ServicedComponent (e più impostazione ovviamente ..) -> Questa classe (FooBar) è pronto per essere registrato come un'applicazione COM +.
// Set the COM visibility attribute to true
[ComVisibleAttribute(true)]
public class FooBar: System.EnterpriseServices.ServicedComponent{.....}
Creazione di un'applicazione COM + da .Net - È possibile iniziare da qui. Ricorda che COM + fornisce una gestione avanzata della transazione per un oggetto esposto COM.
http://support.microsoft.com/kb/306296 http://my.execpc.com/~gopalan/dotnet/complus/complus.net_accountmanager.html http://www.codeproject.com/Articles/3845/Creating-COM-Objects-using-EnterpriseServices-in-N
- 1. Come annullare la registrazione il gruppo registrato utilizzando regasm
- 2. regasm RA0000: Nessun tipo registrato
- 3. Problema registrazione di una dll - Accesso negato
- 4. Registrazione attiva con delegato e condizioni
- 5. Registrazione utente con verifica e-mail
- 6. campi di registrazione mutabili e {x con ...}
- 7. registrazione Java con log4j e log4j.yaml
- 8. interfacce di registrazione e registrazione delle dipendenze
- 9. L'interruttore regafile RegAsm non fornisce lo stesso output dell'interruttore codebase
- 10. Cosa fa veramente RegAsm? Dove vengono copiati i file?
- 11. Registrazione stampa e pexpect
- 12. Registrazione FOSUserBundle e HWIOAuthBundle
- 13. registrazione con Vala
- 14. Registrazione distribuita con canale
- 15. Rimuovi registrazione con Proguard
- 16. registrazione con filtri
- 17. Registrazione vocale con Java
- 18. Registrazione e annullamento della registrazione di BroadcastReceiver in un frammento
- 19. DotNetNuke e registrazione degli errori
- 20. Registrazione Python e debugger Pydev?
- 21. Salvataggio del profilo con la registrazione nella registrazione di Django
- 22. Registrazione Java con classi astratte
- 23. Registrazione dati binari con arricciatura
- 24. Registrazione tramite Android con Ant
- 25. Registrazione Spring-Boot con log4j2?
- 26. Html5 registrazione video e upload?
- 27. Registrazione, StreamHandler e flussi standard
- 28. Registrazione errori client con Elmah
- 29. NoClassDefFoundError con registrazione strumenti clojure
- 30. primavera dati registrazione con specifiche
Questa è la migliore descrizione della differenza tra '' regasm' e regsvcs'. Grazie per quello! :) –