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