2013-11-15 3 views
0

WCF 서비스를 사용하는 ASP.NET 웹 사이트를 개발 중입니다. 다음 접근법을 사용하여 서비스 클라이언트 객체를 생성합니다.정적 WCF 서비스 클라이언트 개체 또는 표준 WCF 서비스 클라이언트 개체?

이러한 메소드를 정의하기 위해 전역 클래스 파일을 사용하고 있습니다.

public static WCore.Service1Client client; 
public static int ConnectToWCore() 
{ 
    try 
    { 
     client = new WCore.Service1Client(); 
    } 
    catch (Exception) 
    { 
     return -1; 
    } 
    return 0; 
} 

그래서 제 질문은이 웹 사이트에 정적 클라이언트 객체를 사용하는 것이 정확하다? 교착 상태 문제가 발생할 수 있기 때문에 많은 사용자가 동일한 개체에 액세스 할 것이기 때문에 정적 개체는 한 번 생성되며 모든 인스턴스에 공통적으로 적용됩니다. 어느 쪽이 효율적인 정적 객체 또는 표준 객체가 될지 말해 주시겠습니까?

답변

2

WCF 클라이언트는 가볍고 필요할 때마다 만들어 지도록되어 있습니다. 실제로 여러 클라이언트 오브젝트를 작성하여 성능 문제점을 측정 한 경우가 아니면이를 수행해야합니다.

또한 오류 코드 반환 값을 사용하면 C#에서 오류를 처리하는 올바른 방법이 아닙니다. C#은 예외를 사용하며 모든 C# 코드에서 사용하기를 선호합니다.

+0

하지만 성능면에서 더 효율적인 지 알고 싶습니다. 서로 다른 사용자를 위해 동일한 정적 클라이언트 또는 다른 객체를 사용합니까? 귀하의 제안은 무엇입니까? 여러 명의 동시 사용자가있는 웹 사이트에 대해 최종적으로 사용해야하는 항목은 무엇입니까? –

0

정적 서비스 클라이언트를 WCF 용으로 사용하는 것이 좋은 방법이라고 생각하지 않습니다. 거의 모든 인스턴스에서 필요할 때 생성되어 처리되는 것을 보았습니다.

내가 틀렸다고 정정하면 서비스 클라이언트가 리소스를 낭비하게되며 세션 손실, 시간 초과 및 기타 문제와 같은 다양한 문제가 발생할 수 있습니다. 필요에 따라 작성하고 비즈니스를 수행하여 오브젝트를 처 리하는 것이 일반적입니다.

또한 ASP 웹 사이트는 클라이언트간에 "인스턴스화"되어 있으며 각 클라이언트는 동일한 웹 사이트의 별도 사본을 가지고 있다고 생각합니다. 따라서 한 번에 동일한 서비스 클라이언트에 액세스하려고하는 여러 클라이언트에서 더 많은 문제가 발생할 수 있습니다.

+0

아니요, ASP 웹 사이트는 클라이언트별로 "인스턴스화"되지 않습니다. 하나의 웹 사이트 만 있습니다. 다른 점은 서버가 들어오는 각 요청을 처리하기 위해 서버가 여러 스레드 (또는 동일한 프로세스의 여러 인스턴스)를 시작하지만 웹 사이트의 내용이 동일하다는 것입니다. –