2011-08-31 6 views
1

나는 20 가지 방법으로 인터페이스가있다. 나는 그들 중 20 가지의 10 가지 방법에 접근 할 수있는 clients.one의 다른 유형이있다. 나는 다른 클라이언트를 가지고있다. 액세스 할 수있는 20 가지 방법과 15 가지만 액세스 할 수있는 또 다른 방법을 제공합니다. 어떻게하면이 작업을 수행 할 수 있습니까? 작업 계약 인증을 위해 어떻게 할 수 있습니까? 어떤 속성입니까?이를 수행 할 수있는 다른 방법이 있습니까? 우리가 이것을 달성 할 수있는 여러 가지 방법이 있습니까?Wcf 다른 클라이언트 다른 방법 동일한 인터페이스

답변

5

모든 서비스를 의 모든 메소드에 노출시킬 수 있습니다.

이 아니지만 일부 방법 (예 : 은 20 가지 방법으로 단일 서비스 계약을 맺을 수 없으며 그 중 10 가지만을 특정 클라이언트 집합에 노출합니다.

기본적으로 공개하려는 각 메소드 세트에 대해 하나의 서비스 인터페이스를 작성해야합니다.

그러면 서비스 클래스에서 처음 10 개의 메소드를 구현하고 해당 메소드에 액세스 할 수있는 모든 클라이언트에 해당 서비스를 공개 할 수 있습니다.

그런 다음 다른 5 개의 메소드로 두 번째 서비스 인터페이스를 가질 수 있으며 총 15 개의 메소드에 대해 첫 번째와 두 번째 인터페이스를 구현하는 두 번째 서비스 구현 클래스를 가질 수 있습니다. 일부 바인딩에서이 서비스를 다른 세트로 노출합니다. 클라이언트 - 등등 ....

+0

그래서 여러 조합이있는 경우 많은 서비스 계약을 맺고 동일한 구현 코드를 여러 번 작성하여 구현해야합니다 ...이를 수행하는 유일한 방법입니까? 메소드에 대한 보호를 설정할 수 있습니까? 우리는 우리의 서비스 클라이언트의 인증 정보를 개별적으로 확인하기 위해 운영 계약서에 속성을 작성합니까? –

+0

다른 기능 세트가 필요한만큼 많은 ** 서비스 계약 **이 있어야하며 둘 이상의 서비스 구현 클래스가 필요할 수도 있습니다. 물론 서비스 구현 **은 많은 코드를 공유 할 수 있습니다! 다른 "외벽"만 있으면됩니다. 동일한 코드를 반복해서 작성할 필요가 없습니다! –

-1

오늘 나는 똑같은 문제에 직면 해 있으며 실제로 달성하기 만하면됩니다. 기본적으로 N 개의 다른 .svc 파일과 N 개의 다른 인터페이스가 있습니다. 주 코드는 모든 기능을 가진/svc 인터페이스에 있습니다. 다른 인터페이스/svc 파일에서는 메소드를 선언해야하며 구현시 기본 객체를 선언 한 다음 메소드를 호출하면됩니다. 예를 들면 : - IMainInterface -

메인 인터페이스/SVC Main.svc 다른 인터페이스에서

class MainSVC 
{ 
    public void functionA() 
    { 
     //code 
    } 

    public void functionB() 
    { 
     //code 
    } 
} 

선언 만이 필요 : 고객 인터페이스/SVC - ICustomer -

class MainSVC 
{ 
    public void functionA() 
    { 
     Main main = new Main(); 
     main.functionA(); 
    } 
} 
Customer.svc을

물론 고객이 Main.svc가 아닌 Customer.svc를 사용해야합니다. 그렇지 않으면 모든 방법을 사용할 수 있습니다.

관련 문제