2016-04-12 6 views
0

В моей рабочей среде я столкнулся с требованием создать фреймворк для клиентского прокси с использованием заводских шаблонов, чтобы фактические клиенты вместо добавления служебной ссылки на услугу использовали эту инфраструктуру. Поскольку у меня не так много знаний, кто-нибудь может дать какую-то идею или полезные ссылки для них.Может ли кто-нибудь дать мне некоторое представление о создании общей структуры для wcf-клиента с использованием заводских шаблонов?

Как насчет использования "ChannelFactory" в каркасе? или рамки должны иметь ссылки на службу? (Моя система должна использовать ChannelFactory/прокси)

спасибо ..

ответ

2

Я считаю, что вы ищете ChannelFactory<TChannel>.CreateChannel метод. Это позволяет создать канал указанного типа для указанного адреса конечной точки.

Это один из способов создания прокси для служб WCF. Очень простой пример, как показано ниже

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(); 

     } 

} 

Вы можете прочитать больше об этом here.

+0

Я просто хочу знать, будет ли ChannelFactory полезен? Я хочу, чтобы WCF-клиент имел заводские шаблоны. – user3883423

+0

Для фабрики каналов требуется только интерфейс, который выполняет служба, и вам не нужно добавлять служебную ссылку в Сервис. – Agalo