2012-07-16 2 views
0

웹 서비스는 입력 데이터의 유효성을 검사하고 데이터베이스에 기록해야합니다. 나중에 다른 서비스는 데이터를 읽고 XML 파일을 만들어야합니다.웹 서비스 동적 데이터 전송 및 유효성 검사

그래서 서비스는 데이터 전송 및 변환 만 수행합니다 (WS- * Parameter => Database).

"동적"웹 서비스에는 변수 세트 ("컨테이너")가 있어야하므로 클라이언트가 많이 변경되어 인터페이스와 기본 구현이 수정되지 않아야합니다.

유효성 검사를 처리하고 처리하는 방법은 무엇입니까?

초기 아이디어 :

  • 그냥 파일을 첨부 파일로 전송하고 "고정"에 대한 .XSD 스키마와 "용기"부분에 대한 .XSD 스키마로 웹 서비스에서 그것을 확인합니다. 변수 부분이 변경된 경우 유효성 검사를 위해 "컨테이너".xsd 만 변경해야합니다. 컨테이너는 base64로 인코딩 된 xml 일 수 있습니다. 유효성 검사 오류가 발생하면 웹 서비스가 오류로 응답합니다.

  • 모든 표준 항목을 WSD 매개 변수로 사용하고 base64 인코딩 된 컨테이너를 전달합니다. WS- *는 표준 매개 변수에 대한 유효성 검사를 수행하고 컨테이너 만 다른 .xsd에 대해 유효성을 검사합니다.

값의 논리/의미 론적 평가는 나중에 수행해야합니다. 필드 유형 유효성 검사 만 필요합니다.

... standard elements xml ... 
<embeddedContainer> 
    <customItemsFromWSClientOne> 
    <reallyCustomItemA> 
    <substructure> 
    <itemABC></itemABC> 
    </substructure> 
    <anotherStructure></anotherStructure> 
    </reallyCustomItemA> 
</customItemsFromWSClientOne> 
</embeddedContainer> 
... standard elements xml ... 

또 다른 클라이언트가 완전히 다른 구조를 가진 'customItemsFromWSClientTwo'와 같은 다른 매개 변수를 보낼 수 있습니다 :

컨테이너는 XML을 같이해야한다. 따라서 서비스는 매우 일반적인 것입니다.

답변

1

검증의 두 가지 종류가 있습니다

  1. 필드 유형 유효성 검사 - 전송 값이 필드 사용자 이름이 문자열이 포함되어 있는지 확인 올바른 유형과 형성 (즉,의, 또는 ID가 포함되어 있는지 확인은 번호 등), 이것은 webservice 파서/FW에 의해 처리됩니다. 따라서 사용자가 잘못된 유형을 보낸 경우 파서는 오류를 발생시킵니다.
  2. 논리 검증 - 실제 값에 대한 몇 가지 비즈니스 로직을 실행

    경우 (값 == NULL) 다른 을 {// 뭔가를 할} {// 다른 일을 할}

I '당신이 필요한 검증 모르겠어요,하지만 내가 이해에서 "컨테이너가"매우 역동적이어야한다, 그래서 아마 같은 것을 포함합니다 :이 경우

<paramName>someParamName</paramName> 
<paramValue>someValue</paramValue> 
... 

를 XSD를 검증하지 않습니다 많이 잘하니 아마 알아낼 수있는 논리를 써야 할 것입니다.

구조에 대해 completley가 잘못되었을 수 있습니다. 그렇다면 일부 예제를 게시하여 주시기 바랍니다. 더 잘 이해할 수 있습니다.

편집 :

XML 구조의 모든 종류를 포함하는 "용기"를 가능하게하기 위해, 당신은 xsd:any로 정의해야합니다. processContents 속성을 strict으로 정의 할 수 있으며 올바른 네임 스페이스가 정의 된 경우 웹 서비스 파서가이를 유효성 검증 할 수 있어야합니다. 자세한 내용은 here을 참조하십시오.

또 다른 옵션은 그룹을 사용하는 것입니다 (here 참조).

+0

초기 질문을 수정했습니다. –

관련 문제