JSON, REST, SOAP, WSDL 및 SOA : 모두 어떻게 연결됩니까?


155

현재 몇 가지 시험을하고 있으며 몇 가지 개념을 통해 어려움을 겪고 있습니다. 이것들은 모두 내 노트에 '언급'되었지만 나는 그것들이 어떻게 연결되어 있는지 정말로 이해하지 못했습니다. 내 이해는 다음과 같습니다.

SOA-서비스 소비자 / 제공자가 통신 할 수 있도록하는 솔루션입니다. (내가 이해하는 한 이것은 다른 모든 것에 대한 포괄적 인 용어입니다)

WSDL-공급자 서비스를 설명하는 언어입니다.

SOAP-서비스에서 메시지를 보내는 데 사용하는 XML 프로토콜 '래퍼'입니다. 매개 변수를 제공하기 위해 WSDL과 함께 작동합니까?

REST-기능면에서 SOAP와 유사하지만 XML을 피하는 디자인 패턴? (정말 확실하지 않음)

JSON-자바 스크립트를 사용하는 XML의 대안? (이것도 확실하지 않습니다)

인터넷을 둘러 보면이 모든 것이 무엇이며 어떻게 상호 연결되는지에 대한 명확한 정의가없는 것 같습니다.

답변:


252

웹 애플리케이션을 개발하고 있으며 더 큰 자유를 제공하기 때문에 애플리케이션의 표시에서 기능을 분리하기로 결정했다고 가정 해보십시오.

API를 만들고 다른 사람들도 API를 통해 자체 프런트 엔드를 구현하도록합니다. 여기서 방금 한 것은 웹 서비스를 사용 하는 SOA 방법론을 구현하는 것 입니다.

웹 서비스는 플랫폼 및 프로그래밍 언어에 관계없이 표준 인터넷 프로토콜을 통해 기능 빌딩 블록에 액세스 할 수 있도록합니다.

따라서 유용한 것을 처리하고 생성하는 백엔드 (웹 서비스)와 무엇이든 될 수있는 프런트 엔드 (데이터를 소비하는) 간의 교환 메커니즘을 설계합니다. (웹, 모바일 또는 데스크탑 애플리케이션 또는 다른 웹 서비스). 여기서 유일한 제한은 프런트 엔드와 백 엔드가 동일한 "언어"를 "말"해야한다는 것입니다.


이것이 SOAP와 REST가 들어오는 곳입니다. 웹 서비스와 통신하는 표준 방식입니다.

비누:

SOAP는 내부적으로 XML을 사용하여 데이터를주고받습니다. SOAP 메시지는 견고한 구조를 가지고 있으므로 응답 XML을 구문 분석해야합니다. WSDL 은 요청할 수있는 요청, 매개 변수 및 반환 할 항목에 대한 사양입니다. API의 완전한 사양입니다.

쉬다:

REST는 디자인 컨셉입니다.

World Wide Web은 REST 아키텍처 스타일을 준수하는 시스템의 가장 큰 구현을 나타냅니다.

SOAP만큼 엄격하지 않습니다. RESTful 웹 서비스 는 표준 URI 및 메서드를 사용하여 웹 서비스를 호출합니다. URI를 요청 하면 객체 의 표현 을 반환하여 작업을 수행 할 수 있습니다 (예 : GET, PUT, POST, DELETE). 데이터를 표현하기 위해 XML을 선택하는 데 국한되지 않고 실제로 무엇이든 선택할 수 있습니다 (JSON 포함).

Flickr의 REST API는 더 나아가 이미지를 반환 할 수도 있습니다.


JSONXML 은 기능적으로 동일하며 일반적인 선택입니다. Protobufs 기반의 GRPC와 API 생산자와 소비자 간의 통신에 사용할 수있는 Apache Thrift와 같은 RPC 기반 프레임 워크도 있습니다. 웹 API에서 사용하는 가장 일반적인 형식은 모든 언어에서 사용 및 구문 분석이 쉽기 때문에 JSON입니다.


36
JSON 대 XML에 대한 cop-out에 대한 훌륭한 대답입니다. 보다 균형 잡힌 버전은 다음과 같습니다. XML과 JSON은 데이터를 직렬화하는 방법입니다. XML은 더 유연하고 많은 표준이 설계되었지만 일부는 너무 복잡하고 장황하다고 생각합니다. JSON은 비공식 데이터 구조에 사용하기 쉬운 간결한 방식으로 몇 가지 기본 구조를 정의하는 더 간단한 형식입니다. 어떤 사람들은 XML 위에 존재하는 것을 복제하기 위해 그 위에 표준을 작업하고 있습니다.
IMSoP 2014 년

30

WSDL : 웹 서비스 설명 언어를 의미합니다.

SOAP (Simple Object Access Protocol)에서 웹 서비스를 사용하고 프로젝트에 웹 서비스를 추가하면 클라이언트 애플리케이션이 웹 서비스 함수에 대해 알지 못합니다. 요즘은 왠지 구식이고 각기 다른 클라이언트마다 다른 WSDL파일 을 구현해야 합니다. 예를 들어 .Netphp클라이언트에 대해 동일한 파일을 사용할 수 없습니다 . 이 WSDL파일에는 웹 서비스 기능에 대한 설명이 있습니다. 이 파일의 유형은입니다 XML. SOAP의 대안입니다 REST.

REST : Representational State Transfer의 약자

그것은 또 다른 종류의 API 서비스이며 클라이언트가 사용하기 정말 쉽습니다. 파일과 같은 특별한 파일 확장자를 가질 필요는 없습니다 WSDL. CRUD 작업은 서로 다른 방식으로 구현 될 수 있습니다 HTTP Verbs(읽기 용 GET, 생성 용 POST, 업데이트 용 PUT 또는 PATCH 및 원하는 문서 삭제 용 DELETE). 이들은 HTTP프로토콜을 기반으로 하며 대부분의 경우 응답이 JSON또는 XML형식입니다. 반면에 클라이언트 응용 프로그램은 HTTP Verb정확한 매개 변수 이름 및 유형을 통해 관련 항목을 정확하게 호출해야 합니다. 정의를위한 특수 파일이 없기 때문에 WSDL끝점을 사용하는 수동 작업입니다. 그러나 이제는 클라이언트 측 구현을 생성하기 위해 다른 IDE에 대한 많은 플러그인이 있기 때문에 큰 문제는 아닙니다.

SOA : 서비스 지향 아키텍처의 약자

웹 서비스 개념 및 아키텍처와 함께 모든 프로그래밍을 포함합니다. 대규모 애플리케이션을 구현하고 싶다고 가정 해보십시오. 한 가지 방법은 마이크로 서비스라고하는 다른 서비스를 가질 수 있으며 전체 애플리케이션 메커니즘은 필요한 웹 서비스를 적시에 호출하는 것입니다. 모두 RESTSOAP웹 서비스의 종류입니다 SOA.

JSON : 약자javascript Object Notation

자바 스크립트에 대한 개체를 직렬화 할 때 개체 형식의 유형은 JSON입니다. 인간 클래스가 있다고 상상해보십시오.

class Human{
 string Name;
 string Family;
 int Age;
}

이 클래스의 인스턴스가 있습니다.

Human h1 = new Human(){
  Name='Saman',
  Family='Gholami',
  Age=26
}

h1 객체를 JSON으로 직렬화하면 결과는 다음과 같습니다.

  [h1:{Name:'saman',Family:'Gholami',Age:'26'}, ...]

javascripteval()함수 별로이 형식을 평가하고이 JSON문자열 에서 연관 배열을 만들 수 있습니다. 이것은 이전에 설명한 다른 개념과 비교하여 다른 개념입니다.


이 답변에는 몇 가지 실수가 있습니다 (예 : HTML <> HTTP)
Yassin Hajaj

1
@YassinHajaj 고정
Saman Gholami
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.