반응형

픽셀 피치

픽셀 피치는 센서에서 픽셀 중심에서 픽셀 중심까지의 인접한 두 픽셀 사이의 거리입니다.

 

장점)

더 작은 픽셀 피치는 일반적으로 더 높은 해상도를 제공합니다. 그러나 일정한 해상도의 경우 픽셀 피치 감소는 센서 크기 감소를 의미하며, 이는 또한 더 작은 광학 장치를 사용할 수 있음을 의미합니다.

 

단점)

각 픽셀이 더 작아서 더 적은 에너지를 수신한다는 것입니다. 이는 차례로 열화상 카메라의 유효 감지 범위를 줄입니다. 궁극적으로 센서의 성능은 픽셀 크기보다 픽셀 디자인에 더 많이 의존합니다.

 

렌즈의 해상력을 측정하는 척도 MTF 그래프의 의미와 분석

렌즈의 성능을 평가하는 지표에는 해상력, 왜곡, 밝기 등이 있습니다. 이들 중 한 점에서 나온 수많은 광선들이 렌즈를 통과했을 때 얼마나 다른 한 지점으로 작게 모이느냐를 측정하는 지표는 해상력입니다. 한 점을 다른 한 점으로 잘 모을수록(해상력이 좋을수록) 이미지는 원본과 가까워집니다. 그림을 그릴 때 펜 촉이 얇을수록 세밀한 그림을 그릴 수 있는 것과 같은 원리입니다. 이 해상력을 측정하는 방법으로 MTF(Modulation Transfer Function)을 분석하게 됩니다.

 

기초개념

Lp/mm : 1mm 안에 들어 있는 검은색과 흰색의 줄무늬 쌍의 개수

) 10lp/mm, 1mm 안에 10개의 검은색, 10개의 흰색 띠가 교차되어 있는 패턴, 따라서 한 개 띄의 폭은 1/20mm = 50um이다.

 

MTF : 검은색, 흰색의 패턴, 100%의 컨트라스트를 가지는 임의의 lp/mm가 렌즈를 통과해 센서에 이미징 되었을 때, 그 이미지의 컨트라스트 수치를 lp/mm, 센서크기, 조리개에 따라 혹은 배율값 등에 따라 시뮬레이션해 놓은 그래프입니다.

Modulation(Constrast) = (Max Intensity – Min Intensity)/(Max Intensity + Min Intensity)

반응형
반응형

 

URI(Uniform Resource Identifiers)

URI란 통합 자원 식별자를 의미하며인터넷에 있는 자원을 나타내는 유일한 주소를 의미합니다.

URI의 존재는 인터넷에서 요구되는 기본조건으로서 인터넷 프로토콜에도 항상 명시됩니다.

가장 잘 알려진 URI로는 인터넷 도메인 주소를 나타내는 URL(Uniform Resource Locator)이 있습니다.

또 다른 URI로는 URN(Universal Resource Name)이 있습니다.

 

XML 네임스페이스(namespace)

XML 네임스페이스는 XML 요소 간의 이름에 대한 충돌을 방지해 주는 방법을 제공합니다.

XML 네임스페이스는 요소의 이름과 속성의 이름을 하나의 그룹으로 묶어주어 이름에 대한 충돌을 해결합니다.

 

이러한 XML 네임스페이스는 URI(Uniform Resource Identifiers)로 식별됩니다.

 

XML 요소 간의 이름 충돌

XML에서는 사용자가 XML 요소의 이름을 직접 정의합니다.

따라서 서로 다른 XML 문서를 통합하려고 할 때 같은 이름을 가진 요소로 인해 충돌이 발생할 수 있습니다.

 

예제 1

<body>

    <h1>html에서의 제목</h1>

    <p>html에서의 단락</p>

</body>

 

예제 2

<body>

    <arm>70</arm>

    <leg>110</leg>

</body>

 

위의 두 예제에서 <body>요소는 서로 완전히 다른 의미로 사용됩니다.

예제 1에서는 HTML 문서의 <body>태그로 사용되었습니다.

예제 2에서는 실제 몸을 의미하여, 각 신체 부위의 치수를 기록하기 위해 사용되었습니다.

하지만 사용자나 XML 응용 프로그램은 두 <body>요소의 이러한 차이점을 어떻게 다뤄야 하는지 알지 못합니다.

 

XML 네임스페이스의 선언

XML에서는 접두사(prefix)를 이용하여 위와 같은 이름의 충돌을 방지하고 있습니다.

서로 같은 이름에 요소마다 서로 다른 접두사를 붙이면 이름의 충돌을 방지할 수 있게 됩니다.

 

XML에서 이러한 접두사를 사용하려면, 반드시 먼저 접두사에 대한 네임스페이스를 선언해야 합니다.

 

XML에서 네임스페이스를 선언하는 문법은 다음과 같습니다.

 

문법

<요소이름 xmlns:prefix="URI">

 

XML 네임스페이스의 선언은 xmlns xmlns:로 시작합니다.

prefix 속성값에는 이름 앞에 붙게 되는 네임스페이스 접두사(namespace prefix)를 명시합니다.

접두사로 사용되는 URI 네임스페이스 식별자를 의미합니다.

 

예제

<root>

    <a:body xmlns:a="https://www.w3.org/TR/html5/">

        <a:h1>html에서의 제목</a:h1>

        <a:p>html에서의 단락</a:p>

    </a:body>

    <b:body xmlns:b="http://codingsam.com/xml/physical/">

        <b:arm>70</b:arm>

        <b:leg>110</b:leg>

    </b:body>

</root>

 

위의 예제에서 첫 번째 <body>요소의 xmlns 속성은 a:라는 접두사를 선언합니다.

두 번째 <body>요소의 xmlns 속성은 b:라는 접두사를 선언합니다.

 

이렇게 XML 요소에 네임스페이스가 선언되면, 해당 요소의 모든 자식(child) 요소에도 같은 네임스페이스가 선언됩니다.

이러한 네임스페이스 선언은 XML 루트(root) 요소에서도 선언할 수 있습니다.

 

예제

<root

    xmlns:a="https://www.w3.org/TR/html5/"

    xmlns:b="http://codingsam.com/xml/physical/">

    <a:body>

        <a:h1>html에서의 제목</a:h1>

        <a:p>html에서의 단락</a:p>

    </a:body>

    <b:body>

        <b:arm>70</b:arm>

        <b:leg>110</b:leg>

    </b:body>

</root>

반응형

'Onvif' 카테고리의 다른 글

SOAP 메시지 구조 -2  (0) 2022.10.19
SOAP 메시지 구조 -1  (0) 2022.10.18
SOAP(Simple Object Access Protocal)  (1) 2022.10.05
반응형

SOAP - 오류

 

처리 중 오류가 발생하면 SOAP 메시지에 대한 응답은 메시지 body SOAP 오류 요소이며 오류는 SOAP 메시지의 보낸 사람에게 반환됩니다.

SOAP 오류 메커니즘은 미리 정의된 코드, 설명 및 오류를 생성한 SOAP 프로세서의 주소를 포함하여 오류에 대한 특정 정보를 반환합니다.

 

주의 사항

·   SOAP 메시지는 하나의 오류 블록만 전달할 수 있습니다.

·   결함은 SOAP 메시지의 선택적 부분입니다.

·   HTTP 바인딩의 경우 성공적인 응답은 200~299 범위의 상태 코드에 연결됩니다.

·   SOAP 결함은 500~599 범위의 상태 코드와 연결됩니다.

 

결함의 하위 요소

SOAP 오류에는 다음과 같은 하위 요소가 있습니다.

Sr.No 하위 요소 및 설명
1 <faultCode>
오류 클래스를 나타내는 데 사용되는 텍스트 코드입니다사전 정의된 오류 코드 목록은 다음 표를 참조하십시오.
2 <faultString>
오류를 설명하는 문자 메시지입니다.
3 <faultActor>
누가 오류를 일으켰는지 나타내는 텍스트 문자열입니다. SOAP 메시지가 SOAP 메시지 경로의 여러 노드를 통해 이동하고 클라이언트가 오류를 일으킨 노드를 알아야 하는 경우에 유용합니다최종 목적지로 작동하지 않는 노드는 
faultActor 
요소를 포함해야 합니다.
4 <detail>
응용 프로그램별 오류 메시지를 전달하는 데 사용되는 요소입니다상세 요소는 상세 항목이라는 하위 요소를 포함할 수 있습니다.

 

SOAP 오류 코드

아래에 정의된 faultCode 값은 오류를 설명하는 동안 faultcode 요소에 사용해야 합니다.

Sr.No 오류 및 설명
1 SOAP-ENV:VersionMismatch
SOAP envelope 요소에 대해 잘못된 네임스페이스를 찾았습니다.
2 SOAP-ENV:MustUnderstand
mustUnderstand 속성이 "1"로 설정된 Header 요소의 직계 자식 요소를 이해하지 못했습니다.
3 SOAP-ENV:Client
메시지 형식이 잘못되었거나 잘못된 정보가 포함되어 있습니다.
4 SOAP-ENV:Server
서버에 문제가 있어 메시지를 진행할 수 없습니다.

 

SOAP 오류 예

다음 코드는 샘플 오류입니다클라이언트가 ValidateCreditCard 라는 메서드를 요청했지만 서비스는 이러한 메서드를 지원하지 않습니다이것은 클라이언트 요청 오류를 나타내며 서버는 다음 SOAP 응답을 반환합니다.

 

<?xml version = '1.0' encoding = 'UTF-8'?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:xsi = "http://www.w3.org/1999/XMLSchema-instance"
   xmlns:xsd = "http://www.w3.org/1999/XMLSchema">

   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
         <faultcode xsi:type = "xsd:string">SOAP-ENV:Client</faultcode>
         <faultstring xsi:type = "xsd:string">
            Failed to locate method (ValidateCreditCard) in class (examplesCreditCard) at
               /usr/local/ActivePerl-5.6/lib/site_perl/5.6.0/SOAP/Lite.pm line 1555.
         </faultstring>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

SOAP - 인코딩

SOAP에는 데이터 유형을 인코딩하기 위한 기본 제공 규칙 세트가 포함되어 있습니다이를 통해 SOAP 메시지는 integer, float, double 또는 array와 같은 특정 데이터 유형을 나타낼 수 있습니다.

 

·   SOAP 데이터 유형은 스칼라 유형과 복합 유형의 두 가지 광범위한 범주로 나뉩니다.

·   스칼라 유형에는 이름, 가격 또는 제품 설명과 같은 정확히 하나의 값이 포함됩니다.

·   복합 유형에는 구매 주문서 또는 주식 시세 목록과 같은 여러 값이 포함됩니다.

·   복합 유형은 배열과 구조체로 더 세분화됩니다.

·   SOAP 메시지의 인코딩 스타일은 SOAP-ENV:encodingStyle 속성을 통해 설정됩니다.

·   SOAP 1.1 인코딩을 사용하려면 http://schemas.xmlsoap.org/soap/encoding/ 값을 사용하십시오.

·   SOAP 1.2 인코딩을 사용하려면 http://www.w3.org/2001/12/soap-encoding 값을 사용하십시오.

·   최신 SOAP 사양은 XML Schema에 의해 정의된 모든 내장 유형을 채택합니다여전히 SOAP는 배열 및 참조와 같이

 

XML 스키마에 의해 표준화되지 않은 구성을 정의하기 위한 고유한 규칙을 유지합니다.

 

스칼라 유형

스칼라 유형의 경우 SOAP XML 스키마 사양에 지정된 모든 기본 제공 단순 유형을 채택합니다여기에는 string, float, double integer가 포함됩니다.

 

다음 표는 XML 스키마 파트 0 - 입문서 http://www.w3.org/TR/2000/WD-xmlschema-0-20000407/ 에서 발췌한 주요 단순 유형을 나열합니다.

XML 스키마에 내장된 단순 유형
단순형  
string Confirm this is electric.  
boolean true, false, 1, 0.  
float -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN.  
double -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN.  
decimal -1.23, 0, 123.4, 1000.00.  
binary 100010  
integer -126789, -1, 0, 1, 126789.  
nonPositiveInteger -126789, -1, 0.  
negativeInteger -126789, -1.  
long -1, 12678967543233  
int -1, 126789675  
short -1, 12678  
byte -1, 126  
nonNegativeInteger 0, 1, 126789  
unsignedLong 0, 12678967543233  
unsignedInt 0, 1267896754  
unsignedShort 0, 12678  
unsignedByte 0, 126  
positiveInteger 1, 126789.  
date 1999-05-31, ---05.  
time 13:20:00.000, 13:20:00.000-05:00  

 

예를 들어, 다음은 이중 데이터 유형의 SOAP 응답입니다.

<?xml version = '1.0' encoding = 'UTF-8'?>
<SOAP-ENV:Envelope 
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
   
   <SOAP-ENV:Body>
      <ns1:getPriceResponse 
         xmlns:ns1 = "urn:examples:priceservice"  
         SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding">
         <return xsi:type = "xsd:double">54.99</return>
      </ns1:getPriceResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

복합 유형

SOAP 배열에는 요소 유형과 배열 크기를 모두 지정해야 하는 매우 구체적인 규칙 집합이 있습니다. SOAP는 다차원 배열도 지원하지만 모든 SOAP 구현이 다차원 기능을 지원하는 것은 아닙니다.

배열을 생성하려면 배열의 xsi:type 으로 지정해야 합니다 . 배열에는 arrayType 속성도 포함되어야 합니다이 속성은 포함된 요소의 데이터 유형과 배열의 차원을 지정하는 데 필요합니다.

 

예를 들어 다음 속성은 10개의 이중 값 배열을 지정합니다.

arrayType = "xsd:double[10]"

대조적으로 다음 속성은 문자열의 2차원 배열을 지정합니다.

arrayType = "xsd:string[5,5]"

다음은 이중 값 배열이 있는 샘플 SOAP 응답입니다.

<?xml version = '1.0' encoding = 'UTF-8'?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:xsd = "http://www.w3.org/2001/XMLSchema">

   <SOAP-ENV:Body>
      <ns1:getPriceListResponse 
         xmlns:ns1 = "urn:examples:pricelistservice"  
         SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding">

         <return xmlns:ns2 = "http://www.w3.org/2001/09/soap-encoding"  
            xsi:type = "ns2:Array" ns2:arrayType = "xsd:double[2]">
            <item xsi:type = "xsd:double">54.99</item>
            <item xsi:type = "xsd:double">19.99</item>
         </return>
      </ns1:getPriceListResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

구조체에는 여러 값이 포함되지만 각 요소는 고유한 접근자 요소로 지정됩니다예를 들어, 제품 카탈로그 내의 항목을 고려하십시오이 경우 구조체에는 제품 SKU, 제품 이름, 설명 및 가격이 포함될 수 있습니다다음은 그러한 구조체가 SOAP 메시지에서 표현되는 방법입니다.

<?xml version = '1.0' encoding = 'UTF-8'?>
<SOAP-ENV:Envelope 
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:xsd = "http://www.w3.org/2001/XMLSchema">

   <SOAP-ENV:Body>
      <ns1:getProductResponse
         xmlns:ns1 = "urn:examples:productservice" 
         SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding">

         <return xmlns:ns2 = "urn:examples" xsi:type = "ns2:product">
            <name xsi:type = "xsd:string">Red Hat Linux</name>
            <price xsi:type = "xsd:double">54.99</price>
            <description xsi:type = "xsd:string">
               Red Hat Linux Operating System
            </description>
            <SKU xsi:type = "xsd:string">A358185</SKU>
         </return>
      </ns1:getProductResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

참고 - SOAP 코드를 작성하는 동안 적절한 들여쓰기에 주의하십시오구조체의 각 요소는 고유한 접근자 이름으로 지정됩니다예를 들어 위의 메시지에는 이름, 가격, 설명 및 SKU의 네 가지 접근 요소가 포함됩니다각 요소는 고유한 데이터 유형을 가질 수 있습니다예를 들어 name은 문자열로 지정되고 price double로 지정됩니다.

 

SOAP - 전송

SOAP는 전송 프로토콜에 연결되어 있지 않습니다. SOAP SMTP, FTP, IBM MQSeries 또는 MSMQ(Microsoft Message Queuing)를 통해 전송할 수 있습니다.

SOAP 사양에는 HTTP에 대한 세부 정보만 포함됩니다. HTTP는 가장 널리 사용되는 SOAP 전송 프로토콜로 남아 있습니다.

 

HTTP를 통한 SOAP

논리적으로 SOAP 요청은 HTTP 요청을 통해 전송되고 SOAP 응답은 HTTP 응답의 내용 내에서 반환됩니다. SOAP 요청은 HTTP GET을 통해 보낼 수 있지만 사양에는 HTTP POST에 대한 세부 정보만 포함되어 있습니다.

또한 콘텐츠 유형을 text/xml로 설정하려면 HTTP 요청과 응답이 모두 필요합니다.

SOAP 사양은 클라이언트가 SOAPAction 헤더를 제공해야 한다고 요구 하지만 SOAPAction 헤더의 실제 값은 SOAP 서버 구현에 따라 다릅니다.

 

예를 들어, XMethods에서 호스팅하는 AltaVista BabelFish 번역 서비스에 액세스하려면 다음을 SOAPAction 헤더로 지정해야 합니다.

urn:xmethodsBabelFish#BabelFish

서버에 전체 SOAPAction 헤더가 필요하지 않더라도 클라이언트는 빈 문자열("") 또는 null 값을 지정해야 합니다예를 들어 -

SOAPAction: ""
SOAPAction:

 

다음은 HTTP를 통해 XMethods Babelfish 번역 서비스로 전송된 샘플 요청입니다.

POST /perl/soaplite.cgi HTTP/1.0
Host: services.xmethods.com
Content-Type: text/xml; charset = utf-8
Content-Length: 538
SOAPAction: "urn:xmethodsBabelFish#BabelFish"

<?xml version = '1.0' encoding = 'UTF-8'?>
<SOAP-ENV:Envelope 
   xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/" 
   xmlns:xsi = "http://www.w3.org/1999/XMLSchema-instance"
   xmlns:xsd = "http://www.w3.org/1999/XMLSchema">

   <SOAP-ENV:Body>
      <ns1:BabelFish
         xmlns:ns1 = "urn:xmethodsBabelFish"
         SOAP-ENV:encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/">
         <translationmode xsi:type = "xsd:string">en_fr</translationmode>
         <sourcedata xsi:type = "xsd:string">Hello, world!</sourcedata>
      </ns1:BabelFish>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

컨텐츠 유형 및 SOAPAction 헤더를 확인하십시오또한 BabelFish 메서드에는 두 개의 String 매개변수가 필요합니다번역 모드 en_fr은 영어에서 프랑스어로 번역합니다.

 

다음은 XMethods의 응답입니다.

HTTP/1.1 200 OK
Date: Sat, 09 Jun 2001 15:01:55 GMT
Server: Apache/1.3.14 (Unix) tomcat/1.0 PHP/4.0.1pl2
SOAPServer: SOAP::Lite/Perl/0.50
Cache-Control: s-maxage = 60, proxy-revalidate
Content-Length: 539
Content-Type: text/xml

<?xml version = "1.0" encoding = "UTF-8"?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENC = "http://schemas.xmlsoap.org/soap/encoding/"
   SOAP-ENV:encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:xsi = "http://www.w3.org/1999/XMLSchema-instance"
   xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:xsd = "http://www.w3.org/1999/XMLSchema">
   
   <SOAP-ENV:Body>
      <namesp1:BabelFishResponse xmlns:namesp1 = "urn:xmethodsBabelFish">
         <return xsi:type = "xsd:string">Bonjour, monde!</return>
      </namesp1:BabelFishResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

HTTP를 통해 전달되는 SOAP 응답은 동일한 HTTP 상태 코드를 따라야 합니다예를 들어 상태 코드 200 OK는 성공적인 응답을 나타냅니다상태 코드 500 내부 서버 오류는 서버 오류가 있고 SOAP 응답에 Fault 요소가 포함되어 있음을 나타냅니다.

 

SOAP -

아래 예에서 GetQuotation 요청은 HTTP를 통해 SOAP 서버로 전송됩니다요청에 QuotationName 매개변수가 있으며 응답으로 견적이 반환됩니다.

함수의 네임스페이스는 http://www.xyz.org/quotation 주소에 정의되어 있습니다.

다음은 SOAP 요청입니다.

 

POST /Quotation HTTP/1.0
Host: www.xyz.org
Content-Type: text/xml; charset = utf-8
Content-Length: nnn

<?xml version = "1.0"?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope"
   SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding">

   <SOAP-ENV:Body xmlns:m = "http://www.xyz.org/quotations">
      <m:GetQuotation>
         <m:QuotationsName>MiscroSoft</m:QuotationsName>
      </m:GetQuotation>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

해당 SOAP 응답은 다음과 같습니다.

HTTP/1.0 200 OK
Content-Type: text/xml; charset = utf-8
Content-Length: nnn

<?xml version = "1.0"?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope"
   SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding">

   <SOAP-ENV:Body xmlns:m = "http://www.xyz.org/quotation">
      <m:GetQuotationResponse>
         <m:Quotation>Here is the quotation</m:Quotation>
      </m:GetQuotationResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

SOAP - 표준

SOAP 1.1은 원래 2000 5월에 W3C에 제출되었습니다. 공식 제출자에는 Microsoft, IBM, Ariba와 같은 대기업과 UserLand Software DevelopMento와 같은 소규모 회사가 포함되었습니다.

2001 7 XML 프로토콜 작업 그룹은 SOAP 1.2 "작업 초안"을 발표했습니다. W3C 내에서 이 문서는 공식적으로 진행 중인 작업입니다. , 문서가 완성되기 전에 여러 번 업데이트될 가능성이 있습니다.

SOAP 버전 1.1 http://www.w3.org/TR/SOAP/ 에서 온라인으로 사용할 있습니다.

SOAP 버전 1.2의 작업 초안은 http://www.w3.org/TR/soap12/ 에서 있습니다.

W3C는 또한 핵심 SOAP 사양에서 분리되는 "첨부 파일이 있는 SOAP 메시지"에 대한 제출을 호스팅합니다이 사양을 사용하면 SOAP 메시지에 이미지 및 사운드 파일과 같은 이진 첨부 파일이 포함될 수 있습니다자세한 내용은 http://www.w3.org/TR/SOAP-attachments 에서 W3C 참고 사항을 참조하십시오.

 

반응형

'Onvif' 카테고리의 다른 글

XML 네임스페이스  (0) 2022.10.20
SOAP 메시지 구조 -1  (0) 2022.10.18
SOAP(Simple Object Access Protocal)  (1) 2022.10.05
반응형

SOAP의 특징을 다시 한번 정리하면 다음과 같습니다.

 

·  SOAP는 인터넷을 통해 통신하도록 설계된 통신 프로토콜입니다.

·  SOAP XML 메시징을 위해 HTTP를 확장할 수 있습니다.

·  SOAP는 웹 서비스에 대한 데이터 전송을 제공합니다.

·  SOAP는 완전한 문서를 교환하거나 원격 프로시저를 호출할 수 있습니다.

·  SOAP는 메시지를 브로드캐스트하는데 사용할 수 있습니다.

·  SOAP는 플랫폼과 언어에 독립적입니다.

·  SOAP는 전송되는 정보와 방법을 정의하는 XML 방식입니다.

·  SOAP를 사용하면 클라이언트 응용 프로그램이 원격 서비스에 쉽게 연결하고 원격 메서드를 호출할 수 있습니다.

 

SOAP - 메시지 구조

SOAP 메시지는 다음 요소를 포함하는 일반 XML 문서입니다.

·  Envelope - 메시지의 시작과 끝을 정의합니다필수 요소입니다.

·  Header - 중간 지점이나 궁극적인 끝 지점에서 메시지 처리에 사용되는 메시지의 선택적 속성을 포함합니다선택적 요소입니다.

·  Body - 전송되는 메시지를 구성하는 XML 데이터를 포함합니다필수 요소입니다.

·  Fault - 메시지를 처리하는 동안 발생하는 오류에 대한 정보를 제공하는 선택적 Fault 요소입니다.

 

이러한 모든 요소는 SOAP envolope의 기본 네임스페이스http://www.w3.org/2001/12/soap-envelope )에 선언되어 있으며 SOAP 인코딩 및 데이터 유형의 기본 네임스페이스는 다음과 같습니다http://www.w3.org/2001/12/soap-encoding

 

참고 - 이 모든 사양은 변경될 수 있습니다따라서 W3 웹사이트에서 제공되는 최신 사양으로 계속 업데이트해야합니다.

 

SOAP 메시지 구조

다음 블록은 SOAP 메시지의 일반 구조를 나타냅니다.

 

<?xml version = "1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope" 
   SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding">

   <SOAP-ENV:Header>
      ...
      ...
   </SOAP-ENV:Header>
   <SOAP-ENV:Body>
      ...
      ...
      <SOAP-ENV:Fault>
         ...
         ...
      </SOAP-ENV:Fault>
      ...
   </SOAP-ENV:Body>
</SOAP_ENV:Envelope>

 

SOAP - envelope

SOAP envelope는 메시지의 시작과 끝을 나타내므로 수신자는 전체 메시지가 언제 수신되었는지 알 수 있습니다. SOAP envelope는 메시지 수신을 완료하고 처리할 준비가 된 시점을 아는 문제를 해결합니다따라서 SOAP envelope는 기본적으로 패키징 메커니즘입니다.

 

주의 사항

·  모든 SOAP 메시지에는 root Envelope 요소가 있습니다.

·  envelope SOAP 메시지의 필수 부분입니다.

·  모든 Envelope 요소는 정확히 하나의 Body 요소를 포함해야 합니다.

·  Envelope Header 요소가 포함되어 있는 경우에는 하나만 포함해야 하며, Body 앞에 Envelope의 첫 번째 자식으로 나타나야 합니다.

·  SOAP 버전이 변경되면 envelope가 변경됩니다.

·  SOAP envelope ENV 네임스페이스 접두사와 Envelope요소를 사용하여 지정됩니다.

·  선택적 SOAP 인코딩은 또한 네임스페이스 이름과 선택적 encodingStyle 요소를 사용하여 지정되며, 이는 SOAP 이외의 인코딩 스타일을 가리킬 수도 있습니다.

·   v1.1 호환 SOAP 프로세서는 v1.2 envelope 이름 공간이 포함된 메시지를 수신하면 오류를 생성합니다.

·   v1.2 호환 SOAP 프로세서는 v1.2 envelope 네임스페이스가 포함되지 않은 메시지를 수신하는 경우 VersionMismatch 오류를 생성합니다.

 

v1.2 호환 SOAP 메시지

다음은 v1.2 호환 SOAP 메시지의 예입니다.

 

<?xml version = "1.0"?>
<SOAP-ENV:Envelope 
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope" 
   SOAP-ENV:encodingStyle = " http://www.w3.org/2001/12/soap-encoding">
   ...
   Message information goes here
   ...
</SOAP-ENV:Envelope>

 

HTTP POST가 있는 SOAP

다음 예에서는 서버로 메시지를 보내는 HTTP POST 작업 내에서 SOAP 메시지를 사용하는 방법을 보여줍니다. envelope 스키마 정의 및 인코딩 규칙의 스키마 정의에 대한 네임스페이스를 보여줍니다. HTTP헤더의 OrderEntry 참조는 tutorialspoint.com 웹 사이트에서 호출할 프로그램의 이름입니다.

 

POST /OrderEntry HTTP/1.1
Host: www.tutorialspoint.com
Content-Type: application/soap; charset = "utf-8"
Content-Length: nnnn

<?xml version = "1.0"?>
<SOAP-ENV:Envelope 
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope" 
   SOAP-ENV:encodingStyle = " http://www.w3.org/2001/12/soap-encoding">
   ...
   Message information goes here
   ...
</SOAP-ENV:Envelope>

참고 - HTTP 바인딩은 서비스의 위치를 ​​지정합니다.

 

SOAP - 헤더

선택적 Header 요소는 추가 응용 프로그램 수준 요구 사항을 지정하기 위한 유연한 프레임워크를 제공합니다예를 들어 Header 요소를 사용하여 암호로 보호된 서비스에 대한 디지털 서명을 지정할 수 있습니다마찬가지로, Envelope SOAP 서비스에 대한 계정 번호를 지정하는데 사용할 수 있습니다.

 

주의 사항

·  SOAP 메시지의 선택적 부분입니다.

·  헤더 요소는 여러 번 나타날 수 있습니다.

·  헤더는 새로운 기능을 추가하기 위한 것입니다.

·  SOAP 헤더에는 네임스페이스에 정의된 헤더 항목이 포함되어 있습니다.

·  헤더는 SOAP envelope의 첫 번째 직계 자식 요소로 인코딩됩니다.

·  여러 헤더가 정의되면 SOAP 헤더의 모든 직계 자식 요소가 SOAP 헤더 블록으로 해석됩니다.

 

SOAP 헤더 속성

SOAP 헤더는 다음과 같은 두 가지 속성을 가질 수 있습니다.

 

Actor 속성

SOAP 프로토콜은 메시지 경로를 SOAP 서비스 노드 목록으로 정의합니다이러한 중간 노드 각각은 일부 처리를 수행한 다음 메시지를 체인의 다음 노드로 전달할 수 있습니다. Actor 속성을 설정함으로써 클라이언트는 SOAP 헤더의 수신자를 지정할 수 있습니다.

 

MustUnderstand 속성

헤더 요소가 선택 사항인지 필수 항목인지 나타냅니다. true로 설정하면 수신자는 정의된 의미 체계에 따라 헤더 속성을 이해하고 처리하거나 오류를 반환해야 합니다.

 

다음 예는 SOAP 메시지에서 헤더를 사용하는 방법을 보여줍니다.

 

<?xml version = "1.0"?>
<SOAP-ENV:Envelope 
   xmlns:SOAP-ENV = " http://www.w3.org/2001/12/soap-envelope"   
   SOAP-ENV:encodingStyle = " http://www.w3.org/2001/12/soap-encoding">

   <SOAP-ENV:Header>
      <t:Transaction 
         xmlns:t = "http://www.tutorialspoint.com/transaction/" 
         SOAP-ENV:mustUnderstand = "true">5
      </t:Transaction>
   </SOAP-ENV:Header>
   ...
   ...
</SOAP-ENV:Envelope>

 

SOAP – Body

SOAP body SOAP 메시지에서 교환되는 응용 프로그램 정의 XML 데이터를 포함하는 필수 요소입니다본문은 envelope 내에 포함되어야 하며 메시지에 대해 정의될 수 있는 모든 헤더를 따라야 합니다.

Bodyenvelope의 자식 요소로 정의되고 body에 대한 의미는 연관된 SOAP 스키마에 정의됩니다.

body에는 메시지의 최종 수신자를 위한 필수 정보가 포함되어 있습니다

 

<?xml version = "1.0"?>
<SOAP-ENV:Envelope>
   ........
   <SOAP-ENV:Body>
      <m:GetQuotation xmlns:m = "http://www.tp.com/Quotation">
         <m:Item>Computers</m:Item>
      </m:GetQuotation>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

위의 예는 컴퓨터 세트의 견적을 요청합니다위의 m:GetQuotation Item 요소는 응용 프로그램별 요소입니다. SOAP 표준의 일부가 아닙니다.

 

다음은 위의 쿼리에 대한 응답입니다.

 

<?xml version = "1.0"?>
<SOAP-ENV:Envelope>
   ........
   <SOAP-ENV:Body>
      <m:GetQuotationResponse xmlns:m = "http://www.tp.com/Quotation">
         <m:Quotation>This is Qutation</m:Quotation>
      </m:GetQuotationResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

일반적으로 응용 프로그램은 요청 및 응답 요소와 관련된 의미 체계를 포함하는 스키마도 정의합니다.

견적 서비스는 애플리케이션 서버에서 실행되는 EJB를 사용하여 구현될 수 있습니다그렇다면 SOAP 프로세서는 GetQuotationResponse 서비스의 EJB 구현 안팎으로 매개변수로 본문 정보를 매핑해야 합니다. SOAP 프로세서는 본문 정보를 .NET 개체, CORBA 개체, COBOL 프로그램 등에 매핑할 수도 있습니다.

반응형

'Onvif' 카테고리의 다른 글

XML 네임스페이스  (0) 2022.10.20
SOAP 메시지 구조 -2  (0) 2022.10.19
SOAP(Simple Object Access Protocal)  (1) 2022.10.05

+ Recent posts