Share via


Eventi con accoppiamento ridotto

Il modello degli eventi con accoppiamento ridotto fornito da COM+ supporta gli eventi ad associazione tardiva o le chiamate di metodo tra editore e sottoscrittore e il sistema di eventi. Invece di eseguire ripetutamente il polling del server, il sistema di eventi invia una notifica alle parti interessate non appena le informazioni diventano disponibili.

Per utilizzare il servizio, è necessario che la classe e il sink di eventi siano derivati direttamente o indirettamente dalla classe System.EnterpriseServices.ServicedComponent.

Nota   Per creare sottoscrizioni persistenti o temporanee tra il sink e la classe di eventi, utilizzare gli oggetti di amministrazione COM+ con script o codice gestito. È anche possibile creare sottoscrizioni temporanee utilizzando lo strumento di amministrazione Servizi componenti, disponibile nel Pannello di controllo di Windows.

Nell'esempio che segue vengono creati l'interfaccia eventi ILceMsg, una classe di eventi, un sink di eventi e un editore. Sia la classe di eventi che il sink di eventi derivano dall'interfaccia ILceMsg.

Evento

Imports System
Imports System.IO
Imports System.Reflection
Imports System.EnterpriseServices
Imports System.Runtime.InteropServices

<assembly: ApplicationName("EventDemo")>
<assembly: ApplicationActivation(ActivationOption.Library)>
<assembly: AssemblyKeyFile("EventDemoSvr.snk")>

Namespace EventDemo
   Public Interface ILceMsg
      Sub EventMethod(message As String)
   End Interface    
      <EventClass()> _
      Public Class LceClass 
Inherits ServicedComponent Implements ILceMsg 
      Public Sub EventMethod(message As String) implements _
            ILceMsg.EventMethod
      End Sub 
   End Class 
    
   Public Class LceSink 
   Inherits ServicedComponent Implements ILceMsg 
      Public Sub EventMethod(message As String) implements _
            ILceMsg.EventMethod
         MessageBox.Show(message, "Event sink")
      End Sub
   End Class 
End Namespace 
[C#]
using System;
using System.IO;
using System.Reflection;
using System.EnterpriseServices;
using System.Runtime.InteropServices;

[assembly: ApplicationName("EventDemo")]
[assembly: ApplicationActivation(ActivationOption.Library)]
[assembly: AssemblyKeyFile("EventDemoSvr.snk")]

namespace EventDemo
{
    public interface ILceMsg
    {
        void EventMethod(string message);
    }

    [EventClass]
    public class LceClass : ServicedComponent, ILceMsg
    {
        public void EventMethod(string message){}
    }

    public class LceSink : ServicedComponent, ILceMsg
    {   
        public void EventMethod(string message)
        {
            MessageBox.Show(message, "Event sink");
        }
    }
}

Editore

Protected Sub Fire_Click(sender As Object, e As System.EventArgs)_
Handles fireEvent.Click
      Dim evt As ILceMsg = CType(New LceClass(), ILceMsg)
      evt.EventMethod("Hello events")
End Sub 
[C#]
protected void Fire_Click (object sender, System.EventArgs e)
{
      ILceMsg evt = (ILceMsg) new LceClass();
      evt.EventMethod("Hello events");
}

Vedere anche

Riepilogo dei servizi COM+ disponibili |Spazio dei nomi System.EnterpriseServices