Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die generische ChannelFactory-Klasse wird in komplexen Szenarien verwendet, in denen eine Kanalfactory erstellt werden muss, die zum Erstellen mehrerer Kanäle eingesetzt werden kann.
So erstellen und verwenden Sie die ChannelFactory-Klasse
Erstellen Sie einen Windows Communication Foundation (WCF)-Dienst, und führen Sie ihn aus. Weitere Informationen finden Sie unter Entwerfen und Implementieren von Diensten, Konfigurieren von Diensten und Hosting-Dienste.
Verwenden Sie das ServiceModel Metadata Utility-Tool (Svcutil.exe), um den Vertrag (Schnittstelle) für den Client zu generieren.
Verwenden Sie im Clientcode die ChannelFactory-Klasse, um mehrere Endpunktlistener zu erstellen.
Beispiel
Imports System
Imports System.ServiceModel
' This code generated by svcutil.exe.
<ServiceContract()> _
Interface IMath
<OperationContract()> _
Function Add(ByVal A As Double, ByVal B As Double) As Double
End Interface
public class Math
Implements IMath
Function Add(ByVal A As Double, ByVal B As Double) As Double Implements IMath.Add
Return A + B
End Function
End Class
Public Class Test
Public Shared Sub Main()
End Sub
Public Sub Run()
' This code is written by an application developer.
' Create a channel factory.
Dim myBinding As New BasicHttpBinding
Dim myEndpoint As New EndpointAddress("https://localhost/MathService/Ep1")
Dim myChannelFactory As ChannelFactory(Of IMath) = _
New ChannelFactory(Of IMath) (myBinding, myEndpoint)
'Create a channel.
Dim wcfClient1 As IMath = myChannelFactory.CreateChannel()
Dim s As Integer = wcfClient1.Add(3, 39)
Console.WriteLine(s.ToString())
Dim clientChannel As IClientChannel = CType(wcfClient1, IClientChannel)
clientChannel.Close()
' Create another channel
Dim wcfClient2 As IMath = myChannelFactory.CreateChannel()
s = wcfClient2.Add(15, 27)
Console.WriteLine(s.ToString())
clientChannel = CType(wcfClient2, IClientChannel)
clientChannel.Close()
myChannelFactory.Close()
End Sub
End Class
using System;
using System.ServiceModel;
// This code generated by svcutil.exe.
[ServiceContract()]
interface IMath
{
[OperationContract()]
double Add(double A, double B);
}
public class Math : IMath
{
public double Add(double A, double B)
{
return A + B;
}
}
public sealed class Test
{
static void Main()
{
// Code not shown.
}
public void Run()
{
// This code is written by an application developer.
// Create a channel factory.
BasicHttpBinding myBinding = new BasicHttpBinding();
EndpointAddress myEndpoint = new EndpointAddress("https://localhost/MathService/Ep1");
ChannelFactory<IMath> myChannelFactory = new ChannelFactory<IMath>(myBinding, myEndpoint);
// Create a channel.
IMath wcfClient1 = myChannelFactory.CreateChannel();
double s = wcfClient1.Add(3, 39);
Console.WriteLine(s.ToString());
((IClientChannel)wcfClient1).Close();
// Create another channel.
IMath wcfClient2 = myChannelFactory.CreateChannel();
s = wcfClient2.Add(15, 27);
Console.WriteLine(s.ToString());
((IClientChannel)wcfClient2).Close();
myChannelFactory.Close();
}
}