만 알면 ChannelFactory를 종료하는 방법이 필요합니다.이 문제를 해결할 수 있도록 도와주세요.클라이언트가 인터페이스
WCF를 사용하는 클라이언트가 있습니다. 나는이 클라이언트가 서비스로부터 데이터를 얻는다는 것을 알리고 싶지 않다. 이렇게 모델을 사용하여 코드를 단위 테스트하고 나중에 주어진 인터페이스의 구현을 대체하는 것이 더 쉽습니다. 이 모델의 문제점은 ChannelFactory에서 close를 호출 할 수 없다는 것입니다. 나는 가까이에 전화해야한다고 확신하지 않지만, 그것이 옳다고 느낀다.
그래서 제 질문은 :
는누구 클라이언트는 서비스의 인터페이스를 알아야 ChannelFactory에 폐쇄를위한 좋은 패턴을 알고 있나요? 아니면 ChannelFactory가 어떤 종류의 마술에 의해 스스로 폐쇄 되었습니까?
이static void Main(string[] args)
{
ITestService service = GetTestService();
Console.WriteLine(service.GetData(42));
}
private static ITestService GetTestService()
{
var cf = new ChannelFactory<ITestService>(new WSHttpBinding(), new EndpointAddress("http://localhost:8731/TestService/"));
return cf.CreateChannel();
}
감사합니다, GAT
이것은 훌륭한 솔루션처럼 들립니다. 내가 할 수있는 일은 정적 인 ChannelFactory가 포함 된 자체 "ServiceFactory"를 가지는 것입니다. 채널이 필요할 때마다이 멤버에서 CreateChannel()을 호출합니다. 그리고 응용 프로그램이 종료되면 나는 ChannelFactory를 닫습니다. 올바른 방법으로 들리니? –
GAT
올바른 방법입니다. 요점은 채널이 필요할 때마다 새로운 ChannelFactory를 생성해서는 안된다는 것입니다. ChannelFactory를 프로그램 기간 동안 유지하는 데는 아무런 문제가 없습니다. –