XML ဆပ်ပြာ
- SOAP သည် S imple O bject A ccess P rotocol ကို ကိုယ်စားပြုသည်။
- SOAP သည် အပလီကေးရှင်းဆက်သွယ်ရေးပရိုတိုကောတစ်ခုဖြစ်သည်။
- SOAP သည် စာတိုပေးပို့ခြင်းနှင့် လက်ခံခြင်းအတွက် ဖော်မတ်တစ်ခုဖြစ်သည်။
- ဆပ်ပြာသည် ပလပ်ဖောင်း သီးခြားဖြစ်သည်။
- SOAP သည် XML ကိုအခြေခံသည်။
- SOAP သည် W3C အကြံပြုချက်ဖြစ်သည်။
ဆပ်ပြာ ဘာကြောင့်သုံးတာလဲ။
အင်တာနက်ပေါ်တွင် ဆက်သွယ်ပြောဆိုနိုင်ရန် ဝဘ်အက်ပလီကေးရှင်းများအတွက် အရေးကြီးပါသည်။
အက်ပလီကေးရှင်းများအကြား ဆက်သွယ်ရန် အကောင်းဆုံးနည်းလမ်းမှာ HTTP ထက်ဖြစ်ပြီး HTTP ကို အင်တာနက်ဘရောက်ဆာများနှင့် ဆာဗာများအားလုံးက ပံ့ပိုးပေးသောကြောင့် ဖြစ်သည်။ ယင်းကို ပြီးမြောက်စေရန်အတွက် SOAP ကို ဖန်တီးခဲ့သည်။
SOAP သည် မတူညီသောနည်းပညာများနှင့် ပရိုဂရမ်းမင်းဘာသာစကားများဖြင့် မတူညီသောလည်ပတ်မှုစနစ်များပေါ်တွင် လုပ်ဆောင်နေသော အပလီကေးရှင်းများအကြား ဆက်သွယ်ရန်နည်းလမ်းကို ပံ့ပိုးပေးပါသည်။
ဆပ်ပြာရည်များ တည်ဆောက်ခြင်း။
SOAP မက်ဆေ့ချ်သည် အောက်ပါအချက်များပါဝင်သော သာမန် XML စာရွက်စာတမ်းတစ်ခုဖြစ်သည်။
- XML စာရွက်စာတမ်းကို SOAP မက်ဆေ့ဂျ်အဖြစ် သတ်မှတ်သည့် စာအိတ်ဒြပ်စင်တစ်ခု
- ခေါင်းစီးအချက်အလက်ပါရှိသော ခေါင်းစီးဒြပ်စင်
- ခေါ်ဆိုမှုနှင့် တုံ့ပြန်မှုဆိုင်ရာ အချက်အလက်ပါရှိသော ကိုယ်ထည်အစိတ်အပိုင်းတစ်ခု
- အမှားအယွင်းများနှင့် အခြေအနေအချက်အလက်ပါရှိသော အမှားအယွင်းဒြပ်စင်
အထက်ဖော်ပြပါ အစိတ်အပိုင်းအားလုံးကို SOAP စာအိတ်အတွက် မူရင်းအမည်နေရာ၌ ကြေငြာထားသည်-
http://www.w3.org/2003/05/soap-envelope/
နှင့် SOAP ကုဒ်သွင်းခြင်းနှင့် ဒေတာအမျိုးအစားများအတွက် မူရင်း namespace မှာ-
http://www.w3.org/2003/05/soap-encoding
Syntax စည်းမျဉ်းများ
ဤသည်မှာ အရေးကြီးသော syntax စည်းမျဉ်းအချို့ဖြစ်သည်-
- SOAP မက်ဆေ့ဂျ်ကို XML ကို အသုံးပြု၍ ကုဒ်လုပ်ထားရပါမည်။
- ဆပ်ပြာစာတစ်စောင်သည် SOAP စာအိတ်အမည်နေရာကို အသုံးပြုရပါမည်။
- SOAP မက်ဆေ့ဂျ်တွင် DTD ရည်ညွှန်းချက် မပါဝင်ရပါ။
- SOAP မက်ဆေ့ဂျ်တွင် XML လုပ်ဆောင်ခြင်းဆိုင်ရာ ညွှန်ကြားချက်များ မပါဝင်ရပါ။
အရိုးစုဆပ်ပြာ Message
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Header>
...
</soap:Header>
<soap:Body>
...
<soap:Fault>
...
</soap:Fault>
</soap:Body>
</soap:Envelope>
ဆပ်ပြာစာအိတ် အစိတ်အပိုင်း
လိုအပ်သော SOAP စာအိတ်ဒြပ်စင်သည် SOAP မက်ဆေ့ဂျ်တစ်ခု၏ အမြစ်ဒြပ်စင်ဖြစ်သည်။ ဤအရာသည် XML စာရွက်စာတမ်းအား SOAP မက်ဆေ့ဂျ်အဖြစ် သတ်မှတ်သည်။
ဥပမာ
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
...
Message information goes here
...
</soap:Envelope>
xmlns:ဆပ်ပြာ Namespace
အပေါ်က ဥပမာမှာ xmlns:soap namespace ကို သတိပြုပါ။ ၎င်းသည် "http://www.w3.org/2003/05/soap-envelope/" ၏တန်ဖိုးအမြဲရှိသင့်သည်။
namespace သည် စာအိတ်ကို SOAP စာအိတ်အဖြစ် သတ်မှတ်သည်။
မတူညီသော namespace ကိုအသုံးပြုပါက၊ အပလီကေးရှင်းသည် အမှားတစ်ခုဖန်တီးပြီး မက်ဆေ့ချ်ကို စွန့်ပစ်ပါ။
encodingStyle Attribute
encodingStyle attribute ကို document တွင်အသုံးပြုသည့်ဒေတာအမျိုးအစားများကိုသတ်မှတ်ရန်အသုံးပြုသည်။ ဤရည်ညွှန်းချက်သည် မည်သည့် SOAP ဒြပ်စင်ပေါ်တွင် ပေါ်လာနိုင်ပြီး ဒြပ်စင်၏ အကြောင်းအရာများနှင့် ကလေးဒြပ်စင်များအားလုံးနှင့် သက်ဆိုင်ပါသည်။
SOAP မက်ဆေ့ဂျ်တွင် ပုံသေ ကုဒ်နံပါတ်မရှိပါ။
အထားအသို
soap:encodingStyle="URI"
ဥပမာ
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
...
Message information goes here
...
</soap:Envelope>
SOAP ခေါင်းစီးဒြပ်စင်
စိတ်ကြိုက်ရွေးချယ်နိုင်သော SOAP ခေါင်းစီးဒြပ်စင်တွင် SOAP မက်ဆေ့ဂျ်အကြောင်း အပလီကေးရှင်းဆိုင်ရာ သီးခြားအချက်အလက်များ (စစ်မှန်ကြောင်းအထောက်အထားပြခြင်း၊ ငွေပေးချေမှုစသည်ဖြင့်) ပါရှိသည်။
ခေါင်းစီးဒြပ်စင်ရှိနေပါက၊ ၎င်းသည် စာအိတ်ဒြပ်စင်၏ ပထမကလေးဒြပ်စင်ဖြစ်ရမည်။
မှတ်ချက်- ခေါင်းစီးဒြပ်စင်၏ လက်ငင်းကလေးအစိတ်အပိုင်းအားလုံးသည် namespace-အရည်အချင်းပြည့်မီရပါမည်။
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Header>
<m:Trans xmlns:m="https://www.w3schools.com/transaction/"
soap:mustUnderstand="1">234
</m:Trans>
</soap:Header>
...
...
</soap:Envelope>
အထက်ဖော်ပြပါ ဥပမာတွင် "Trans" ဒြပ်စင်ပါရှိသော ခေါင်းစီးတစ်ခု၊ တန်ဖိုး 1 ရှိသော "နားလည်ရမည်" ရည်ညွှန်းချက်နှင့် တန်ဖိုး 234 ပါရှိသည်။
SOAP သည် မူရင်း namespace တွင် attribute သုံးခုကို သတ်မှတ်သည်။ ဤအရည်အချင်းများသည်- နားလည်ရမည်၊ သရုပ်ဆောင်မှုနှင့် ကုဒ်သွင်းမှုပုံစံ။
SOAP Header တွင် သတ်မှတ်ထားသော အရည်အချင်းများသည် လက်ခံသူသည် SOAP မက်ဆေ့ချ်ကို မည်သို့လုပ်ဆောင်သင့်သည်ကို သတ်မှတ်သည်။
မဖြစ်မနေနားလည်ရမည့်အရည်အချင်း
SOAP mustUnderstand ရည်ညွှန်းချက်ကို အသုံးပြု၍ ခေါင်းစီးဝင်ရောက်မှုသည် မဖြစ်မနေလုပ်ဆောင်ရန် သို့မဟုတ် လက်ခံသူအတွက် ရွေးချယ်ခွင့်ရှိမရှိ ညွှန်ပြရန် အသုံးပြုနိုင်သည်။
ခေါင်းစီးဒြပ်စင်၏ ကလေးဒြပ်စင်တစ်ခုသို့ mustUnderstand="1" ကို ထည့်ပါက၊ ၎င်းသည် ခေါင်းစီးကို လုပ်ဆောင်နေသည့် လက်ခံသူသည် အဆိုပါဒြပ်စင်ကို အသိအမှတ်ပြုရမည်ကို ညွှန်ပြသည်။ လက်ခံသူသည် ဒြပ်စင်ကို အသိအမှတ်မပြုပါက Header ကို လုပ်ဆောင်သည့်အခါတွင် ပျက်ကွက်မည်ဖြစ်သည်။
အထားအသို
soap:mustUnderstand="0|1"
ဥပမာ
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Header>
<m:Trans xmlns:m="https://www.w3schools.com/transaction/"
soap:mustUnderstand="1">234
</m:Trans>
</soap:Header>
...
...
</soap:Envelope>
မင်းသားက Attribute ပါ။
SOAP မက်ဆေ့ချ်တစ်ခုသည် မက်ဆေ့ချ်လမ်းကြောင်းတစ်လျှောက် မတူညီသော အဆုံးအမှတ်များကို ဖြတ်သန်းခြင်းဖြင့် ပေးပို့သူမှ လက်ခံသူထံသို့ ပို့ဆောင်နိုင်သည်။ သို့သော်၊ SOAP မက်ဆေ့ဂျ်တစ်ခု၏ အစိတ်အပိုင်းအားလုံးကို အဆုံးစွန်ဆုံးမှတ်အတွက် ရည်ရွယ်ခြင်းမဟုတ်ပါ၊ ယင်းအစား ၎င်းသည် မက်ဆေ့ချ်လမ်းကြောင်းရှိ အဆုံးမှတ်တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသောအတွက် ရည်ရွယ်နိုင်သည်။
SOAP သရုပ်ဆောင်ရည်ညွှန်းချက်ကို ခေါင်းစီးဒြပ်စင်အား တိကျသောအဆုံးမှတ်တစ်ခုသို့ ကိုင်တွယ်ဖြေရှင်းရန် အသုံးပြုသည်။
အထားအသို
soap:actor="URI"
ဥပမာ
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Header>
<m:Trans xmlns:m="https://www.w3schools.com/transaction/"
soap:actor="https://www.w3schools.com/code/">234
</m:Trans>
</soap:Header>
...
...
</soap:Envelope>
encodingStyle Attribute
encodingStyle attribute ကို document တွင်အသုံးပြုသည့်ဒေတာအမျိုးအစားများကိုသတ်မှတ်ရန်အသုံးပြုသည်။ ဤရည်ညွှန်းချက်သည် မည်သည့် SOAP ဒြပ်စင်ပေါ်တွင် ပေါ်လာနိုင်သည်၊ ၎င်းသည် ထိုဒြပ်စင်၏ အကြောင်းအရာများနှင့် ကလေးဒြပ်စင်များအားလုံးတွင် သက်ရောက်မည်ဖြစ်သည်။
SOAP မက်ဆေ့ဂျ်တွင် ပုံသေ ကုဒ်နံပါတ်မရှိပါ။
အထားအသို
soap:encodingStyle="URI"
ဆပ်ပြာကိုယ်ထည်ဒြပ်စင်
လိုအပ်သော SOAP ကိုယ်ထည်ဒြပ်စင်တွင် မက်ဆေ့ချ်၏ အဆုံးစွန်ဆုံးနေရာအတွက် ရည်ရွယ်သည့် အမှန်တကယ် SOAP မက်ဆေ့ဂျ်ပါရှိသည်။
SOAP ကိုယ်ထည်ဒြပ်စင်၏ ချက်ချင်းကလေးဒြပ်စင်များသည် namespace-အရည်အချင်းပြည့်မီနိုင်ပါသည်။
ဥပမာ
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body>
<m:GetPrice xmlns:m="https://www.w3schools.com/prices">
<m:Item>Apples</m:Item>
</m:GetPrice>
</soap:Body>
</soap:Envelope>
အထက်ဖော်ပြပါ ဥပမာသည် ပန်းသီးစျေးနှုန်းကို တောင်းဆိုသည်။ m:GetPrice နှင့် အထက်ဖော်ပြပါ ပစ္စည်းဒြပ်စင်များသည် အပလီကေးရှင်းအလိုက် အစိတ်အပိုင်းများဖြစ်ကြောင်း သတိပြုပါ။ ၎င်းတို့သည် SOAP namespace ၏ အစိတ်အပိုင်းမဟုတ်ပါ။
ဆပ်ပြာတုံ့ပြန်မှုတစ်ခုသည် ဤကဲ့သို့သောပုံပေါက်နိုင်သည်-
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body>
<m:GetPriceResponse xmlns:m="https://www.w3schools.com/prices">
<m:Price>1.90</m:Price>
</m:GetPriceResponse>
</soap:Body>
</soap:Envelope>
ဆပ်ပြာချို့ယွင်းမှုဒြပ်စင်
အမှားအယွင်း မက်ဆေ့ချ်များကို ညွှန်ပြရန်အတွက် ရွေးချယ်နိုင်သော SOAP အမှားဒြပ်စင်ကို အသုံးပြုသည်။
SOAP Fault ဒြပ်စင်သည် SOAP မက်ဆေ့ဂျ်အတွက် အမှားများနှင့် အခြေအနေအချက်အလက်ကို သိမ်းဆည်းထားသည်။
မှားယွင်းသောဒြပ်စင်တစ်ခုရှိနေပါက၊ ၎င်းသည် ကိုယ်ထည်ဒြပ်စင်၏ ကလေးဒြပ်စင်တစ်ခုအဖြစ် ပေါ်လာရမည်ဖြစ်သည်။ မှားယွင်းသောဒြပ်စင်သည် SOAP မက်ဆေ့ဂျ်တွင် တစ်ကြိမ်သာ ပေါ်လာနိုင်သည်။
SOAP Fault ဒြပ်စင်တွင် အောက်ပါ အစိတ်အပိုင်းများ ပါဝင်သည်-
Sub Element | Description |
---|---|
<faultcode> | A code for identifying the fault |
<faultstring> | A human readable explanation of the fault |
<faultactor> | Information about who caused the fault to happen |
<detail> |
Holds application specific error information related to the Body element |
SOAP အမှားကုဒ်များ
အမှားအယွင်းများကိုဖော်ပြသောအခါတွင် အောက်ပါသတ်မှတ်ထားသော အမှားကုဒ်တန်ဖိုးများကို အမှားကုဒ်ဒြပ်စင်တွင် အသုံးပြုရပါမည်-
Error | Description |
---|---|
VersionMismatch | Found an invalid namespace for the SOAP Envelope element |
MustUnderstand | An immediate child element of the Header element, with the mustUnderstand attribute set to "1", was not understood |
Client | The message was incorrectly formed or contained incorrect information |
Server | There was a problem with the server so the message could not proceed |
HTTP ပရိုတိုကော
HTTP သည် TCP/IP မှတဆင့် ဆက်သွယ်သည်။ HTTP client သည် TCP ကို အသုံးပြု၍ HTTP ဆာဗာသို့ ချိတ်ဆက်သည်။ ချိတ်ဆက်မှုတစ်ခုတည်ဆောက်ပြီးနောက်၊ client သည် ဆာဗာသို့ HTTP တောင်းဆိုချက်မက်ဆေ့ချ်ကို ပေးပို့နိုင်သည်-
POST /item HTTP/1.1
Host: 189.123.255.239
Content-Type: text/plain
Content-Length: 200
ထို့နောက် ဆာဗာသည် တောင်းဆိုချက်အား လုပ်ဆောင်ပြီး HTTP တုံ့ပြန်မှုကို သုံးစွဲသူထံ ပြန်လည်ပေးပို့သည်။ တုံ့ပြန်မှုတွင် တောင်းဆိုချက်၏ အခြေအနေကို ညွှန်ပြသည့် အခြေအနေကုဒ်တစ်ခု ပါရှိသည်။
200 OK
Content-Type: text/plain
Content-Length: 200
အထက်ဖော်ပြပါ ဥပမာတွင်၊ ဆာဗာသည် အခြေအနေကုဒ် 200 ကို ပြန်ပေးခဲ့သည်။ ၎င်းသည် HTTP အတွက် စံအောင်မြင်မှုကုဒ်ဖြစ်သည်။
ဆာဗာသည် တောင်းဆိုချက်ကို ကုဒ်ကုဒ်မလုပ်နိုင်ပါက၊ ၎င်းသည် ဤကဲ့သို့သော အရာတစ်ခုကို ပြန်ရနိုင်သည်-
400 Bad Request
Content-Length: 0
ဆပ်ပြာဖြင့် ချိတ်ဆွဲခြင်း။
SOAP သတ်မှတ်ချက်သည် SOAP မက်ဆေ့ချ်များကို မည်ကဲ့သို့ ဖလှယ်ကြသည်ကို မဟုတ်ဘဲ SOAP ဖွဲ့စည်းပုံကို သတ်မှတ်သည်။ ဤကွက်လပ်ကို "SOAP Bindings" ဟုခေါ်သည့်အရာဖြင့် ဖြည့်ပါသည်။ SOAP bindings များသည် ပို့ဆောင်ရေးပရိုတိုကောကို အသုံးပြု၍ SOAP မက်ဆေ့ချ်များကို ထိထိရောက်ရောက် ဖလှယ်နိုင်စေမည့် ယန္တရားများဖြစ်သည်။
SOAP အကောင်အထည်ဖော်မှုအများစုသည် HTTP သို့မဟုတ် SMTP ကဲ့သို့သော ဘုံသယ်ယူပို့ဆောင်ရေးပရိုတိုကောများအတွက် စည်းနှောင်မှုကိုပေးသည်။
HTTP သည် ထပ်တူကျပြီး အသုံးများသည်။ SOAP HTTP တောင်းဆိုချက်တစ်ခုသည် အနည်းဆုံး HTTP ခေါင်းစီးနှစ်ခုကို သတ်မှတ်သည်- အကြောင်းအရာ-အမျိုးအစားနှင့် အကြောင်းအရာ-အရှည်။
SMTP သည် အညီအမျှဖြစ်ပြီး နောက်ဆုံးအားကိုးရာ သို့မဟုတ် သီးခြားကိစ္စများတွင် အသုံးပြုပါသည်။
SOAP ၏ Java အကောင်အထည်ဖော်မှုများသည် များသောအားဖြင့် JMS (Java Messaging System) ပရိုတိုကောအတွက် သီးခြား စည်းနှောင်မှုကို ပေးဆောင်သည်။
အကြောင်းအရာ-အမျိုးအစား
SOAP တောင်းဆိုချက်နှင့် တုံ့ပြန်မှုအတွက် အကြောင်းအရာ-အမျိုးအစား ခေါင်းစီးသည် မက်ဆေ့ဂျ်အတွက် MIME အမျိုးအစားနှင့် တောင်းဆိုချက် သို့မဟုတ် တုံ့ပြန်မှု၏ XML စာကိုယ်အတွက် အသုံးပြုသည့် ဇာတ်ကောင်ကုဒ်နံပါတ် (ချန်လှပ်ထားနိုင်သည်) ကို သတ်မှတ်သည်။
အထားအသို
Content-Type: MIMEType; charset=character-encoding
ဥပမာ
POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
အကြောင်းအရာ-အရှည်
SOAP တောင်းဆိုချက်နှင့် တုံ့ပြန်မှုအတွက် အကြောင်းအရာ-အရှည် ခေါင်းစီးသည် တောင်းဆိုချက် သို့မဟုတ် တုံ့ပြန်မှု၏ကိုယ်ထည်ရှိ ဘိုက်အရေအတွက်ကို သတ်မှတ်သည်။
အထားအသို
Content-Length: bytes
ဥပမာ
POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 250
ဆပ်ပြာဥပမာ
အောက်ဖော်ပြပါ ဥပမာတွင်၊ GetStockPrice တောင်းဆိုချက်ကို ဆာဗာတစ်ခုထံ ပေးပို့သည်။ တောင်းဆိုချက်တွင် StockName ပါရာမီတာနှင့် တုံ့ပြန်မှုတွင် ပြန်ပေးမည့် စျေးနှုန်းပါရာမီတာတို့ ပါဝင်သည်။ လုပ်ဆောင်ချက်အတွက် namespace ကို "http://www.example.org/stock" တွင် သတ်မှတ်ထားပါသည်။
SOAP တောင်းဆိုချက်-
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>
ဆပ်ပြာတုံ့ပြန်မှု-
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPriceResponse>
<m:Price>34.5</m:Price>
</m:GetStockPriceResponse>
</soap:Body>
</soap:Envelope>