2016-04-12 14 views
0

In meiner Arbeitsumgebung stieß ich auf eine Anforderung zum Erstellen von Framework für Client-Proxy mithilfe von Factory-Mustern, so dass tatsächliche Clients Service-Referenz zu Service hinzufügen sie dieses Framework verwenden. Da ich nicht viel Wissen habe, kann jemand eine Idee oder nützliche Links für das gleiche bereitstellen.Kann mir jemand eine Idee über das Erstellen von generischen Rahmen für den WCF-Client mit Fabrikmustern geben?

Wie wäre es mit "ChannelFactory" im Rahmen? oder Rahmen sollte Dienstverweis haben? (Mein Rahmen sollte die Verwendung von Channel/Proxy machen)

danke ..

Antwort

2

Ich glaube, Sie für ChannelFactory<TChannel>.CreateChannel Methode suchen. Dies ermöglicht das Erstellen eines Kanals eines bestimmten Typs für eine bestimmte Endpunktadresse.

Dies ist eine der Möglichkeiten, einen Proxy für WCF-Dienste zu erstellen. Ein sehr einfaches Beispiel ist, wie unten

using System; 
using System.ServiceModel; 


[ServiceContract()] 
interface IService 
{ 
    [OperationContract()] 
    string GetData(string inputString); 
} 

public class ConcreteService : IService 
{ 
    public string GetData(String inputString) 
    { 
     return "you enetered :" + inputString; 
    } 
} 

public class Test 
{ 
    static void Main() 
    { 
     // Create a channel factory. 
     BasicHttpBinding myBinding = new BasicHttpBinding(); 

     EndpointAddress myEndpoint = new EndpointAddress("http://localhost/ConcreteService/Ep1"); 

     ChannelFactory<IMath> myChannelFactory = new ChannelFactory<IService>(myBinding, myEndpoint); 

     // Create a channel. 
     IService wcfClient1 = myChannelFactory.CreateChannel(); 
     string output = wcfClient1.GetData("abc"); 
     ((IClientChannel)wcfClient1).Close(); 

     } 

} 

Sie mehr lesen über dieses here gezeigt.

+0

Ich möchte nur wissen, ob ChannelFactory hilfreich sein wird. Ich möchte WCF-Client mit Factory-Muster. – user3883423

+0

Die Kanalfactory erfordert nur die Schnittstelle, die der Dienst implementiert, und Sie müssen dem Dienst keine Dienstreferenz hinzufügen. – Agalo