2009-02-03 7 views
2

질문의 전문화이다축 2를 사용하는 웹 서비스 : 복합 유형 또는 단순 유형 매개 변수?

OO style parameters vs type parameters

당신이 웹 서비스 작업을 정의하려면? 당신은 인터페이스 정의를 변경하지 않고 사람의 정의를 변경할 수있어 이후 파라미터가이

public String insertPerson(Person person); 

같은 복합 유형으로 전달에 beeing 한 것은 정말 멋진 것 같다. 그러나 C/C++로 구현 된 다른 WS 클라이언트 (예 : gsoap 또는 axis2c)가이 정의를 사용하면 어떻게 될까요? Java에서 Axis2를 사용하여 구현 된 웹 서비스에 액세스하는 것이 문제가 될 수 있습니까?

public String insertPerson(long id, String name, String personalId); 

그것에 대해 매우 확실하지 않다 : 수 있음은 간단한 매개 변수 방법을 사용하는 것이 더 안전합니다. 어떻게 생각해?

프레드

답변

0

좋은 웹 서비스 프레임 워크는 복잡한 유형을 이해할 수 있습니다. 약간의 조정이 필요할 수 있습니다. Axis2는이를 극복 할 수 있습니다.

일반적으로 매개 변수화 된 방법을 선호합니다. 특히 매개 변수 수가 적은 경우 (4 개 이하). WSDL 파일과 생성 된 SOAP 메시지는 쓰기 및 읽기가 더 쉽다는 장점이 있습니다. 이는 테스트 및 디버깅에 매우 유용합니다.

3

나는 첫 번째 방법을 강력히 선호합니다.

그러나 사람 유형을 으로 변경하면이 인터페이스를 변경합니다. Webservice의 인터페이스 (호출 규칙, ...)는 WSDL 및 포함 된 XML 스키마 (또는 참조)에 의해 정의됩니다. 이 중 하나를 변경하면 웹 서비스의 인터페이스가 변경됩니다.

순수하게 Java 관점에서 살펴보면 Person 클래스 (및이 클래스가 참조하는 다른 클래스!)가 웹 서비스 인터페이스에 포함되어있는 것처럼 취급해야합니다!

좋은 점은 이전 클라이언트를 손상시키지 않으면 서 Person 클래스 (또는보다 정확하게는 Person 클래스가 나타내는 복합 유형/요소)와 호환되는 변경을 수행 할 수 있다는 것입니다. 선택적 요소 또는 속성을 추가하는 것이 좋은 예입니다. 새로운 클라이언트는 그것을 사용할 수 있으며 오래된 클라이언트는 그것에 대해 알지 못하지만 서버가 존재하지 않기 때문에 중단되지 않습니다.