JSON 또는 SOAP(XML)?
나는 그 회사를 위한 새로운 애플리케이션을 개발하고 있습니다.그 애플리케이션은 아이폰과 데이터를 주고받아야 한다.
회사 서버 측에서 를 사용합니다.NET 프레임워크
예를 들어 특정 Customer Number의 클래스 "Customer"(이름, 주소 등)를 먼저 서버에서 아이폰으로 다운로드하여 로컬로 저장한 후 다시 업로드하여 변경 내용을 적용합니다(다른 사용자가 사용할 수 있도록 합니다).동시성은 문제가 되지 않습니다(적어도 현시점에서는...).
어쨌든, 서버측(Webservice 등)과 iPhone 앱을 모두 개발하지 않으면 안 됩니다.
이를 위한 최선의 방법은 자유롭게 식별할 수 있습니다(이것이 「넘버 원」의 애플리케이션이기 때문에, 장래의 「표준」이 됩니다).
그래서, 나에게 무엇을 제안합니까?
SOAP 웹 서비스 사용(XML 구문 분석 등)또는 사용자 JSON?(더 가벼워 보입니다.) SOAP을 사용하여 데이터를 업로드하는 방법을 명확하게 알 수 있습니까? (xml soap 엔벨로프를 코드화하는 데 매우 긴 시간...)피하겠습니다). 하지만 JSON을 사용하여 같은 작업을 수행할 수 있는 방법은 무엇입니까?
응용 프로그램은 날짜 값을 사용해야 합니다(예: last_visit_date 등).) Json에서의 날짜는 어떻게 됩니까?
JSON은 XML에 비해 몇 가지 장점이 있습니다.JSON은 크기가 훨씬 작고 비대하지 않기 때문에 네트워크를 통해 전달되는 데이터 양이 훨씬 적습니다.모바일 디바이스의 경우 큰 차이가 있을 것입니다.
또한 데이터 패킷을 구문 분석, 추출, 변환 없이 javascript 배열로 직접 전달할 수 있기 때문에 javascript 코드에서도 사용하기 쉬우며 CPU 사용률도 훨씬 낮습니다.
이를 사용하여 코드를 작성하려면 XML 라이브러리 대신 JSON 라이브러리가 필요합니다.날짜는 XML에서와 같이 처리됩니다. 표준으로 인코딩한 다음 라이브러리가 이를 인식합니다.(예를 들어 여기 날짜가 기재된 샘플이 있는 라이브러리가 있습니다.)
여기 입문서가 있습니다.
아, 중요한 질문: JSON인가 XML인가?
일반적으로 XML은 텍스트의 래핑과 마킹에 뛰어나기 때문에 많은 텍스트를 전달해야 할 때만 XML을 선호합니다.
작은 데이터 오브젝트(ID, 날짜 등)를 전달할 때는 JSON이 작고 해석하기 쉽고 읽기 쉽기 때문에 사용하는 경향이 있습니다.
또한 XML을 선택해도 SOAP을 사용할 필요가 있는 것은 아닙니다.SOAP은 파트너 간의 상호 운용성을 위해 설계된 매우 무거운 프로토콜입니다.여기서 클라이언트와 서버를 모두 제어하기 때문에 반드시 의미가 있는 것은 아닙니다.
iPhone의 결과를 어떻게 소비하고 있는지 생각해 보세요.웹 서비스 응답을 읽을 때 어떤 메찬심을 사용하시겠습니까?NSXMLParser?
데이터를 어떻게 소비하느냐에 따라 데이터 처리 방법에 가장 큰 영향을 미칩니다.
JSON과 SOAP만이 유일한 옵션입니까?RESTful 서비스는 어떻습니까?
iPhone 클라이언트가 액세스할 수 있는 공개 API를 가진 웹상의 주요 업체들을 살펴보십시오.
또, 다음의 관련 기사도 참조해 주세요.
JSON에는 다음과 같은 이점이 있습니다.
- 부울값과 숫자값을 인코딩할 수 있습니다.XML에서는 모든 것이 문자열입니다.
- 그것은 훨씬 더 명확한 의미를 가지고 있다...에는 json이 .
{"key":"someValue"}
에서는, XML 「」를 사용할 수<data><key>someValue</key></data>
★★★★★★★★★★★★★★★★★」<data key="someValue" />
노드에는 「XML」 「XML」 「XML」 「XML」을 사용법자녀들은 객체의 속성을 나타내거나 여러 번 실제로 XML 메시지의 객체 구조를 이해하기 위해 어레이를 나타낼 때 대응하는 스키마가 필요합니다.JSON의 JSON입니다. - 따라서 해석/생성 시 대역폭 및 메모리 사용량이 줄어듭니다.
그 외에는 XML과 JSON의 차이는 없습니다.즉, 이것은 교환이 매우 용이합니다.JSON을 사용하여 SOAP의 의미를 캡처할 수 있습니다.그냥 SOAP이 너무 부어서...SOAP을 사용하려면 라이브러리와 생성기를 사용하십시오.손으로 다 짓는 건 재미도 없고 재미도 없어요
XML RPC 또는 JSON RPC를 사용하면 동작 속도가 빨라집니다.보다 가볍고, JSON이나 XML을 자유롭게 사용할 수 있지만, 클라이언트<->서버 앱을 작성할 때는, 양쪽의 트랜스포트 레이어를 추상화하는 것이 매우 중요합니다.통신에 관해서는 비즈니스 로직 전체 등을 작은 인터페이스에만 의존해서는 안 되며, 필요에 따라 프로토콜에 연결할 수 있습니다.
SOAP vs JSON뿐만 아니라 다양한 옵션이 있습니다.XML을 사용하여 REST 기반의 프로토콜(Representational State Transfer)을 실행할 수 있습니다.SOAP보다 사용하기 쉽고, (설계한) XSD가 훨씬 좋습니다.거의 모든 고객이 이러한 서비스에 쉽게 액세스할 수 있습니다.
한편, JSON 파서는 거의 모든 언어에 대응하고 있으며, AJAX를 통해 사용할 경우 JavaScript에서 매우 쉽게 호출할 수 있습니다.
그러나 SOAP은 엔터프라이즈 기능을 지원하는 표준화된 확장을 통해 강력한 성능을 발휘할 수 있습니다.
Hessian은 iPhone측에서 HessianKit, 서버측에서 HessianC#을 사용하여 사용할 수도 있습니다.
큰 보너스는 1입니다.Hessian은 바이너리 시리얼라이제이션프로토콜로 데이터 페이로드가 작기 때문에 3G 및 GSM에 적합합니다.2. 양쪽에서 포맷에 대해 걱정할 필요가 없습니다. 전송은 프록시에 의해 자동화됩니다.
따라서 서버 측에서는 다음과 같은 C# 인터페이스를 정의하기만 하면 됩니다.
public interface IFruitService {
int FruitCount();
string GetFruit(int index);
}
그런 다음 CHessian Handler를 서브클래스하고 IFruit Service를 구현하면 웹 서비스가 완료됩니다.
iPhone에서는 해당하는 Objective-C 프로토콜을 작성하기만 하면 됩니다.
@protocol IFruitService
-(int)FruitCount;
-(NSString*)GetFruit:(int)index;
@end
그런 다음 한 줄의 코드로 프록시를 통해 액세스할 수 있습니다.
id<IFruitService> fruitService = [CWHessianConnection proxyWithURL:serviceURL
protocol:@protocol(IFruitService)];
링크:
HessianKit : HessianKit
JSON이 더 빠르고 데이터 크기가 더 작다는 것은 다른 사람들이 이미 지적한 바와 같습니다.JSONModel과 같은 데이터 모델링 프레임워크를 사용하여 JSON 구조를 검증하고 JSON 개체를 Obj-C 개체로 자동 변환할 수도 있습니다.
JSONModel에는 네트워킹 및 API를 사용하는 클래스도 포함되어 있습니다.또한 json rpc 메서드도 포함되어 있습니다.
다음 링크를 참조해 주세요.
- http://www.jsonmodel.com - JSONModel 프레임워크
- http://json-rpc.org - JSON API 구현 사양
- http://www.charlesproxy.com - JSON API를 디버깅하기 위한 최적의 도구
- http://json-schema.org - JSON의 검증 스키마를 정의하는 툴로 도중에 도움이 됩니다.
JSONModel의 간단한 사용 예:http://www.touch-code-magazine.com/how-to-make-a-youtube-app-using-mgbox-and-jsonmodel/
이것들이 유용했으면 좋겠다.
언급URL : https://stackoverflow.com/questions/1237649/json-or-soap-xml
'programing' 카테고리의 다른 글
create-react-app에서 css 모듈을 사용하는 방법 (0) | 2023.02.23 |
---|---|
데이터 바인딩 없이 값 렌더링 (0) | 2023.02.18 |
웹 사이트에서 악성 코드/멀웨어를 찾는 방법 (0) | 2023.02.16 |
React에서 후크를 사용하여 컴포넌트를 강제로 다시 렌더링하려면 어떻게 해야 합니까? (0) | 2023.02.16 |
React Native 앱이 닫혔을 때(일시 중단되지 않았을 때) 어떻게 감지합니까? (0) | 2023.02.16 |