2014-07-15 1 views
0

Visual Studio 2012, C# 및 .NET Framework 4.0에서 ASP.NET MVC 4 Web API (RESTful)를 개발 중입니다.모든 ASP.NET MVC 수명에 대해 하나의 WCF 프록시 인스턴스 만들기

이 Web API를 사용하여 다른 WCF SOAP 서비스를 사용하고 WebApi가 시작될 때 해당 WCF 서비스에 대한 클라이언트 프록시를 만들고 싶습니다.

어떻게하면됩니까?

Ninject가 이런 식으로 작동한다는 것을 알고 있습니다. 항상 사용할 수 있습니다. 그러나 나는 그것을 어떻게 할 수 있는지에 대한 모범을 찾을 수 없다.

또는 각 컨트롤러 클래스 내에 인스턴스 필드로 WCF 프록시를 선언해야 할 수도 있습니다.

다음과 같이 단일 것은 어떤 종류의를 만들 수
+0

당신은/생각 싱글 톤 패턴을 시도? –

+0

@ rik.vanmechelen 예, 문제는 그 인스턴스를 Global.asax에 두는 것입니다. – VansFannel

+0

어디서나 원하는대로 만들 수 있습니다. 정적 생성자 (내 대답에 표시된) 존재하는지 확인합니다. –

답변

2

을 사실, 일반적으로 수율 같은 WCF 클라이언트 프록시를 재사용 최상의 성능을 발휘하며 초기 보안 협상 비용이 높은 보안 기능을 사용하면 특히 유용 할 수 있습니다. 참고 : 프록시 인스턴스를 재사용 할 때 코드는 반드시 통신하기 전에 클라이언트 프록시의 상태를 확인해야합니다.

그런 목적을 위해 동일한 클라이언트 프록시 개체를 직접 재사용하거나 프록시 ChannelFactory를 캐싱과 함께 사용할 수있는 몇 가지 옵션이 있습니다. 다음 MSDN 블로그 게시물은 약간 오래된 내용이지만 모범 사례와 관련된 옵션 및 지침에 대한 좋은 설명을 제공합니다.

http://blogs.msdn.com/b/wenlong/archive/2007/10/27/performance-improvement-of-wcf-client-proxy-creation-and-best-practices.aspx
http://msdn.microsoft.com/en-us/library/aa738757.aspx

+0

답변 해 주셔서 감사합니다. 나는 또 다른 질문을 가지고있다. 어떻게 나머지 애플리케이션 (ApiControllers)을 위해 그 프록시를 노출시킬 수 있는가? Global.asax에서 정적 속성을 만들어야합니까? 감사. – VansFannel

+0

질문을 올바르게 이해하면 다음 링크가 도움이 될 것입니다. http://philmunro.wordpress.com/2012/02/15/creating-a-wcf-service-proxy-with-channelfactory/ – Seymour

+0

캐시 된 프록시를 다시 사용하면 최상의 성능을 제공하지만 ** 보안 위험이 발생할 수 있습니다 * * 캐시 된 자격 증명으로 인해. 권리 또는 주장; 관리자가 중간 시간에 사용자의 액세스 권한을 변경 한 경우 이러한 권한은 사용자가 다시 로그인 할 때까지 다시 검사되지 않을 수 있습니다. 물론 서버는이를 플래그 할 수 있지만 모든 요청은 이전에 달성 한 성능 향상을 저하시킬 수있는 이벤트의 경우 만료 검증 요청 프로세서로 라우팅됩니다. – MickyD

0

: 인스턴스가 생성되기 전에

지금
public class WFCSingleton 
{ 
    public static WFCSingleton SingletonInstance 

    static WFCSingleton() 
    { 
     SingletonInstance = new SingletonInstance(); 
    } 

    private SingletonInstance(){} 
} 

당신은 항상이 그냥 (한 번만 호출됩니다 WFCSingleton.SingletonInstance 정적 생성자하지만 그것을 사용한다

모든 추가 논리는 인스턴스 메서드/속성으로 WFCSingleton에 배치 할 수있는 방법이 check msdn for more on that 작동합니다..

관련 문제