HOW TO: Creare un componente .NET servito che utilizza transazioni in Visual C# .NET

Traduzione articoli Traduzione articoli
Identificativo articolo: 306296 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo è stato precedentemente pubblicato con il codice di riferimento I306296
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

Enterprise Services fornisce un ponte .NET ai servizi Microsoft COM+ 1.0. In questo articolo viene illustrata la procedura per creare un componente .NET servito che utilizza transazioni e un client che verifica tale componente.

Note importanti

  • I componenti serviti richiedono nomi sicuri.
  • Essendo risorse a livello di sistema, tali componenti devono essere registrati nella cache dell'assembly globale. Le applicazioni server devono essere installate nella cache dell'assembly globale, mentre per le applicazioni libreria tale requisito non è obbligatorio, sebbene sia comunque consigliato.
  • È possibile registrare componenti serviti con COM+ automaticamente tramite la registrazione lenta oppure manualmente tramite l'utilità Regsvcs.exe. Regsvcs.exe si trova nella seguente cartella:
    \WINNT\Microsoft.NET\Framework\<versione Framework>
    Per ulteriori informazioni su Regsvcs.exe, vedere la documentazione del Software Development Kit (SDK) relativa a .NET Framework (informazioni in lingua inglese).
  • Nel codice di esempio riportato in questo articolo si presume che il server SQL Microsoft sia stato installato nel computer locale.
  • Il presente esempio è fornito unicamente a scopo esplicativo. La query di selezione riportata in questo esempio è un ottimo candidato per essere eseguita al di fuori di una transazione COM+ dato che COM+ utilizza il livello di isolamento più elevato per la transazione. Per migliorare la frequenza di accesso del database è un'ottima pratica di programmazione considerare query di lettura per livelli di transazione inferiori.

Creazione del componente .NET servito

  1. Creare un nuovo progetto Libreria di classi Visual C# denominandolo ServicedCOM.
  2. Rinominare il file delle classi predefinito Class1.cs in SimpleTrans.cs.
  3. Aggiungere un riferimento allo spazio dei nomi System.EnterpriseServices.
  4. Aggiungere l'istruzione riportata di seguito sia a SimpleTrans.cs, appena prima della dichiarazione della classe, sia ad AssemblyInfo.cs:
    using System.EnterpriseServices;
  5. Ereditare la classe da ServicedCOM.
  6. Aggiungere il codice riportato di seguito appena prima della dichiarazione della classe pubblica:
    [Transaction(TransactionOption.RequiresNew)]
  7. Aggiungere gli attributi consigliati riportati di seguito ad AssemblyInfo.cs:
    [assembly: ApplicationActivation(ActivationOption.Library)]
    [assembly: ApplicationName("SimpleTrans")]	
    • L'attributo ActivationOption indica se il componente verrà attivato all'interno del processo del chiamante. È possibile impostare Activation.Option su Library o su Server.
    • L'attributo ApplicationName è il nome che viene visualizzato per l'applicazione COM+ nel catalogo COM+ e nella console di amministrazione Servizi componenti.
  8. Aggiungere il seguente attributo facoltativo a SimpleTrans.cs:
    [assembly: Description("Simple Transactional application to show Enterprise Services")]
    Questo attributo fornisce una descrizione per l'applicazione COM+ nel catalogo COM+ e nella console di amministrazione Servizi componenti.
  9. Aggiungere il metodo riportato di seguito a SimpleTrans.cs:
    // Demos Explicit SetComplete/SetAbort
            public string DoTrans()
            {
                SqlConnection	connection;
                SqlCommand		command; 
                SqlDataReader	reader;
                string		name;
                string		query;
    		
                try
                {
                    query = "SELECT au_lname, au_fname FROM authors";
                    connection = new SqlConnection("data source = localhost;
                                                    initial catalog = pubs;
                                                    UID=sa;PWD=");
                    command = new SqlCommand(query, connection);
    
                    connection.Open();
                    reader = command.ExecuteReader();
    				
                    reader.Read();
                    name = reader.GetString(0) + ", " + reader.GetString(1);
                }
                catch(Exception exc)
                {
                    ContextUtil.SetAbort();
                    throw exc;
                }
                return name;
        }
    // Demo implicit SetComplete/SetAbort
    [AutoComplete]
    public void DoTxAuto()
    {
        // Do stuff
    }
  10. Modificare la stringa SqlConnection in base al proprio ambiente.

Assegnazione di un nome sicuro all'assembly

  1. Fare clic sul pulsante Start, scegliere Programmi, Microsoft Visual Studio .NET, quindi Strumenti di Visual Studio .NET per aprire un prompt dei comandi di Visual Studio .NET.
  2. Al prompt dei comandi digitare sn.exe -k ServicedCOM.snk per assegnare all'assembly un nome sicuro.

    Per informazioni sulla firma degli assembly tramite nomi sicuri, vedere la documentazione del Software Development Kit (SDK) relativa a .NET Framework (informazioni in lingua inglese).
  3. Copiare ServicedCOM.snk nella cartella del progetto.
  4. In AssemblyInfo.cs sostituire il codice AssemblykeyFile con il codice che segue:
    [assembly: AssemblyKeyFile("..\\..\\ServicedCOM.snk")]

Aggiunta del componente servito a COM+

È possibile consentire al componente di registrarsi dinamicamente quando viene creata la prima istanza. In alternativa è possibile registrare manualmente il componente utilizzando Regsvcs.exe, come illustrato di seguito:
  1. Fare clic sul pulsante Start, scegliere Programmi, Microsoft Visual Studio .NET, quindi Strumenti di Visual Studio .NET per aprire il prompt dei comandi di .NET.
  2. Al prompt dei comandi di . NET digitare regsvcs servicedcom.dll. Verrà creata un'applicazione libreria COM+ con lo stesso nome della classe.

Verifica del componente

  1. In Blocco note aprire un file di testo.
  2. Copiare il codice riportato di seguito nel file:
    set o =createobject("ServicedCOM.SimpleTrans")
    
    MsgBox o.DoTrans()
  3. Scegliere Salva dal menu File.
  4. Nella finestra di dialogo Salva con nome nella casella Nome file digitare Test.vbs. Dall'elenco Salva come fare clic su Tutti i file, quindi scegliere Salva.
  5. Fare doppio clic sul file per eseguire il codice di esempio.

Proprietà

Identificativo articolo: 306296 - Ultima modifica: giovedì 25 aprile 2002 - Revisione: 1.0
Le informazioni in questo articolo si applicano a
  • Microsoft Visual C# .NET 2002 Standard Edition
Chiavi: 
kbhowto kbhowtomaster KB306296
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com