웹 서비스를 코딩 할 때 어떻게 반환 값을 구조화합니까? 오류 상태 (예기치 않은 것들과 예기치 않은 것들)를 어떻게 처리합니까? int와 같은 단순한 것을 리턴한다면, 그냥 반환하거나 좀 더 복잡한 객체에 포함 시키면 되겠습니까? 한 서비스 내의 모든 웹 메소드가 단일 클래스의 인스턴스를 리턴합니까, 아니면 각 메소드에 대해 사용자 정의 리턴 값 클래스를 작성합니까?웹 메서드 반환 값에는 어떤 좋은 디자인 패턴이 있습니까?
9
A
답변
8
저는 요청/응답 객체 패턴이 좋아요. 여기에는 간단한 공용 속성을 가진 단일 [Operation] 요청 클래스로 인수를 캡슐화합니다.
AddCustomerRequest와 마찬가지로 AddCustomerResponse를 반환합니다.
응답에는 작업의 성공/실패 정보, UI에서 사용할 수있는 메시지 (예 : 추가 된 고객의 ID)가 포함될 수 있습니다.
또 다른 좋은 패턴은 일반적인 IMessage 인터페이스에서 파생 된 것입니다. 일반적인 끝점은 Process (params IMessage [] messages)와 같습니다. 같은 방법으로 여러 작업을 전달할 수 있습니다. 웹 요청.
1
+1 Ben의 답변입니다.
또한 포괄적이고 가능한 조치가 가능한 응답을 허용하기 위해 일반 응답에서 여러 오류/경고 항목을 허용한다고 생각해보십시오. (첫 번째 오류 메시지 이후에 중단 된 컴파일러를 사용 하시겠습니까? 아니면 최대한 많이 말한 컴파일러를 사용 하시겠습니까?)
1
SOAP 웹 서비스를 사용하는 경우 오류 세부 정보를 반환하는 표준 방법은 SOAP faults입니다. 여기서 오류 메시지는 원하는 세부 정보를 반환 할 수 있습니다.
0
비누 오류는 호출 응용 프로그램이 Soap 클라이언트 인 표준 사례입니다. XMLHTTP를 사용하는 COM 클라이언트와 같이 Soap이 XML로 구문 분석되고 Soap 오류를 쉽게 처리 할 수없는 경우가 있습니다. 아직 투표 할 수 없지만 @Ben Scheirman에게는 +1을 더합니다.