2009-10-17 4 views
3

SOAP, 부 풀기, XML 및 REST와 같은 대체 메커니즘에 대해서는 이미 많은 논의가있었습니다.네트워크 프로그래밍 : SOAP과 XML 라이브러리로 DIY 마샬링?

여기 상황이 있습니다. 새로운 팀 구성원은 실제로 프로토콜을 구현하는 데 따르는 어려움에 따라 SOAP을 사용하고 있습니다. 그는 gSOAP (프로젝트는 모두 C++입니다.) 그는 WSDL이 C++로 코딩 된 지저분한 손을 정리하는 것과 같은 것을 말합니다.

지금은 XML 기반 텍스트 메시지 및 expat XML 라이브러리를 사용하는 대부분의 네트워킹을 처리하고 있습니다. 따라서 메시지 형식을 수정하거나 매개 변수 목록을 추가하는 것과 관련된 프로그래밍 노력이 많이 (많지 않음) 있습니다. 보낸 사람 끝에서 XML 요청을 패키지로 만들어 일반 TCP 소켓으로 보냅니다. 수신기에서 DOM 또는 SAX를 사용하여 XML을 구문 분석합니다. 지금까지 괜찮 았어. XML 메시지는 매우 작고, 최대 2 백개의 문자를 평균적으로 가지고 있습니다. 그리고 나는 그 메시지의 모든 항목을 이해합니다.

우리는 제품 (서버)의 일부가 PHP를 사용하여 코딩 된 웹 사이트에 액세스 할 수있게하려고합니다. 이것이 SOAP 작성자가 SOAP 인터페이스를 "더 쉽게"사용할 수 있다는 생각을 부분적으로 이끌고 있습니다. 이 프로젝트의 모든 사람들은 SOAP가 그들의 구원이라고 믿습니다.

성숙한 프로젝트의 추진력에 큰 혼란을주는 gSOAP와 같은 새로운 대형 라이브러리의 소개를 봅니다.

SOAP이 제공하는 것과 다른 작고 간결한 방법이 있다면 궁금합니다. 그리고 gSOAP 또는 다른 SOAP 도구의 요구 사항을 어떻게 균형 잡아서 개발 현실을 어려운 현실에 쉽게 맞 춥니 다.

IE, XML 라이브러리를 사용하여 C++ 코딩을 손으로 코딩하는 것보다 WSDL이 더 좋고, 더 쉽고, 직공이 더 좋다는 말을 듣고 있습니다. 즉, C++ 객체의 의미를 네트워크 메시지 선언에 넣습니다. 사실, 내가 정의한 많은 XML 메시지는 하나를 위해 하나를 하나의 구별되는 객체로 수신 측에서 매핑하지 않는다.

또는 아무것도 걱정할 필요가 없습니다.

그러나 여기에서 메시지를 스캔하는 현실은 내가 현지에서 말한 것을 모순하는 것처럼 보입니다.

+0

SOAP의 오버 헤드/bloating에 대해 매우 우려하고 있다고 할 수 있습니까? 그리고 이러한 단점없이 어떻게 SOAP을 구현할 수 있는지 알아 내려고 노력하고 있습니까? –

+0

전에는 SOAP을 고려해 본적이 없습니다. 팀의 새로운 사람은 두 가지 명백한 이유 때문에 SOAP를 권장하고 있습니다. 1) 작업 한 사람과 2) 문자열을 찢어서 데이터 값으로 파싱하는 손으로 코딩하는 XML 코드 아이디어가 마음에 들지 않습니다. –

+0

다른 사용자가 사용할 수있는 채널을 열려면 SOAP를 사용할 필요는 없지만 이미 필요한 것이 있고 필요에 맞게 선택해야합니다. –

답변

3

PHP 개발자가 RESTful 인터페이스를 선호하는 경향이 있다는 것을 알게 될 것입니다. 다음은 2003 년 기사입니다.

http://onlamp.com/pub/a/php/2003/10/30/amazon_rest.html

의 RESTful 인터페이스는 증가하는 현상이고, 당신이 당신의 플랫폼 개발자를 유치해야하는 경우가 파도 잡을 경우가 쉬울 것이다.

그렇다면 다중 인터페이스를 지원할 수없는 이유가 무엇입니까? 이는 캡 티브 잠재 고객이없는 웹 서비스에서 상당히 일반적입니다. 기존 모델, 깨끗한 RESTful 모델 및 SOAP/WSDL 모델을 지원할 수 있습니다. 그런 다음 6 개월에서 1 년 후에 재고를 확보하여 가장 인기 있고 가장 적은 지원 모델을 확인하십시오.

외부인이 사이트에 더 쉽게 액세스 할 수 있도록하려면 REST가 더 널리 사용됩니다. 프로젝트를 저장하는 한, 인터페이스 설계에서 일정 정도의 엄격함을 요구하기 때문에 SOAP가이를 수행 할 수도 있지만 REST에 대해서도 마찬가지입니다. 이것이 핵심 기준이라면 손으로 코딩 한 XML을 포기하고 REST와 SOAP로 모두 구현할 수있는 고급 인터페이스 디자인을 사용해야합니다.

SOAP과 REST가 근본적으로 다른 접근 방식이라고 생각하는 사람들이 있지만 인터페이스 디자인에 RESTful 방식을 사용하면 SOAP 버전을 만드는 데 큰 어려움이 없어야합니다. 다른 방향으로 시도하지 마십시오.

+0

Michael, 귀하의 게시물을 "답변"이라고 생각합니다. SOAP에 대한 주장을 평가하기 위해이 스레드가 시작에 불과했지만. 지금까지 합창단은 "당신이 듣는 것보다 훨씬 더 힘들 것"이라고 말하는 듯합니다. 구체적인 권장 사항을 보내 주셔서 감사합니다. –

5

SOAP를 구입하지 않습니다.

Don Object의 단순한 객체 액세스 프로토콜에 대한 원래의 비전은 지금은 단순합니다. 위원회 엉망으로 부풀어 오른 디자인이되었습니다.

부풀린 라이브러리에 대한 모든 추가 종속성을 버리면 손에 잠재적 인 혼란이 생길 ​​수 있습니다.

도구 공급 업체는 SOAP을 좋아하지만 누구에게도별로 좋아 보이지 않습니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 내 의심을 입증 해. 나는 구체적인 말하기를 찾고있다. 바로 지금 (이 프로젝트에서) 우리는 핸드 웨이브 모드에 있습니다. –

+0

모든 플랫폼이 통신 할 수있는 프로토콜로 시작되었습니다. 현재 많은 양의 프레임 워크/솔루션이 여전히 옹호하고있는 뚱뚱한 양입니다. 글쎄, 나는 그것에 대해 너무 예민하지 않다. –

0

net의 RESTful 인터페이스를 살펴보면 SOAP는 거의 보편적으로 이 아니며을 피할 수 있습니다. SOAP은 복잡한 SOAP 패키지로 기존 SOAP 패키지가없는 언어를 효과적으로 잠그지 않습니다. 아무도 자체적으로 구현하지 않으므로 말입니다. 반대로 원시 XML은이 시점에서 보편적이며 필요한 경우 사내에서 구현하기가 어렵지 않습니다.