2010-03-12 5 views
1

나는 일반적인 디자인 문제가 있습니다.웹 서비스 데이터 형식 (계약)

우리는 임상 객체를 나타내는 꽤 큰 데이터 모델을 가지고 있습니다. 객체 자체는 계층에 200 개 이상의 하위 속성을 가지고 있습니다.

그리고 SetObject 작업과 GetObject 작업이 있습니다. 내 질문에, 최선의 현명한 방법은 각각의 작업 또는 다른 데이터 모델에서 단일 데이터 모델을 사용하는 것이 합리적일까요? Get 작업은 Set에 필요한 것보다 훨씬 자세한 정보를 반환하기 때문입니다.

데이터 모델에 ProviderId 및 ProviderName 특성이 있다고 표시되는 예가 Get 작업에서 ProviderId와 ProviderName 둘 다 반환되어야합니다. 그러나 Set 작업에서는 ProviderId 만 필요하며 시스템에는 이미 해당 정보가 있으므로 ProviderName은 서비스에서 무시됩니다. 이 경우 Get 및 Set 작업에서 동일한 데이터 모델을 사용하는 경우 ProviderName이 Set 작업에도 노출되어 소비하는 개발자를 혼란스럽게합니까?

답변

1

다음과 같이 말합니다. :-)

심각하지 않음. 오브젝트를 어떻게 편집/작업합니까? 귀하의 소프트웨어가 WCF 서비스를 호출하여 ID 나 검색어 등을 사용하여 객체를 검색한다고 가정합니다.

그러면 200 개 이상의 속성을 가진 개체가 반환됩니다. 당신은 그것에 대해 어떻게 일하고 있습니까? 얼마나 많이 바꾸고 있습니까?

일반적으로 개체 ID, 속성 이름 및 새 값을 취하는 일반적인 SetProperty 메서드를 서비스에 사용하면 소수의 특성 만 변경하는 것이 좋습니다. 그러나 방법이 생각이 작동하는 것입니다 :

  • 서버 측 코드가 개체의 ID를 얻을 것이다
  • 그것은 다음에 하나의 속성을 설정합니다
  • 데이터베이스에서 개체를로드합니다 새 값
  • 은 당신이 네 가지 속성을 업데이트하면 어떻게 데이터베이스

다시 개체를 저장합니다? 당신은 그 사이클 중 4 개를 통과 할 것입니다. 또는 SetProperty 메소드를 확장하여 (속성 이름, 값) 쌍의 사전을 포함 할 수 있습니다.

그래서 나는 그 200 개의 속성 중 얼마나 많은 것이 당신이 주어진 시간에 변화하고 있는가에 달려 있다고 생각합니까? 10 %, 20 %의 속성을 변경하면 전체 수정 된 객체를 다시 전달하는 것이 더 쉽지 않을까요?

0

이것은 임상용 모델을 정식 모델로 사용하고 편안한 스타일 서비스 인터페이스를 제공하기위한 좋은 후보자처럼 보입니다. 그런 다음 사용 모델에 따라 필요한 필드 만 사용하여 데이터 오브젝트의 다른 뷰 또는 표현을 제공 할 수 있습니다. 귀하의 동사 (get, set)는 http 표준이됩니다. Get, Put.

오픈 소스 Rest 프레임 워크를 사용하면 쉽게 시작할 수 있습니다. Restlet은 제가 성공적으로 사용한 것입니다.