2010-12-21 4 views
1

클래스의 다른 시각을 제공 할 수 있습니까? 예를 들어 Account 클래스가 있는데 WCF를 사용하여이 데이터를 노출하고 싶습니다. 다른 메서드 호출에 대한 계정 클래스의 다른 속성을 노출하고 싶습니다. 특정 호출에 대해서만 사용자 이름과 암호를 노출하고 싶습니다 다른 호출은 이메일과 주소를 노출하고 싶습니다. 해야 다른 클래스를 작성해야하거나 내가 클라이언트에 필요한 속성을 노출 할 수클래스의 다른 시각 노출

+0

특정 메서드를 호출 할 때 특정 속성을 숨기려면 어떻게해야합니까? 프로그래머 나 사용자로부터 숨길 수 있습니까? – Heki

+0

@Heki - [wcf]와 [web-services]에 대한 언급에서 우리는 클라이언트가 필요로하는 데이터가 시스템이 내부적으로 필요로하는 데이터와 반드시 같다고는 볼 수 없습니다. –

+0

당신은 아마 맞을 것이지만 나는 명확한 질문을 할 필요성을 느꼈습니다. 어쨌든, 당신이 제안한 DTO와 확실히 같이 갈 것입니다. – Heki

답변

1

당신은 "보기"로 인터페이스를 사용하여 이것을 얻을 수 있습니다. 예를 들어, 사용자 이름과 비밀번호에 액세스 할 수있는 메소드 나 속성을 가진 UsernamePassword 인터페이스를 만들고 Account 클래스가이 인터페이스를 구현하도록합니다. 그런 다음이 인터페이스를 전달할 수 있으며 사용자는 계정 클래스의 다른 메소드와 속성을 인식하지 못합니다. DataMember를 속성으로

interface IUsernamePassword 
    { 
    string Username { get; set; } 
    string Password { get; set; } 
    } 

    class Account : IUsernamePassword 
    { 
    public string Username { get; set; } 

    public string Password { get; set; } 
    } 
+0

여기에도 WCF가 있으며, 이는 사물에 영향을 줄 수 있습니다. 또한 호출자가 인터페이스를 버릴 수도 있습니다. –

1

당신은 DataContract를 사용할 수 있지만 그건 당신이 클래스의 하나의 직렬화 된 뷰를 생성 할 수 있습니다. AutoMapper를 사용하여 모든 매핑 코드를 처리 할 수있는 더 작은 ViewModel 클래스를 만들고 싶을 것입니다.

2

하나 사용이 WCF하고 다른 사용 앱 내부에 경우에, 당신은 원하는 특성이 노출되도록 [DataMember] 적절하게 클래스 주석을 달 수 있습니다. 두 가지 WCF 시나리오가있는 경우 각각의 반환 데이터 집합을 나타내는 새로운 클래스 (또는 클래스)를 도입하여 암시 적으로 conversion operator (엔터티에서 DTO까지)을 추가하여 수행 할 수 있도록합니다. :

같은 Account 클래스의 여러 뷰를 노출 할 경우
public CustomerLite GetCustomer(int id) { 
    Customer cust = SomeTier.GetCustomer(id); 
    return cust; // note cust is Customer but we are returning CustomerLite 
} 
1

, 대답은 (제가 알고 없다) 더 있습니다. 기본 DataContractSerializer을 사용하면 선언적 방식으로 만 사용자에게 표시되는 멤버를 제어 할 수 있습니다. 이렇게하면 사용자보기를 한 가지 방법으로 사용자 정의 할 수 있지만 여러 가지보기는 사용자 정의 할 수 없습니다.

대신, 노출하려는 각 "보기"에 대해 하나의 개별 데이터 계약 클래스 (생성자 인수로 Account을 취할 수 있음)를 생성 할 수 있습니다.

0

항상 앱 도메인 외부에서 호스팅되는 서비스를 사용할 때는 항상 메시지 클래스 (일명 DTO)를 사용하십시오.

나는 메시지 클래스! = 비즈니스 클래스를 명시한 WCF의 모든 프레젠테이션에서 슬라이드를 사용하지만 이후로 더 나은 방법을 설명했습니다.

이것은 스타 트랙 사람들이 아닙니다. You Can't Fax a Cat (사진은 1000 단어 상당)

관련 문제