Simple Object Access Protocol (SOAP) - ការពិពណ៌នាទូទៅ។ ពិធីការ SOAP ។ គំនិតជាមូលដ្ឋាន។ រចនាសម្ព័ន្ធសារ SOAP

ផ្នែកទំនុកច្រៀង។

ស្រមៃថាអ្នកបានអនុវត្ត ឬកំពុងអនុវត្តប្រព័ន្ធជាក់លាក់មួយដែលគួរតែអាចចូលប្រើបានពីខាងក្រៅ។ ទាំងនោះ។ មានម៉ាស៊ីនមេជាក់លាក់មួយ ដែលអ្នកត្រូវការទំនាក់ទំនង។ ឧទាហរណ៍ម៉ាស៊ីនមេបណ្តាញ។

ម៉ាស៊ីនមេនេះអាចអនុវត្តសកម្មភាពជាច្រើន ធ្វើការជាមួយមូលដ្ឋានទិន្នន័យ អនុវត្តសំណើភាគីទីបីមួយចំនួនទៅកាន់ម៉ាស៊ីនមេផ្សេងទៀត ធ្វើការគណនាមួយចំនួន។ល។ រស់នៅ និងអាចអភិវឌ្ឍទៅតាមសេណារីយ៉ូដែលគេស្គាល់គាត់ (ឧ. យោងតាមសេណារីយ៉ូរបស់អ្នកអភិវឌ្ឍន៍)។ វាមិនគួរឱ្យចាប់អារម្មណ៍សម្រាប់មនុស្សម្នាក់ក្នុងការប្រាស្រ័យទាក់ទងជាមួយម៉ាស៊ីនមេបែបនេះទេ ពីព្រោះគាត់ប្រហែលជាមិនអាច/ចង់ផ្តល់ទំព័រដ៏ស្រស់ស្អាតជាមួយនឹងរូបភាព និងខ្លឹមសារផ្សេងទៀតដែលងាយស្រួលប្រើនោះទេ។ វាត្រូវបានសរសេរ និងធ្វើការដើម្បីធ្វើការ និងផ្តល់ទិន្នន័យនៅពេលសួរទៅវា ដោយមិនចាំបាច់បារម្ភថាវាជាមនុស្សដែលអាចអានបាននោះទេ អតិថិជននឹងដោះស្រាយវាដោយខ្លួនឯង។

ប្រព័ន្ធផ្សេងទៀត ការចូលប្រើម៉ាស៊ីនមេនេះ អាចបោះចោលទិន្នន័យដែលបានទទួលពីម៉ាស៊ីនមេនេះរួចហើយ តាមការសម្រេចចិត្តផ្ទាល់ខ្លួនរបស់ពួកគេ - ដំណើរការ ប្រមូលផ្តុំ ចេញឱ្យអតិថិជនរបស់ពួកគេ ។ល។

ជាការប្រសើរណាស់ ជម្រើសមួយក្នុងចំណោមជម្រើសសម្រាប់ការទំនាក់ទំនងជាមួយម៉ាស៊ីនមេបែបនេះគឺ SOAP ។ ពិធីសារផ្លាស់ប្តូរសារ SOAP xml ។

ផ្នែកជាក់ស្តែង។

សេវាកម្មបណ្តាញ (នេះគឺជាឈ្មោះនៃអ្វីដែលម៉ាស៊ីនមេផ្តល់ និងអ្វីដែលអតិថិជនប្រើប្រាស់) ធ្វើឱ្យវាអាចទំនាក់ទំនងជាមួយម៉ាស៊ីនមេជាមួយនឹងសារដែលមានរចនាសម្ព័ន្ធច្បាស់លាស់។ ការពិតគឺថាសេវាគេហទំព័រមិនទទួលយកទិន្នន័យណាមួយឡើយ។ សេវាកម្មគេហទំព័រនឹងឆ្លើយតបជាមួយនឹងកំហុសចំពោះសារណាមួយដែលមិនគោរពតាមច្បាប់។ ដោយវិធីនេះ កំហុសក៏នឹងស្ថិតនៅក្នុងទម្រង់ xml ជាមួយនឹងរចនាសម្ព័ន្ធច្បាស់លាស់ (ដែលមិនពិតអំពីអត្ថបទនៃសារ)។

WSDL (ភាសាពិពណ៌នាសេវាកម្មគេហទំព័រ)។ ច្បាប់ដែលសារត្រូវបានផ្សំឡើងសម្រាប់សេវាកម្មគេហទំព័រក៏ត្រូវបានពិពណ៌នាដោយប្រើ xml និងមានរចនាសម្ព័ន្ធច្បាស់លាស់ផងដែរ។ ទាំងនោះ។ ប្រសិនបើសេវាកម្មគេហទំព័រផ្តល់លទ្ធភាពក្នុងការហៅវិធីសាស្ត្រ នោះវាត្រូវតែអនុញ្ញាតឱ្យអតិថិជនដឹងពីប៉ារ៉ាម៉ែត្រដែលត្រូវបានប្រើសម្រាប់វិធីសាស្ត្រនេះ។ ប្រសិនបើសេវាកម្មគេហទំព័ររំពឹងថាមានខ្សែអក្សរសម្រាប់ Method1 ជាប៉ារ៉ាម៉ែត្រ ហើយខ្សែអក្សរគួរតែមានឈ្មោះ Param1 នោះច្បាប់ទាំងនេះនឹងត្រូវបានបញ្ជាក់នៅក្នុងការពិពណ៌នាអំពីសេវាកម្មគេហទំព័រ។

មិនត្រឹមតែប្រភេទសាមញ្ញប៉ុណ្ណោះទេប៉ុន្តែថែមទាំងវត្ថុនិងការប្រមូលវត្ថុអាចត្រូវបានឆ្លងកាត់ជាប៉ារ៉ាម៉ែត្រ។ ការពិពណ៌នាអំពីវត្ថុមួយចុះមកក្រោមការពិពណ៌នាអំពីធាតុផ្សំនីមួយៗនៃវត្ថុ។ ប្រសិនបើវត្ថុមួយមានវាលជាច្រើន នោះវាលនីមួយៗត្រូវបានពិពណ៌នា ប្រភេទរបស់វា ឈ្មោះ (អ្វីដែលជាតម្លៃដែលអាចមាន)។ វាលក៏អាចជាប្រភេទស្មុគ្រស្មាញ ហើយបន្តរហូតដល់ការពិពណ៌នានៃប្រភេទបញ្ចប់ដោយសាមញ្ញ - ខ្សែអក្សរ ប៊ូលីន លេខ កាលបរិច្ឆេទ... ទោះយ៉ាងណាក៏ដោយ ប្រភេទជាក់លាក់មួយចំនួនអាចប្រែទៅជាសាមញ្ញ វាជារឿងសំខាន់ដែលអតិថិជន អាចយល់ពីតម្លៃអ្វីដែលពួកគេអាចមាន។

សម្រាប់អតិថិជន វាគឺគ្រប់គ្រាន់ដើម្បីដឹងពី url នៃសេវាកម្មបណ្តាញ wsdl នឹងតែងតែនៅក្បែរ ដែលអ្នកអាចទទួលបានគំនិតនៃវិធីសាស្រ្ត និងប៉ារ៉ាម៉ែត្ររបស់ពួកគេដែលសេវាកម្មគេហទំព័រនេះផ្តល់។

តើអ្វីជាគុណសម្បត្តិនៃកណ្តឹង និងកញ្ចែទាំងអស់នេះ៖

  • នៅក្នុងប្រព័ន្ធភាគច្រើន ការពិពណ៌នាអំពីវិធីសាស្រ្ត និងប្រភេទកើតឡើងដោយស្វ័យប្រវត្តិ។ ទាំងនោះ។ អ្នកសរសេរកម្មវិធីនៅលើម៉ាស៊ីនមេគ្រាន់តែត្រូវការនិយាយថាវិធីសាស្ត្រនេះអាចត្រូវបានហៅតាមរយៈសេវាកម្មបណ្តាញ ហើយការពិពណ៌នា wsdl នឹងត្រូវបានបង្កើតដោយស្វ័យប្រវត្តិ។
  • ការពិពណ៌នាដែលមានរចនាសម្ព័ន្ធច្បាស់លាស់គឺអាចអានបានដោយអតិថិជនសាប៊ូណាមួយ។ ទាំងនោះ។ មិនថាសេវាកម្មគេហទំព័រណាក៏ដោយ អតិថិជននឹងយល់ពីទិន្នន័យដែលសេវាគេហទំព័រទទួលបាន។ ដោយប្រើការពិពណ៌នានេះ អតិថិជនអាចបង្កើតរចនាសម្ព័ន្ធខាងក្នុងរបស់វាផ្ទាល់នៃថ្នាក់វត្ថុដែលហៅថា។ binding" ហើយជាលទ្ធផល អ្នកសរសេរកម្មវិធីដែលប្រើសេវាកម្មគេហទំព័រត្រូវសរសេរអ្វីមួយដូចជា (pseudocode)៖

    អ្នកប្រើប្រាស់ថ្មី៖=TSoapUser.Create("Vasya","Pupkin","admin"); soap.AddUser(អ្នកប្រើប្រាស់ថ្មី);

  • សុពលភាពដោយស្វ័យប្រវត្តិ។

    • ការផ្ទៀងផ្ទាត់ xml ។ xml ត្រូវតែត្រូវបានបង្កើតឡើងយ៉ាងល្អ។ xml មិន​ត្រឹមត្រូវ - ភ្លាមៗ​មាន​កំហុស​ដល់​អតិថិជន សូម​ឱ្យ​គាត់​ដោះស្រាយ​វា​ចេញ។
    • គ្រោងការណ៍ - សុពលភាព។ xml ត្រូវតែមានរចនាសម្ព័ន្ធជាក់លាក់។ xml មិនត្រូវគ្នានឹងគ្រោងការណ៍ - ភ្លាមៗមានកំហុសដល់អតិថិជនសូមឱ្យគាត់តម្រៀបវាចេញ។
    • ការផ្ទៀងផ្ទាត់ទិន្នន័យត្រូវបានអនុវត្តដោយម៉ាស៊ីនមេសាប៊ូ ដូច្នេះប្រភេទទិន្នន័យ និងការរឹតបន្តឹងត្រូវគ្នានឹងការពិពណ៌នា។
  • ការអនុញ្ញាត និងការផ្ទៀងផ្ទាត់អាចត្រូវបានអនុវត្តដោយប្រើវិធីសាស្រ្តដាច់ដោយឡែកមួយ។ ដើមកំណើត។ ឬប្រើការអនុញ្ញាត http ។
  • សេវាគេហទំព័រអាចដំណើរការបានទាំងតាមរយៈពិធីការសាប៊ូ និងតាមរយៈ http ពោលគឺតាមរយៈសំណើរទទួល។ នោះគឺប្រសិនបើប៉ារ៉ាម៉ែត្រគឺជាទិន្នន័យសាមញ្ញ (ដោយគ្មានរចនាសម្ព័ន្ធ) នោះអ្នកអាចហៅជាធម្មតាទទួលបាន www.site.com/users.asmx/GetUser?Name=Vasia ឬប្រកាស។ ទោះជាយ៉ាងណាក៏ដោយនេះមិនមែននៅគ្រប់ទីកន្លែងទេហើយមិនមែនជានិច្ចទេ។
  • ... សូមមើលនៅលើវិគីភីឌា

វាក៏មានគុណវិបត្តិជាច្រើនផងដែរ៖

  • ទំហំសារធំមិនសមហេតុផល។ ជាការប្រសើរណាស់, នៅទីនេះលក្ខណៈនៃ xml គឺថាទ្រង់ទ្រាយគឺលែងត្រូវការតទៅទៀត, ស្លាកកាន់តែច្រើន, ព័ត៌មានគ្មានប្រយោជន៍កាន់តែច្រើន។ សាប៊ូបូកបន្ថែមភាពច្របូកច្របល់របស់វា។ សម្រាប់ប្រព័ន្ធអ៊ីនធឺណេត បញ្ហានៃចរាចរណ៍គឺមានភាពស្រួចស្រាវជាងអ៊ីនធឺណិត ដូច្នេះសាប៊ូសម្រាប់បណ្តាញក្នុងស្រុកមានតម្រូវការកាន់តែច្រើន ជាពិសេស Sharepoint មានសេវាគេហទំព័រសាប៊ូដែលអ្នកអាចទំនាក់ទំនងបានជោគជ័យ (និងដែនកំណត់មួយចំនួន)។
  • ការផ្លាស់ប្តូរការពិពណ៌នានៃសេវាកម្មបណ្តាញដោយស្វ័យប្រវត្តិអាចបំបែកអតិថិជនទាំងអស់។ ជាការប្រសើរណាស់ វាគឺដូចនេះសម្រាប់ប្រព័ន្ធណាមួយ ប្រសិនបើភាពឆបគ្នាថយក្រោយជាមួយវិធីសាស្ត្រចាស់មិនត្រូវបានគាំទ្រ នោះអ្វីៗនឹងធ្លាក់ចុះ...
  • មិនមែនជាដកទេ តែជាគុណវិបត្តិ។ ការហៅតាមវិធីទាំងអស់ត្រូវតែជាអាតូមិក។ ឧទាហរណ៍ នៅពេលធ្វើការជាមួយមូលដ្ឋានទិន្នន័យ យើងអាចចាប់ផ្តើមប្រតិបត្តិការ ប្រតិបត្តិសំណួរជាច្រើន បន្ទាប់មក rollback ឬ commit ។ មិនមានប្រតិបត្តិការនៅក្នុងសាប៊ូទេ។ សំណើមួយ ចម្លើយមួយ ការសន្ទនាបានបញ្ចប់។
  • ការដោះស្រាយជាមួយនឹងការពិពណ៌នាអំពីអ្វីដែលនៅលើផ្នែកម៉ាស៊ីនមេ (តើអ្វីគ្រប់យ៉ាងត្រូវបានពិពណ៌នាត្រឹមត្រូវទេ?) និងអ្វីដែលនៅលើអតិថិជន (តើពួកគេបានពិពណ៌នាអ្វីដល់ខ្ញុំនៅទីនេះ?) អាចពិបាកណាស់។ មានច្រើនដងដែលខ្ញុំត្រូវយល់ពីភាគីអតិថិជន និងបញ្ចុះបញ្ចូលអ្នកសរសេរកម្មវិធីម៉ាស៊ីនមេថាទិន្នន័យរបស់គាត់ត្រូវបានពិពណ៌នាមិនត្រឹមត្រូវ ប៉ុន្តែគាត់មិនអាចយល់អ្វីទាំងអស់អំពីវាបានទេ ដោយសារតែការបង្កើតដោយស្វ័យប្រវត្តិ ហើយគាត់មិនគួរ វាជាបញ្ហានៃកម្មវិធី។ . ហើយជាធម្មតា កំហុសគឺនៅក្នុងកូដវិធីសាស្រ្ត អ្នកសរសេរកម្មវិធីមិនបានឃើញវាទេ។
  • ការអនុវត្តបង្ហាញថាអ្នកបង្កើតសេវាកម្មគេហទំព័រគឺនៅឆ្ងាយពីមនុស្សដែលប្រើប្រាស់សេវាកម្មគេហទំព័រទាំងនេះយ៉ាងខ្លាំង។ ជាការឆ្លើយតបទៅនឹងសំណើណាមួយ (មានសុពលភាពពីខាងក្រៅ) កំហុសដែលមិនអាចយល់បាន "កំហុសទី 5 ។ អ្វីគ្រប់យ៉ាងគឺអាក្រក់" អាចកើតឡើង។ វាទាំងអស់គឺអាស្រ័យលើមនសិការរបស់អ្នកអភិវឌ្ឍន៍ :)
  • ខ្ញុំប្រាកដថាខ្ញុំនៅតែមិនចាំអ្វីមួយ ...

ជាឧទាហរណ៍ មានសេវាគេហទំព័របើកចំហមួយ បេឡាវី៖

  • http://86.57.245.235/TimeTable/Service.asmx - ចំណុចចូល វាក៏មានការពិពណ៌នាអត្ថបទអំពីវិធីសាស្រ្តសម្រាប់អ្នកអភិវឌ្ឍន៍ភាគីទីបីផងដែរ។
  • http://86.57.245.235/TimeTable/Service.asmx?WSDL - ការពិពណ៌នា wsdl នៃវិធីសាស្រ្ត និងប្រភេទនៃទិន្នន័យដែលទទួលបាន និងត្រឡប់។
  • http://86.57.245.235/TimeTable/Service.asmx?op=GetAirportsList - ការពិពណ៌នាអំពីវិធីសាស្រ្តជាក់លាក់មួយដែលមានឧទាហរណ៍នៃប្រភេទនៃសំណើ xml និងការឆ្លើយតប xml ។

អ្នកអាចបង្កើត និងផ្ញើសំណើដោយដៃដូចជា៖

POST /TimeTable/Service.asmx HTTP/1.1 ម៉ាស៊ីន៖ 86.57.245.235 ប្រភេទមាតិកា៖ text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://webservices.belavia.by/GetAirportsList" ru

ចម្លើយនឹងមក៖

HTTP/1.1 200 កាលបរិច្ឆេទយល់ព្រម៖ ថ្ងៃច័ន្ទ, 30 កញ្ញា 2013 00:06:44 GMT ម៉ាស៊ីនមេ៖ Microsoft-IIS/6.0 X-Powered-By: ASP.NET X-AspNet-Version: 4.0.30319 Cache-Control: private, អតិបរមា -age=0 ប្រភេទមាតិកា៖ អត្ថបទ/xml; សំណុំតួអក្សរ=utf-8 ប្រវែងខ្លឹមសារ៖ ២៩៤០

PS កាលពីមុន សេវាកម្មគេហទំព័រ Aeroflot ត្រូវបានបើក ប៉ុន្តែបន្ទាប់ពី 1C បានបន្ថែមការគាំទ្រសាប៊ូទៅ 8ku អ្នកសាកល្បង 1C បេតាជាច្រើនបានដំឡើងវាដោយជោគជ័យ។ ឥឡូវនេះមានអ្វីមួយបានផ្លាស់ប្តូរនៅទីនោះ (ខ្ញុំមិនស្គាល់អាសយដ្ឋានទេ អ្នកអាចរកមើលវាបានប្រសិនបើអ្នកចាប់អារម្មណ៍)។
ការបដិសេធ ZZY ។ គាត់បាននិយាយនៅកម្រិតប្រចាំថ្ងៃ។ អ្នកអាចទាត់។

SOAP ជាអ្វី?

SOAP តំណាងឱ្យ Simple Object Access Protocol ។ ខ្ញុំ​សង្ឃឹម​ថា​បន្ទាប់​ពី​បាន​អាន​អត្ថបទ អ្នក​នឹង​លែង​ឆ្ងល់​ថា “តើ​នេះ​ឈ្មោះ​អ្វី​ចម្លែក?”

SOAP នៅក្នុងទម្រង់បច្ចុប្បន្នរបស់វាគឺជាវិធីសាស្ត្រហៅពីចម្ងាយ (RPC) តាមបណ្តាញ។ (បាទ វា​ក៏​ត្រូវ​បាន​ប្រើ​ដើម្បី​ផ្ទេរ​ឯកសារ​ជា XML ដែរ ប៉ុន្តែ​យើង​នឹង​ទុក​វា​ចោល​សម្រាប់​ពេល​នេះ។)

ចូរយើងដោះស្រាយវា។ ស្រមៃថាអ្នកមានសេវាកម្មដែលត្រឡប់តម្លៃភាគហ៊ុនសម្រាប់សំបុត្រដែលបានផ្តល់ឱ្យ (និមិត្តសញ្ញាភាគហ៊ុន) ។ វាបញ្ជូនទិន្នន័យទៅគេហទំព័រ Nasdaq ហើយបង្កើតលទ្ធផលដែលចង់បានដោយផ្អែកលើ HTML ត្រឡប់មកវិញ។ បន្ទាប់មក ដើម្បីអនុញ្ញាតឱ្យអ្នកអភិវឌ្ឍន៍ផ្សេងទៀតប្រើវានៅក្នុងកម្មវិធីរបស់ពួកគេ អ្នកបង្កើតធាតុផ្សំចេញពីសេវាកម្មនេះដែលស្វែងរកព័ត៌មានអំពីសម្រង់តាមរយៈអ៊ីនធឺណិត។ វាដំណើរការល្អរហូតដល់ថ្ងៃមួយ Nasdaq ផ្លាស់ប្តូរប្លង់ទំព័ររបស់វា។ អ្នកត្រូវពិចារណាឡើងវិញនូវតក្កវិជ្ជាទាំងមូលនៃសមាសភាគ ហើយផ្ញើបច្ចុប្បន្នភាពទៅអ្នកអភិវឌ្ឍន៍ទាំងអស់ដោយប្រើវា។ ហើយ​ពួកគេ​ត្រូវ​ផ្ញើ​ព័ត៌មាន​ថ្មីៗ​ទៅកាន់​អ្នកប្រើប្រាស់​ទាំងអស់​របស់ពួកគេ។ ប្រសិនបើរឿងនេះកើតឡើងនៅលើមូលដ្ឋានថេរច្រើន ឬតិច អ្នកអាចបង្កើតសត្រូវជាច្រើនក្នុងចំណោមអ្នកអភិវឌ្ឍន៍ផ្សេងទៀត។ ហើយ​អ្នក​សរសេរ​កម្មវិធី​ដូច​ដែល​អ្នក​ដឹង​ហើយ​គឺ​មិន​ត្រូវ​មាន​បញ្ហា​នោះ​ទេ។ អ្នក​មិន​ចង់​យក​រូបថត​ឆ្មា​សំណព្វ​របស់​អ្នក​ចេញ​ពី​ម៉ាស៊ីន​កាត់​ការិយាល័យ​នៅ​ថ្ងៃ​ស្អែក​ទេ?

អ្វីដែលត្រូវធ្វើ? សូមមើល... អ្វីដែលអ្នកត្រូវការគឺផ្តល់មុខងារមួយដែលនឹងយកជាការបញ្ចូលសញ្ញាធីក (ប្រភេទខ្សែអក្សរ) ហើយត្រឡប់សម្រង់ភាគហ៊ុន (ប្រភេទអណ្តែត ឬទ្វេ)។ ដូច្នេះ​តើ​វា​មិន​ងាយ​ស្រួល​ទេ​ក្នុង​ការ​អនុញ្ញាត​ឱ្យ​អ្នក​អភិវឌ្ឍន៍​របស់​អ្នក​ហៅ​មុខងារ​នេះ​តាម​អ៊ីនធឺណិត​ដោយ​របៀប​ណា? អស្ចារ្យ! នេះក៏ជាដំណឹងសម្រាប់ខ្ញុំដែរ មាន COM និង Corba និង Java ដែលបានធ្វើរឿងនេះអស់ជាច្រើនឆ្នាំ... អ្វីដែលជាការពិតគឺជាការពិត ប៉ុន្តែវិធីសាស្ត្រទាំងនេះមិនគ្មានកំហុសទេ។ ការកំណត់រចនាសម្ព័ន្ធ COM ពីចម្ងាយមិនមែនជារឿងតូចតាចទេ។ លើសពីនេះទៀត អ្នកត្រូវបើកច្រកជាច្រើននៅក្នុងជញ្ជាំងភ្លើង ដែលអ្នកមិនអាចទទួលបានស្រាបៀរគ្រប់គ្រាន់ពីអ្នកគ្រប់គ្រងប្រព័ន្ធ។ បាទ / ចាសហើយអ្នកនឹងត្រូវភ្លេចអំពីអ្នកប្រើប្រាស់ប្រព័ន្ធប្រតិបត្តិការទាំងអស់លើកលែងតែវីនដូ។ ប៉ុន្តែពេលខ្លះអ្នកប្រើប្រាស់លីនុចក៏ចាប់អារម្មណ៍លើការផ្លាស់ប្តូរផងដែរ។

ទោះបីជាវាហាក់ដូចជាអ្វីៗទាំងអស់មិនបាត់បង់សម្រាប់អ្នកប្រើប្រាស់លីនុច ប្រសិនបើពួកគេប្រើ DCOM ក៏ដោយ ច្រើនទៀតនៅទីនេះ៖ http://www.idevresource.com/com/library/res/articles/comonlinux.asp ។

ខ្ញុំមិនអាចនិយាយច្រើនអំពី Corba និង Java បានទេ ដូច្នេះជាលំហាត់មួយ ខ្ញុំអញ្ជើញអ្នកអានឱ្យស្វែងរកគុណវិបត្តិនៅក្នុងវិធីសាស្រ្តទាំងនេះ។

SOAP គឺជាស្តង់ដារដែលអនុញ្ញាតឱ្យអ្នកពណ៌នាការហៅពីចម្ងាយបែបនេះ និងទម្រង់បែបបទដែលលទ្ធផលនឹងត្រូវបានត្រឡប់មកវិញ។ ដូច្នេះអ្នកត្រូវធ្វើជាម្ចាស់ផ្ទះមុខងាររបស់អ្នកនៅក្នុងកម្មវិធីដែលអាចចូលប្រើបានតាមបណ្តាញ និងទទួលការហៅជាកញ្ចប់ SOAP ។ បន្ទាប់មក អ្នកធ្វើឱ្យមានសុពលភាពការបញ្ចូល ដំណើរការមុខងាររបស់អ្នក ហើយត្រឡប់លទ្ធផលនៅក្នុងកញ្ចប់ព័ត៌មាន SOAP ថ្មី។ ដំណើរការទាំងមូលអាចដំណើរការលើ HTTP ដូច្នេះអ្នកមិនចាំបាច់បើកច្រកជាច្រើននៅលើជញ្ជាំងភ្លើងរបស់អ្នកទេ។ តើវាពិតជាសាមញ្ញទេ?

តើអត្ថបទនេះនិយាយអំពីអ្វី?

នេះជាលើកដំបូងនៅក្នុងស៊េរីនៃអត្ថបទដែលយើងកំពុងសរសេរអំពី SOAP នៅកម្មវិធី Agni ។ នៅក្នុងអត្ថបទនេះ ខ្ញុំនឹងព្យាយាមផ្ដល់ឱ្យអ្នកនូវគំនិតមួយថាតើ SOAP ជាអ្វី និងរបៀបសរសេរកម្មវិធីដែលទាក់ទងជាមួយម៉ាស៊ីនមេ SOAP ។

សាប៊ូ និង XML

ប្រសិនបើ SOAP នៅតែហាក់ដូចជាសាមញ្ញសម្រាប់អ្នក សូមបន្ថែម XML ។ ឥឡូវនេះ ជំនួសឱ្យឈ្មោះមុខងារ និងប៉ារ៉ាម៉ែត្រ យើងទទួលបានស្រោមសំបុត្រ XML ដ៏ស្មុគស្មាញមួយ ហាក់ដូចជាត្រូវបានបង្កើតឡើងដើម្បីបំភាន់អ្នក។ ប៉ុន្តែកុំប្រញាប់ដើម្បីភ័យខ្លាច។ វាមានច្រើនជាងនេះទៅទៀត ហើយអ្នកត្រូវមើលរូបភាពទាំងមូល ដើម្បីដឹងគុណចំពោះភាពស្មុគស្មាញរបស់ SOAP ។
ប្រសិនបើអ្នកមិនដឹងថា XML ជាអ្វីទេ ដំបូងអានអត្ថបទរបស់ខ្ញុំនៅលើ XML នៅទីនេះ៖ http://www.agnisoft.com/white_papers/xml_delphi.asp ។

កញ្ចប់ SOAP ទាំងអស់មានទម្រង់ XML ។ តើវាមានន័យយ៉ាងណា? តោះមើល។ សូមក្រឡេកមើលមុខងារនេះ (Pascal)៖
មុខងារ GetStockQuote (និមិត្តសញ្ញា៖ ខ្សែអក្សរ): ទ្វេដង;
វាមើលទៅអស្ចារ្យ ប៉ុន្តែបញ្ហាគឺថាវាជា Pascal ។ តើការប្រើប្រាស់និយមន័យសាមញ្ញនេះសម្រាប់អ្នកអភិវឌ្ឍន៍ Java គឺជាអ្វី? ឬសម្រាប់អ្នកដែលធ្វើការជាមួយ VB? យើងត្រូវការអ្វីមួយដែលអាចយល់បានសម្រាប់មនុស្សគ្រប់គ្នា សូម្បីតែអ្នកសរសេរកម្មវិធី VB ក៏ដោយ។ ដូច្នេះផ្តល់ឱ្យពួកគេនូវ XML ដែលមានព័ត៌មានដូចគ្នា (ប៉ារ៉ាម៉ែត្រតម្លៃភាគហ៊ុន។ ល។ ) ។ អ្នកបង្កើតកញ្ចប់ SOAP ដែលជាការហៅទៅកាន់មុខងាររបស់អ្នកដោយរុំក្នុង XML ដូច្នេះកម្មវិធីណាមួយនៅលើវេទិកាណាមួយអាចយល់ពីវាបាន។ ឥឡូវនេះ តោះមើលថាតើការហៅ SOAP របស់យើងមើលទៅដូចអ្វី៖
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"


xmlns:xsd="http://www.w3.org/1999/XMLSchema">


ក្រុមហ៊ុន IBM

ព័ត៌មានមែនទេ? សាប៊ូកាន់តែងាយស្រួលនៅចំពោះមុខភ្នែករបស់យើង។ មិនអីទេ រឿងកំប្លែងមួយឡែក។ ឥឡូវនេះ ខ្ញុំនឹងព្យាយាមពន្យល់អ្នកពីរបៀបយល់ពីការហៅ SOAP នេះ។

ការឌិកូដស្លាក ស្លាកដំបូងដែលទាក់ទាញភ្នែករបស់អ្នកគឺ

. ស្លាកនេះគឺជាកញ្ចប់ខាងក្រៅនៃកញ្ចប់ SOAP ដែលមានការប្រកាសឈ្មោះកន្លែងមួយចំនួនដែលយើងមិនចាប់អារម្មណ៍ជាពិសេស ប៉ុន្តែមានសារៈសំខាន់ខ្លាំងណាស់សម្រាប់ភាសាសរសេរកម្មវិធី ឬឧបករណ៍ញែកណាមួយ។ Namespaces ត្រូវបានកំណត់ដើម្បីធានាថាបុព្វបទជាបន្តបន្ទាប់ដូចជា "SOAP-ENV:" ឬ "xsd:" ត្រូវបានយល់ដោយអ្នកញែក។ ស្លាកបន្ទាប់ - . (យើងបានខកខានស្លាកមួយដែលមិនត្រូវបានបង្ហាញនៅទីនេះ - . វាមិនមែននៅក្នុងឧទាហរណ៍ពិសេសនេះទេ ប៉ុន្តែប្រសិនបើអ្នកចង់អានបន្ថែមអំពីវា សូមពិនិត្យមើលការបញ្ជាក់របស់ SOAP នៅទីនេះ៖ http://www.w3.org/TR/SOAP/)។ ស្លាក

តាមពិតមានការហៅ SOAP ។ ស្លាកបន្ទាប់នៅក្នុងបញ្ជីគឺ

. ឈ្មោះស្លាក GetStockQuote គឺជាមុខងារដែលត្រូវបានហៅ។ នៅក្នុងពាក្យ SOAP នេះត្រូវបានគេហៅថា ប្រតិបត្តិការ។ ដូច្នេះ GetStockQuote គឺជាប្រតិបត្តិការដែលត្រូវអនុវត្ត។ ns1 គឺជា namespace ចង្អុលទៅ urn:xmethods-quotes ក្នុងករណីរបស់យើង។

កំណត់ចំណាំនៅលើ namespaces៖ namespace ធ្វើឱ្យវាអាចមានលក្ខណៈគ្រប់គ្រាន់សម្រាប់ស្លាក XML ។ ឧទាហរណ៍ អ្នកមិនអាចមានអថេរពីរដែលមានឈ្មោះដូចគ្នាក្នុងនីតិវិធីមួយ ប៉ុន្តែប្រសិនបើពួកវាស្ថិតនៅក្នុងនីតិវិធីពីរផ្សេងគ្នានោះ វាមិនមានបញ្ហាទេ។ ដូច្នេះ ដំណើរការគឺជា namespace ចាប់តាំងពីឈ្មោះទាំងអស់នៅក្នុងវាមានតែមួយ។ ដូចគ្នាដែរ ស្លាក XML មានវិសាលភាពរបស់វានៅក្នុង namespaces ដូច្នេះដោយផ្តល់ namespace និង tag name មួយ អ្នកអាចកំណត់អត្តសញ្ញាណវាបាន។ យើងនឹងកំណត់ namespace ជា URI ដើម្បីបែងចែក NS1 របស់យើងពី copycats ។ ក្នុងឧទាហរណ៍ខាងលើ NS1 គឺជាឈ្មោះក្លែងក្លាយដែលចង្អុលទៅ urn:xmethods-quotes ។

យកចិត្តទុកដាក់ផងដែរចំពោះគុណលក្ខណៈអ៊ិនកូដរចនាប័ទ្ម - គុណលក្ខណៈនេះកំណត់ពីរបៀបដែលការហៅ SOAP ត្រូវបានសៀរៀល។ មានប៉ារ៉ាម៉ែត្រ។ ក្នុងករណីសាមញ្ញបំផុតរបស់យើងយើងមានប៉ារ៉ាម៉ែត្រតែមួយគត់ - ស្លាក . សូមកត់សម្គាល់បន្ទាត់នេះនៅជាប់ស្លាក៖
xsi:type="xsd:string"
នេះជារបៀបដែលប្រភេទត្រូវបានកំណត់នៅក្នុង XML ។ (សូមកត់សម្គាល់ពីរបៀបដែលខ្ញុំបានប្រើពាក្យ "ប្រហែល" យ៉ាងឆ្លាតវៃ នៅពេលបង្កើតភាពទូទៅអំពីបច្ចេកវិទ្យាដែលអាចផ្លាស់ប្តូរនៅពេលដែលអត្ថបទត្រូវបានបោះពុម្ព។ ) តើនេះមានន័យយ៉ាងណា៖ ប្រភេទដែលបានកំណត់ក្នុង xsi namespace ដែលអ្នកនឹងសម្គាល់ឃើញត្រូវបានកំណត់នៅក្នុងស្លាក - xsd: ខ្សែអក្សរ។ ហើយនេះជាខ្សែអក្សរដែលកំណត់ក្នុង xsd namespace ម្តងទៀតបានកំណត់ពីមុន។ (ខ្ញុំ​ប្រាកដ​ថា​មេធាវី​នឹង​រំភើប​ចិត្ត​ចំពោះ​រឿង​ទាំង​អស់​នេះ)។

យកចិត្តទុកដាក់ផងដែរចំពោះគុណលក្ខណៈអ៊ិនកូដរចនាប័ទ្ម - គុណលក្ខណៈនេះកំណត់ពីរបៀបដែលការហៅ SOAP ត្រូវបានសៀរៀល។ "IBM" ត្រូវបានចង្អុលបង្ហាញ។ នេះគឺជាតម្លៃនៃប៉ារ៉ាម៉ែត្រនិមិត្តសញ្ញានៃអនុគមន៍ GetStockQuote ។

ជាការប្រសើរណាស់ នៅទីបញ្ចប់ ដូចជាមនុស្សសមរម្យ យើងបានបិទស្លាកទាំងអស់។

ដូច្នេះយើងបានរកឃើញកញ្ចប់ព័ត៌មាន SOAP ដែលកំណត់ការហៅទៅកាន់ម៉ាស៊ីនមេ SOAP ។ ហើយម៉ាស៊ីនមេ SOAP ដោយប្រើឧបករណ៍ញែក XML ប៊ូតុងក្រហម និងស្ថានីយ៍អវកាស MIR ឌិកូដការហៅទូរសព្ទនេះ ហើយកំណត់ថាអ្នកត្រូវការសម្រង់ភាគហ៊ុន។ គាត់ស្វែងរកសម្រង់ត្រឹមត្រូវភ្លាមៗ ហើយប្រគល់វាមកអ្នកវិញតាមទម្រង់នេះ៖
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>


34.5


បន្ទាប់ពីដោះស្រោមសំបុត្រ SOAP ហែកខ្សែបូ និងច្រែះរុំ យើងដឹងថាតម្លៃភាគហ៊ុនរបស់ IBM គឺ 34.5 ។

ម៉ាស៊ីនមេពាណិជ្ជកម្មភាគច្រើននឹងផ្តល់មកវិញនូវព័ត៌មានជាច្រើនទៀត ដូចជានៅក្នុងរូបិយប័ណ្ណអ្វី និងតម្លៃអ្វីដែលភាគហ៊ុនចុងក្រោយត្រូវបានទិញ។ ហើយតម្លៃភាគហ៊ុន ប្រហែលជាមានភាពត្រឹមត្រូវជាងនេះ។

វិធីនេះយើងដឹងពីអ្វីដែលម៉ាស៊ីនមេ SOAP រំពឹង និងអ្វីដែលវានឹងត្រលប់មកវិញ។ ដូច្នេះ តើអ្នកផ្ញើព័ត៌មាននេះដោយរបៀបណា? អ្នកអាចប្រើការដឹកជញ្ជូនណាមួយ។ គ្របដណ្តប់បំផុតគឺ HTTP ។ ខ្ញុំនឹងមិននិយាយលម្អិតអំពី HTTP ទេសម្រាប់អ្នកដែលមិនដឹង វាជាអ្វីដែលកម្មវិធីរុករករបស់អ្នកប្រើដើម្បីទំនាក់ទំនងជាមួយគេហទំព័រដែលអ្នកចូលមើល។

សំណើ HTTP ដែលត្រូវការនឹងមើលទៅដូចនេះ៖
ប្រកាស / Stock Quote HTTP / 1.1
ម៉ាស៊ីន៖ www.stockquoteserver.com

ប្រវែងខ្លឹមសារ៖ nnnn
SOAPAction: "Some-URI"

កញ្ចប់សំណើសាប៊ូនៅទីនេះ... អ្វីផ្សេងទៀតដែលគួរកត់សម្គាល់គឺបឋមកថា SOAPAction ។ បឋមកថានេះបង្ហាញពីគោលបំណងនៃសំណើ និងត្រូវបានទាមទារ។ ម៉ាស៊ីនមេ SOAP នីមួយៗអាចមានមុខងារចំនួនមិនកំណត់ ហើយអាចប្រើបឋមកថា SOAPAction ដើម្បីកំណត់មុខងារណាមួយដែលត្រូវហៅ។ Firewall និង multiplexers ក៏អាចត្រងមាតិកាដោយផ្អែកលើបឋមកថានេះផងដែរ។

ការឆ្លើយតប SOAP ពីម៉ាស៊ីនមេ HTTP នឹងមើលទៅដូចនេះ៖
HTTP/1.1 200 យល់ព្រម
ប្រភេទមាតិកា៖ អត្ថបទ/xml; សំណុំតួអក្សរ = "utf-8"
ប្រវែងខ្លឹមសារ៖ nnnn

Soap Response packet នៅទីនេះ... ហេតុអ្វី HTTP? ទីមួយ អ្នកគ្រប់គ្រងបណ្តាញនឹងមិនចាំបាច់បើកច្រកដាច់ដោយឡែកជាច្រើនសម្រាប់ការហៅ SOAP... ម៉ាស៊ីនមេគេហទំព័រអាចដោះស្រាយការហៅទូរសព្ទបានយ៉ាងងាយស្រួល ដោយសារតែ ច្រក 80 ជាធម្មតាបើកសម្រាប់អ្នករាល់គ្នាដើម្បីទទួលបានសំណើចូល។ អត្ថប្រយោជន៍មួយទៀតគឺការពង្រីកនៃម៉ាស៊ីនមេគេហទំព័រដោយប្រើ CGI, ISAPI និងម៉ូឌុលដើមផ្សេងទៀត។ ការពង្រីកនេះអនុញ្ញាតឱ្យអ្នកសរសេរម៉ូឌុលដែលដំណើរការសំណើ SOAP ដោយមិនប៉ះពាល់ដល់មាតិកាគេហទំព័រផ្សេងទៀត។

នោះហើយជាវា។

ខ្ញុំសង្ឃឹមថាអត្ថបទនេះបានជួយបំភ្លឺខ្លះៗអំពី SOAP ។ ប្រសិនបើអ្នកនៅតែនៅទីនេះ ហើយចង់អានបន្ថែមលើប្រធានបទនេះ សូមចូលទៅកាន់គេហទំព័ររបស់អ្នកនិពន្ធ៖ http://www.agnisoft.com/soap

ជាទូទៅ សព្វថ្ងៃនេះមានពិធីការផ្លាស់ប្តូរទិន្នន័យ XML ស្តង់ដារ៖

  • XML-RPC- អ្នកហុចកញ្ចប់ ហើយចង្អុលបង្ហាញថាវិធីសាស្ត្រណាមួយនៅលើម៉ាស៊ីនមេដែលអ្នកចង់ហៅ។
  • សម្រាក- មានវត្ថុមួយចំនួននៅលើម៉ាស៊ីនមេ។ វត្ថុនីមួយៗត្រូវបានកំណត់លក្ខណៈដោយប្រភេទនៃអត្តសញ្ញាណមួយចំនួន។ ធាតុនីមួយៗមាន url ផ្ទាល់ខ្លួន។ អ្នកអាចធ្វើដូចខាងក្រោមជាមួយនឹងធាតុណាមួយ: បញ្ចូល លុប ធ្វើបច្ចុប្បន្នភាព ជ្រើសរើស។ អ្នកគ្រាន់តែផ្ញើសំណើដែលចង់បានទៅម៉ាស៊ីនមេ (ឧទាហរណ៍ បញ្ចូលធាតុបែបនេះ និងធាតុបែបនេះ)។ ការផ្លាស់ប្តូរម៉ាស៊ីនភ្ញៀវគឺផ្អែកលើ JSON ឬ XML ។

SOAP (ស្ថាបត្យកម្មតម្រង់ទិសសេវាកម្ម សំណុំនៃសេវាកម្មដែលជាប់ទាក់ទងគ្នាទៅវិញទៅមក) គឺផ្អែកលើ RPC ។ អត្ថប្រយោជន៍ចម្បងនៃ RPC គឺចំនួនធនធានបណ្តាញតិចតួច (ចំណុចចូល) និងវិធីសាស្រ្តជាច្រើនដែលពាក់ព័ន្ធ។ ទោះបីជាមានអត្ថប្រយោជន៍នេះក៏ដោយ RPC គឺជាពិធីការហួសសម័យដែលមានគុណវិបត្តិមួយចំនួន៖

  • សុពលភាពនៃសារ XML-RPC មិនអាចផ្ទៀងផ្ទាត់បានទេ។ ពិធីការចាស់ត្រូវបានបង្កើតមុនពេលគ្រោងការណ៍ (វិធីសាស្រ្តនៃទិន្នន័យសុពលភាព) ត្រូវបានធ្វើស្តង់ដារនៅក្នុង XML ។ ទាំងនោះ។ ម៉ាស៊ីនមេទទួលយកសំណើ វាត្រូវតែធានាថាសំណើគឺសម្រាប់វា ហើយថាទិន្នន័យគឺស្រប។ នៅក្នុង XML-RPC ប្រភេទទិន្នន័យត្រូវបានប្រកាសសម្រាប់ការនេះ ប៉ុន្តែនេះគឺជាការពិនិត្យមើលប្រភេទទិន្នន័យ ហើយភាពស៊ីសង្វាក់គ្នានៃទិន្នន័យមិនត្រូវបានពិនិត្យទេ (ដែលអ្នកបានទទួលរចនាសម្ព័ន្ធជាមួយនឹងប៉ារ៉ាម៉ែត្រចាំបាច់ទាំងអស់)។
  • អ្នកមិនអាចបង្កើតសាររួមបញ្ចូលគ្នាបានទេ។
  • អ្នក​មិន​អាច​ប្រើ​លំហ និង​ពេល​វេលា (បាន​បង្ហាញ​ក្រោយ​ការ​បង្កើត RPC)។
  • អ្នកមិនអាចពង្រីកសារបានទេ ឧ. បន្ថែមព័ត៌មានបន្ថែម។

ចំណុចខ្វះខាតទាំងអស់នេះត្រូវបានដោះស្រាយនៅក្នុង XML Schema ។ នេះគឺជាស្តង់ដារឧស្សាហកម្មសម្រាប់ការពិពណ៌នាអំពីឯកសារ XML ។ ទាំងនោះ។ វា​ជា​វិធី​មួយ​ដើម្បី​យក​គំរូ​ទិន្នន័យ​តាម​អំពើ​ចិត្ត។ គ្រោងការណ៍ XML អាចពិពណ៌នាអំពីគំរូមួយ (ទំនាក់ទំនងរវាងធាតុ និងគុណលក្ខណៈ និងរចនាសម្ព័ន្ធរបស់វា) ប្រភេទទិន្នន័យ (កំណត់លក្ខណៈប្រភេទទិន្នន័យ) និងវចនានុក្រម (ឈ្មោះធាតុ និងគុណលក្ខណៈ)។

ដោយផ្អែកលើការខ្វះខាតទាំងអស់នៃ XML-RPC ពិធីការ SOAP ត្រូវបានបង្កើតឡើង។

សាប៊ូ(Simle Object Access Protocol) - ពិធីការចូលប្រើទៅកាន់វត្ថុមួយ (ដល់ចំណុចចូល) ។ សព្វថ្ងៃនេះវាគឺជាស្តង់ដារឧស្សាហកម្មចម្បងសម្រាប់ការសាងសង់កម្មវិធីដែលបានចែកចាយ។

វាតំណាងឱ្យផ្នែកបន្ថែមទៅភាសា XML-RPC ។ ទាំងនោះ។ វាត្រូវបានបង្កើតឡើងនៅលើគោលការណ៍: 1 ចំណុចចូលនិងវិធីសាស្រ្តណាមួយ។ ពិធីការខ្លួនវាទាក់ទងនឹងការដឹកជញ្ជូន (របៀបផ្ទេរទិន្នន័យ) ផ្តល់ជម្រើសដ៏ធំទូលាយមួយ៖ SMTP, FTP, HTTP, MSMQ ។

SOAP បញ្ជាក់ពីការអនុវត្តសេវាកម្មគេហទំព័រ XML (សេវាកម្មគេហទំព័រ XML) ។ គុណវិបត្តិនៃ SOAP គឺវាពិបាកក្នុងការរៀន។

SOAP គឺផ្អែកលើការផ្លាស់ប្តូរសាររវាងម៉ាស៊ីនភ្ញៀវ និងម៉ាស៊ីនមេ (ដោយសមកាលកម្ម និងអសមកាល)។ សារនីមួយៗផ្ទុកព័ត៌មានអំពីទិន្នន័យ (ទិន្នន័យអ្វីដែលត្រូវបានបញ្ជូន និងទទួល)។ SOAP ពិពណ៌នាជាមុនអំពីរចនាសម្ព័ន្ធទាំងមូលនៃសារដោយប្រើគ្រោងការណ៍ XML៖ អ្វីដែលគួរនៅក្នុងសារ របៀបដែលវានឹងត្រូវបានបញ្ជូន។ វាធ្វើឱ្យវាអាចធ្វើទៅបាន ដោយមិនស្គាល់ម៉ាស៊ីនមេ ដើម្បីយល់ពីអ្វីដែលកំពុងកើតឡើងនៅទីនោះ និងអនុញ្ញាតឱ្យម៉ាស៊ីនមេពិនិត្យមើលថាតើសារនេះគឺសម្រាប់វាឬអត់។

គ្រោងការណ៍ XML

គោលបំណងនៃគ្រោងការណ៍គឺដើម្បីពិពណ៌នាអំពីរចនាសម្ព័ន្ធនៃទិន្នន័យពោលគឺឧ។ អ្វីដែលយើងមាន។ ទិន្នន័យទាំងអស់ត្រូវបានបែងចែកទៅជាប្រភេទសាមញ្ញ និងស្មុគស្មាញ (មាត្រដ្ឋាន និងរចនាសម្ព័ន្ធ)។ ប្រភេទសាមញ្ញ (ខ្សែអក្សរ លេខ ប៊ូលីន កាលបរិច្ឆេទ) នឹងមិនមានអ្វីនៅខាងក្នុងទេ។ ហើយរចនាសម្ព័ន្ធ (វត្ថុ) អាចមានលក្ខណៈសម្បត្តិ។

ប្រតិបត្តិការ SOAP មូលដ្ឋាន

  • មិនត្រឹមតែការផ្លាស់ប្តូរព័ត៌មានអតិថិជន-ម៉ាស៊ីនមេសាមញ្ញប៉ុណ្ណោះទេ។ ប៉ុន្តែក៏មានការទទួលស្គាល់ម៉ាស៊ីនមេដោយស្វ័យប្រវត្តិ និងការស្វែងរកសម្រាប់ម៉ាស៊ីនមេនេះ i.e. អតិថិជនប្រហែលជាមិនដឹងអ្វីទាំងអស់អំពីម៉ាស៊ីនមេ។ ទាំងនោះ។ ម៉ាស៊ីនភ្ញៀវដំបូងស្វែងរកម៉ាស៊ីនមេ ស្វែងរកសេវាកម្មសមរម្យ យល់ពីវិធីសាស្រ្តណាដែលនៅទីនោះ អ្វី ដែលម៉ាស៊ីនមេមាន និងហៅវា។
  • ម៉ាស៊ីនមេបោះផ្សាយព័ត៌មានរបស់វា (ទីតាំង វិធីសាស្រ្តអ្វីដែលវាគាំទ្រ) ដូច្នេះអតិថិជនស្វែងរកម៉ាស៊ីនមេនេះ។ ការបោះពុម្ពកើតឡើងនៅក្នុងថត UDDI ។

រចនាសម្ព័ន្ធសារ SOAP៖

  • ស្រោមសំបុត្រ SOAP - នេះរួមបញ្ចូលទាំងសារទាំងមូល។ មានក្បាល និងតួ។
  • បឋមកថា SOAP (បឋមកថា) - ព័ត៌មានបន្ថែម (ឧទាហរណ៍ការអនុញ្ញាត) ។
  • រាងកាយ SOAP (រាងកាយ) - សារខ្លួនវាផ្ទាល់។
  • SOAP Fault (error) គឺជាវិធីសាស្រ្តនៃការបញ្ជូនកំហុសពី server ទៅកាន់ client ។

WSDL

WSDL(ភាសាពិពណ៌នាសេវាកម្មគេហទំព័រ) - ភាសាសម្រាប់ពិពណ៌នាអំពីសេវាកម្មគេហទំព័រ។ ប្រើក្នុង SOAP ។ នេះគឺជាប្រភេទឯកសារដែលពិពណ៌នាអំពីអ្វីៗគ្រប់យ៉ាង៖ ចន្លោះឈ្មោះណាដែលត្រូវប្រើ គ្រោងការណ៍ទិន្នន័យណាដែលត្រូវប្រើ ប្រភេទនៃសារដែលម៉ាស៊ីនមេរំពឹងពីអតិថិជន ស្រោមសំបុត្រណាដែលជាកម្មសិទ្ធិរបស់វិធីណា វិធីសាស្ត្រណាដែលមាន អាសយដ្ឋានអ្វីដែលត្រូវផ្ញើ។ល។ . តាមពិត WSDL គឺជាសេវាកម្មបណ្តាញ។ វាគ្រប់គ្រាន់សម្រាប់អតិថិជនដើម្បីសិក្សាមាតិកានៃឯកសារនេះ គាត់ដឹងអ្វីៗទាំងអស់អំពីម៉ាស៊ីនមេ។

ម៉ាស៊ីនមេណាមួយត្រូវតែបោះពុម្ព WSDL ។

WSDL មានប្លុក៖

  • និយមន័យនៃសេវាកម្មខ្លួនវា, i.e. ចំណុចចូល, ច្រកត្រូវបានចង្អុលបង្ហាញ។
  • ទម្រង់បែបបទ។ ចំណុចចូលត្រូវបានភ្ជាប់ទៅនឹងប្រតិបត្តិការ, i.e. តើវាគាំទ្រវិធីសាស្រ្តអ្វីខ្លះ? ប្រភេទនៃការហៅទូរស័ព្ទនិងវិធីបញ្ជូនត្រូវបានចង្អុលបង្ហាញ។ នៅខាងក្នុងវិធីសាស្រ្តនីមួយៗមានការពន្យល់អំពីទម្រង់ដែលទិន្នន័យត្រូវបានបញ្ជូន - ជាទម្រង់ SOAP ។
  • វិធីសាស្រ្តចងភ្ជាប់ទៅសារ។
  • ការពិពណ៌នាអំពីសារខ្លួនឯង។

ដូចដែលបានពិភាក្សានៅក្នុងជំពូកមុន សេវាកម្មបណ្តាញទំនាក់ទំនងជាមួយអតិថិជន និងគ្នាទៅវិញទៅមកដោយការផ្ញើសារជា XML ។ ស្លាកនៃការអនុវត្ត XML នេះ ច្បាប់សម្រាប់ធ្វើទ្រង់ទ្រាយឯកសារ XML និងលំដាប់ដែលឯកសារត្រូវបានផ្លាស់ប្តូរត្រូវបានកំណត់ដោយពិធីការ SOAP ។ ពិធីការ SOAP ត្រូវបានបង្កើតឡើងក្នុងឆ្នាំ 1998 ដោយក្រុមអ្នកអភិវឌ្ឍន៍ដែលដឹកនាំដោយ Dave Winer ដែលធ្វើការនៅ Microsoft Corporation និង Userland ។ ឈ្មោះពិធីការ - "ពិធីការចូលប្រើវត្ថុសាមញ្ញ" - ឆ្លុះបញ្ចាំងពីគោលបំណងដើមរបស់វា - ដើម្បីចូលប្រើវិធីសាស្ត្រនៃវត្ថុពីចម្ងាយ។ គោលបំណងនៃពិធីការបានផ្លាស់ប្តូរ ឥឡូវនេះវាគឺជាពិធីការសម្រាប់អន្តរកម្មណាមួយរវាងសេវាកម្មគេហទំព័រ និងសមាសធាតុនៃកម្មវិធីដែលបានចែកចាយដែលរួមបញ្ចូលគ្នា។ វាមិនសាមញ្ញទៀតទេ ហើយវាមិននិយាយអ្វីអំពីវត្ថុនោះទេ។ អ្នកអភិវឌ្ឍន៍ជាច្រើនស្នើឱ្យហៅវាថា "ពិធីការស្ថាបត្យកម្មតម្រង់ទិសសេវាកម្ម" ដោយបន្សល់ទុកអក្សរកាត់ពីមុន។ ដើម្បីបញ្ឈប់ការប៉ុនប៉ងទាំងនេះ ការបញ្ជាក់របស់ SOAP 1.2 ចែងថាពាក្យ "SOAP" នឹងមិនត្រូវបានសរសេរតាមវិធីណាមួយទៀតទេ។

នៅចុងឆ្នាំ 1999 ការអភិវឌ្ឍន៍នៃពិធីការត្រូវបានផ្ទេរទៅសម្ព័ន្ធ W3C (http:// www.w3.org/).

នៅខែឧសភា ឆ្នាំ 2000 សម្ព័ន្ធបានចេញផ្សាយកំណែ SOAP 1.1 របស់ខ្លួន។ សារដែលសរសេរដោយប្រើពិធីការ SOAP ត្រូវបានធ្វើទ្រង់ទ្រាយជាឯកសារ XML ដែលប្រើចន្លោះឈ្មោះយ៉ាងសកម្ម។ SOAP 1.1 ឈ្មោះធាតុ XML សំដៅលើការកំណត់អត្តសញ្ញាណ namespace http://schemas.xmlsoap.org/soap/envelope/ ។

សេចក្តីព្រាងទីពីរនៃ SOAP 1.2 ត្រូវបានចេញផ្សាយក្នុងឆ្នាំ 2001 ដែលឈ្មោះរបស់វានៅពេលនោះត្រូវបានគេហៅថា http://www.w3.org/2001/06/soap-envelope ។

ចំណាំថាវាជាការកំណត់អត្តសញ្ញាណឈ្មោះ មិនមែនជាលេខ 1.1 ឬ 1.2 ដែលកំណត់កំណែ SOAP ។ ម៉ាស៊ីនមេនឹងមិនពិចារណាសារ SOAP ហើយនឹងត្រឡប់សារកំហុសប្រសិនបើវាកត់សម្គាល់

namespace មិនត្រូវគ្នា។

ដូចដែលខ្ញុំសរសេរនេះ SOAP 1.1 នៅតែដំណើរការ។ កំណែ 1.2 មិនអាចចាកចេញពីដំណាក់កាលត្រៀមបានទេ ប៉ុន្តែត្រូវបានប្រើប្រាស់រួចហើយ ឧទាហរណ៍នៅក្នុង SOAP::Lite, Apache SOAP 2.3, Apache Axis។ ដូច្នេះហើយ នៅក្នុងជំពូកនេះ ខ្ញុំនឹងរៀបរាប់អំពីកំណែ 1.2 ដោយកត់សម្គាល់ពីភាពខុសគ្នារបស់វាពីកំណែ 1.1។

ការបញ្ជាក់អំពី SOAP ដែលកំពុងដំណើរការតែងតែត្រូវបានរក្សាទុកនៅ http://www.w3.org/TR/SOAP/ ។ ឯកសារដែលមានទីតាំងនៅអាសយដ្ឋាននេះត្រូវបានជំនួសដោយឯកសារថ្មីនៅពេលដែលកំណែការងារត្រូវបានជំនួស។

កំណែព្រាងនៃ SOAP ត្រូវបានធ្វើបច្ចុប្បន្នភាពជាបន្តបន្ទាប់ ហើយការកំណត់អត្តសញ្ញាណឈ្មោះផ្លាស់ប្តូរ។ សេចក្តីព្រាងថ្មីបំផុតនៅពេលសរសេរមានទីតាំងនៅ http://www.w3.org/TR/soapl2-partl/ ហើយទំហំឈ្មោះដែលវាប្រើគឺ http://www.w3.org/2002/06/soap- ស្រោមសំបុត្រ។ ចំណាំថាការបញ្ជាក់របស់ SOAP 12 មានពីរផ្នែក៖ ផ្នែកទី 1 និងផ្នែកទី 2 ។ ផ្នែកទីពីរនៃការបញ្ជាក់ - កម្មវិធី - មានច្បាប់សម្រាប់កត់ត្រាប្រភេទទិន្នន័យស្មុគស្មាញ។ ការបញ្ជាក់មានផ្នែកមួយបន្ថែមទៀត partO - ឧទាហរណ៍នៃសារដែលបានចងក្រងដោយយោងទៅតាមច្បាប់នៃ SOAP 1.2 ។

រចនាសម្ព័ន្ធសារ SOAP

ការបញ្ជាក់កំណត់សារ SOAP ជាឯកសារ XML ដែលមិនមានការប្រកាសប្រភេទឯកសារ ឬសេចក្តីណែនាំអំពីដំណើរការ។ ធាតុដើមនៃឯកសារ XML នេះត្រូវបានគេហៅថា . ធាតុ​មួយ​អាច​មាន​គុណលក្ខណៈ​ដែល​កំណត់​ចន្លោះ​ឈ្មោះ

និងគុណលក្ខណៈផ្សេងទៀតដែលផ្តល់ដោយបុព្វបទ។ ធាតុ root មានធាតុស្រេចចិត្តមួយដែលមានបឋមកថាសារ និងធាតុដែលត្រូវការមួយ។ ដែលក្នុងនោះខ្លឹមសារនៃសារត្រូវបានកត់ត្រា។ កំណែ 1.1 ត្រូវបានអនុញ្ញាតបន្ទាប់ពីរាងកាយ ដើម្បីសរសេរធាតុតាមអំពើចិត្ត ឈ្មោះរបស់ពួកគេត្រូវដាក់បុព្វបទ។ កំណែ 1.2 ហាមឃាត់ការសរសេរអ្វីបន្ទាប់ពីធាតុ . សរុបមក រចនាសម្ព័ន្ធទូទៅនៃសារ SOAP គឺ៖

xmlns:env="http://www.w3.org/2002/06/soap-envelope">

< ! - Блоки заголовка ->

ធាតុ

ប្រសិនបើវាស្ថិតនៅក្នុងសារ វាត្រូវបានសរសេរជាមុននៅក្នុងតួនៃធាតុ . បន្ថែមពីលើគុណលក្ខណៈ xmlns វាអាចមានគុណលក្ខណៈតួសម្តែង ដែលបង្ហាញពីអាសយដ្ឋាន URI នៃម៉ាស៊ីនមេ SOAP ជាក់លាក់ដែលសារមានបំណង។

ការពិតគឺថាសារ SOAP អាចឆ្លងកាត់ម៉ាស៊ីនមេ SOAP ជាច្រើន ឬតាមរយៈកម្មវិធីជាច្រើននៅលើម៉ាស៊ីនមេតែមួយ។ កម្មវិធីទាំងនេះដំណើរការជាមុន ប្លុកបឋមកថាសារ ហើយបញ្ជូនវាទៅគ្នាទៅវិញទៅមក។ ម៉ាស៊ីនមេ និង/ឬកម្មវិធីទាំងអស់នេះត្រូវបានគេហៅថាថ្នាំង SOAP ។ ការបញ្ជាក់របស់ SOAP មិនកំណត់ច្បាប់សម្រាប់ការបញ្ជូនសារតាមរយៈខ្សែសង្វាក់នៃម៉ាស៊ីនមេទេ។ ចំពោះគោលបំណងនេះ ពិធីការផ្សេងទៀតកំពុងត្រូវបានបង្កើតឡើង ឧទាហរណ៍ Microsoft WS-Routing។

គុណលក្ខណៈតួសម្តែងបញ្ជាក់ថ្នាំង SOAP គោលដៅ - ដែលមានទីតាំងនៅចុងបញ្ចប់នៃខ្សែសង្វាក់ ហើយនឹងដំណើរការបឋមកថាទាំងមូល។ អត្ថន័យ

គុណលក្ខណៈតួសម្តែងបង្ហាញថាបឋមកថានឹងត្រូវបានដំណើរការដោយម៉ាស៊ីនមេដំបូងដែលទទួលវា។ បន្ទាប់ពីដំណើរការ ប្លុកត្រូវបានយកចេញពីសារ SOAP ។

នៅក្នុងកំណែ 1.2 គុណលក្ខណៈតួសម្តែងត្រូវបានជំនួសដោយគុណលក្ខណៈតួនាទី ពីព្រោះនៅក្នុងកំណែ SOAP នេះ ថ្នាំងនីមួយៗដើរតួនាទីមួយ ឬច្រើន។ ការបញ្ជាក់បច្ចុប្បន្នកំណត់តួនាទីថ្នាំង SOAP ចំនួនបី។

តួនាទីរបស់ http://^^.w3.org/2002/06/soap-envelope/role/ultimateReceiver ត្រូវបានលេងដោយថ្នាំងគោលដៅចុងក្រោយដែលនឹងដំណើរការបឋមកថា។

តួនាទី http://www.w3.org/2002/06/soap-envelope/role/next ត្រូវបានលេងដោយថ្នាំងកម្រិតមធ្យម ឬគោលដៅ។ ថ្នាំងបែបនេះអាចដើរតួនាទីបន្ថែមផ្សេងទៀត។

តួនាទី http://www.w3.org/2002/06/soap-envelope/role/none មិនគួរត្រូវបានលេងដោយថ្នាំង SOAP ណាមួយឡើយ។

កម្មវិធីដែលបានចែកចាយ ដោយផ្អែកលើតម្រូវការរបស់ពួកគេ អាចបន្ថែមតួនាទីផ្សេងទៀតទៅតួនាទីទាំងនេះ ឧទាហរណ៍ ណែនាំម៉ាស៊ីនមេកម្រិតមធ្យមដែលផ្ទៀងផ្ទាត់ហត្ថលេខាឌីជីថល និងកំណត់តួនាទីនេះសម្រាប់វាជាមួយនឹងខ្សែអក្សរ URI មួយចំនួន។

តម្លៃនៃគុណលក្ខណៈតួនាទីអាចជាខ្សែអក្សរ URI ណាមួយដែលបង្ហាញពីតួនាទីរបស់ថ្នាំងដែលប្លុកបឋមកថានេះមានបំណង។ តម្លៃលំនាំដើមសម្រាប់គុណលក្ខណៈនេះគឺជាតម្លៃទទេ នោះគ្រាន់តែជាការដកស្រង់មួយគូ ឬខ្សែអក្សរ URI http://\vw\v.w3.org/2002/06/soap-envelope/rale/ultimateReceiver ។

តម្លៃនៃគុណលក្ខណៈតួនាទីបង្ហាញថាប្លុកគួរតែត្រូវបានដំណើរការដោយថ្នាំងដែលលេងតួនាទីដែលបានបញ្ជាក់ដោយខ្សែអក្សរដូចគ្នា។

គុណលក្ខណៈធាតុមួយទៀត

ហៅថា urnstUnderstand យកតម្លៃ o ឬ 1. តម្លៃលំនាំដើមរបស់វាគឺ o ។ ប្រសិនបើគុណលក្ខណៈត្រូវតែយល់ស្មើ 1 នោះថ្នាំង SOAP នៅពេលដំណើរការធាតុ ត្រូវតែគិតគូរពីវាក្យសម្ព័ន្ធរបស់វាដែលបានកំណត់ក្នុងគ្រោងការណ៍ឯកសារ ឬមិនដំណើរការសារទាល់តែសោះ។ នេះបង្កើនភាពត្រឹមត្រូវនៃដំណើរការសារ។

នៅក្នុង SOAP កំណែ 1.2 ជំនួសឱ្យលេខ o អ្នកត្រូវសរសេរពាក្យមិនពិត ហើយជំនួសឱ្យលេខ 1 សូមសរសេរពាក្យពិត។

នៅក្នុងតួក្បាល

អ្នកអាចដាក់ធាតុតាមអំពើចិត្ត ដែលពីមុនហៅថាធាតុបឋមកថា។ នៅក្នុងកំណែ 1.2 ទាំងនេះត្រូវបានគេហៅថាប្លុកបឋមកថា។ ឈ្មោះរបស់ពួកគេត្រូវបានសម្គាល់ដោយបុព្វបទ។ ប្លុកបឋមកថាអាចមានតួនាទី ឬតួសម្តែង និងត្រូវយល់អំពីគុណលក្ខណៈ។ សកម្មភាពរបស់ពួកគេនឹងអនុវត្តចំពោះប្លុកនេះតែប៉ុណ្ណោះ។ នេះអនុញ្ញាតឱ្យប្លុកបឋមកថានីមួយៗត្រូវបានដំណើរការដោយថ្នាំង SOAP កម្រិតមធ្យម ដែលតួនាទីរបស់ពួកគេត្រូវគ្នានឹងតួនាទីដែលបានបញ្ជាក់ដោយគុណលក្ខណៈតួនាទី។ ការចុះបញ្ជី 3.1 បង្ហាញពីឧទាហរណ៍នៃប្លុកបែបនេះ។

ការចុះបញ្ជី 3.1 ។ បឋមកថាជាមួយប្លុកមួយ។

xmlns:t="http://some.com/transaction" env:role=

"http://www.w3.org/2002/06/soap-envelope/role/ultimateReceiver" env:mustUnderstand="1">

ធាតុដែលដាក់នៅក្នុងប្លុកបឋមកថាលែងត្រូវបានគេហៅថាប្លុកទៀតហើយ។ ពួកគេមិនអាចមានតួនាទី តួសម្តែង និងគុណលក្ខណៈដែលត្រូវយល់នោះទេ។

ធាតុ ត្រូវតែសរសេរភ្លាមៗបន្ទាប់ពីធាតុ

ប្រសិនបើវាស្ថិតនៅក្នុងសារ ឬដំបូងនៅក្នុងសារ SOAP ប្រសិនបើក្បាលបាត់។ ទៅធាតុ អ្នកអាចដាក់ធាតុតាមអំពើចិត្ត ការបញ្ជាក់មិនកំណត់រចនាសម្ព័ន្ធរបស់ពួកគេតាមវិធីណាមួយឡើយ។ ទោះយ៉ាងណាក៏ដោយ ធាតុមួយត្រូវបានកំណត់ដែលមានសារកំហុស។

សារកំហុស

ប្រសិនបើម៉ាស៊ីនមេ SOAP ខណៈពេលដែលដំណើរការសារ SOAP ដែលទទួលបានដោយវាកត់សម្គាល់កំហុស វានឹងឈប់ដំណើរការ ហើយផ្ញើសារ SOAP ទៅកាន់អតិថិជន ដែលនៅក្នុងតួរបស់វានឹងសរសេរធាតុមួយ ជាមួយនឹងសារកំហុស។

នៅក្នុងសារដែលសរសេរនៅក្នុងតួនៃធាតុ SOAP 1.1,

មានបួនផ្នែកដែលពិពណ៌នាដោយធាតុរងខាងក្រោម។

លេខកូដកំហុស - សារបង្ហាញពីប្រភេទនៃកំហុស។ វាត្រូវបានបម្រុងទុកសម្រាប់កម្មវិធីដែលដោះស្រាយកំហុស។

ការពិពណ៌នាអំពីកំហុស - ការពិពណ៌នាពាក្យសំដីនៃប្រភេទនៃកំហុសដែលមានបំណងសម្រាប់មនុស្សម្នាក់។

កន្លែងដែលកំហុសត្រូវបានរកឃើញ - URI នៃម៉ាស៊ីនមេដែលបានកត់សម្គាល់កំហុស។ មានប្រយោជន៍នៅពេលដែលសារឆ្លងកាត់ខ្សែសង្វាក់នៃថ្នាំង SOAP ដើម្បីបញ្ជាក់អំពីលក្ខណៈនៃកំហុស។ ថ្នាំង SOAP កម្រិតមធ្យមគឺត្រូវបានទាមទារដើម្បីកត់ត្រាធាតុនេះ ម៉ាស៊ីនមេ SOAP គោលដៅមិនត្រូវបានទាមទារដើម្បីធ្វើដូច្នេះទេ។

ព័ត៌មានលម្អិតអំពីកំហុស - ពិពណ៌នាអំពីកំហុសដែលជួបប្រទះនៅក្នុងខ្លួន សារ ប៉ុន្តែមិននៅក្នុងចំណងជើងរបស់វាទេ។ ប្រសិនបើគ្មានកំហុសត្រូវបានរកឃើញកំឡុងពេលដំណើរការរាងកាយទេ នោះធាតុនេះត្រូវបានបាត់។

ឧទាហរណ៍៖

xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">

env: ត្រូវតែយល់ SOAP ត្រូវតែយល់ពីកំហុស

SOAP កំណែ 1.2 បានផ្លាស់ប្តូរខ្លឹមសារនៃធាតុ ដូចដែលបានពិពណ៌នានៅក្នុង

namespace http://www.w3.org/2002/06/soap-envelope វារួមបញ្ចូលធាតុចាំបាច់ពីរ និងធាតុស្រេចចិត្តបី។

ធាតុចាំបាច់។

លេខកូដកំហុស . វាមានធាតុរងដែលត្រូវការ<:value>ជាមួយនឹងលេខកូដកំហុស និងធាតុរងស្រេចចិត្ត មាន, ម្តងទៀត, ធាតុ ជាមួយនឹងកូដកំហុស និងធាតុច្បាស់លាស់ ហើយបន្ទាប់មកអ្វីៗគ្រប់យ៉ាងត្រូវបានធ្វើម្តងទៀតដោយរបៀបរៀបរយ។

ហេតុផលសម្រាប់កំហុស . មានគុណលក្ខណៈ xml ស្រេចចិត្ត៖ lang ដែលបង្ហាញភាសានៃសារ (សូមមើលជំពូក D) និងចំនួនតាមអំពើចិត្តនៃធាតុដែលជាប់គ្នាដែលពិពណ៌នាអំពីកំហុស។

ធាតុស្រេចចិត្ត។

? - URI នៃថ្នាំង SOAP កម្រិតមធ្យមដែលបានកត់សម្គាល់កំហុស។

? - តួនាទីរបស់ថ្នាំង SOAP ដែលបានកត់សម្គាល់កំហុស។

? - ការពិពណ៌នាអំពីកំហុសដែលបានកត់សម្គាល់នៅពេលដំណើរការរាងកាយ សារ ប៉ុន្តែមិនមែនចំណងជើងទេ។

ការចុះបញ្ជី 3.2 បង្ហាញសារកំហុសដែលបានកើតឡើងនៅពេលព្យាយាមអនុវត្តនីតិវិធីមួយ។ កំហុសគឺថាឈ្មោះនៃអាគុយម៉ង់នៃនីតិវិធីត្រូវបានសរសេរមិនត្រឹមត្រូវនៅក្នុងសារ SOAP ហើយនីតិវិធីមិនអាចយល់ពីពួកគេ។

ការចុះបញ្ជី 3.2 ។ សារកំហុស

xmlns:env="http://www.w3.org/2002/06/soap-envelope" xmlns:rpc='http://www.w3.org/2002/06/soap-rpc'>

env: អ្នកផ្ញើ

rpc:BadArgumentsc/env:Value>

ការកែច្នៃ ETror

xmlns:e="http://www.example.org/faults"> №meមិនត្រូវគ្នាទេ។ 999

ប្រភេទនៃកំហុស

បញ្ជីនៃកូដកំហុសកំពុងផ្លាស់ប្តូរ និងពង្រីកឥតឈប់ឈរ។ កំណែ 1.1 កំណត់កំហុសបួនប្រភេទ។

VersionMismatch - namespace មិនត្រូវបានទទួលស្គាល់ទេ។ វាអាចហួសសម័យ ឬឈ្មោះរបស់វាអាចនឹងសរសេរខុស។

MustUnderstand - ប្លុកបឋមកថាដែលសម្គាល់ដោយគុណលក្ខណៈ mustUnderstand ដែលមានតម្លៃ 1 មិនអនុលោមតាមវាក្យសម្ព័ន្ធរបស់វាដូចដែលបានកំណត់ក្នុងគ្រោងការណ៍ឯកសារ។

ម៉ាស៊ីនភ្ញៀវ - ឯកសារ XML ដែលមានសារគឺខុស ហើយសម្រាប់ហេតុផលនេះ ម៉ាស៊ីនមេមិនអាចដំណើរការវាបានទេ។ អតិថិជនគួរតែផ្លាស់ប្តូរសារ។

ម៉ាស៊ីនមេ - ម៉ាស៊ីនមេមិនអាចដំណើរការសារដែលបានកត់ត្រាត្រឹមត្រូវទេ ដោយសារហេតុផលខាងក្នុងរបស់វា។

កំណែ 1.2 កំណត់ប្រភេទនៃកំហុសចំនួនប្រាំ។

VersionMismatch - namespace មិនត្រូវបានទទួលស្គាល់ទេ។ វាអាចហួសសម័យ ឬឈ្មោះរបស់វាអាចប្រកបខុស ឬអាចមានឈ្មោះធាតុ XML នៅក្នុងសារដែលមិនត្រូវបានកំណត់ក្នុងចន្លោះឈ្មោះនោះ។ ម៉ាស៊ីនមេសរសេរធាតុទៅបឋមកថាឆ្លើយតប , រាប់បញ្ចូលធាតុដែលជាប់ ឈ្មោះលំហត្រឹមត្រូវដែលយល់ដោយម៉ាស៊ីនមេ។ ការឆ្លើយតបរបស់ម៉ាស៊ីនមេត្រូវបានបង្ហាញនៅក្នុងបញ្ជី 3.3 ។

MustUnderstand - ប្លុកបឋមកថាដែលសម្គាល់ដោយគុណលក្ខណៈត្រូវតែយល់ដែលកំណត់ទៅពិតមិនអនុលោមតាមវាក្យសម្ព័ន្ធរបស់វាដូចដែលបានកំណត់ក្នុងគ្រោងការណ៍ឯកសារនោះទេ។ ម៉ាស៊ីនមេសរសេរធាតុខាងក្រោមទៅបឋមកថាឆ្លើយតប៖ ដែលគុណលក្ខណៈ qname មានឈ្មោះប្លុកមិនត្រឹមត្រូវ។ ការចុះបញ្ជី 3.4 មានឧទាហរណ៍នៃការឆ្លើយតបដែលម៉ាស៊ីនមេនឹងធ្វើប្រសិនបើបឋមកថានៅក្នុងបញ្ជី 3.1 ត្រូវបានសរសេរខុស។

DataEncodingUnknown - សារមានទិន្នន័យដែលមិនអាចយល់បាន ប្រហែលជាវាត្រូវបានសរសេរនៅក្នុងការអ៊ិនកូដមិនស្គាល់។

អ្នកផ្ញើ - ឯកសារ XML ដែលមានសារគឺខុស ហើយសម្រាប់ហេតុផលនេះ ម៉ាស៊ីនមេមិនអាចដំណើរការវាបានទេ។ អតិថិជនគួរតែផ្លាស់ប្តូរសារ។

អ្នកទទួល - ម៉ាស៊ីនមេមិនអាចដំណើរការសារដែលបានកត់ត្រាត្រឹមត្រូវសម្រាប់ហេតុផលខាងក្នុងរបស់វាទេ ឧទាហរណ៍ ឧបករណ៍ញែក XML ដែលត្រូវការត្រូវបានបាត់។

ម៉ាស៊ីនមេអាចបន្ថែមប្រភេទខ្លះរបស់វាទៅប្រភេទកំហុសទាំងនេះ។ ជាធម្មតា

ពួកគេរៀបរាប់លម្អិតអំពីប្រភេទស្តង់ដារ និងសារអំពីពួកវាបង្ហាញនៅក្នុងធាតុ ដូចដែលបានបង្ហាញខាងលើក្នុងបញ្ជី 3.2 ។

? ការចុះបញ្ជី 3.3 ។ ការឆ្លើយតបរបស់ម៉ាស៊ីនមេជាមួយនឹងសារកំហុសដូចជា VersionMismatch

xmlns:env="http://www.w3.org/2002/06/soap-envelope">

xmlns:upg="http://www.w3.org/2002/06/soap-upgrade">

xmlns:nsl="http://www.w3.org/2002/06/soap-envelope"/>

xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/"/>

env:VersionMismatch

កំណែ​មិន​ត្រូវ​គ្នា

ListongZ.4. ការឆ្លើយតបរបស់ម៉ាស៊ីនមេជាមួយនឹងសារកំហុសដូចជា MustUnderstand

xmlns:t='http://some.com/transaction' />

env: ត្រូវតែយល់

បឋមកថាចាំបាច់មួយ ឬច្រើនមិនយល់

អក្សរសិល្ប៍៖

Khabibullin I. Sh. ការអភិវឌ្ឍន៍សេវាកម្មគេហទំព័រដោយប្រើ Java ។ - សាំងពេទឺប៊ឺគៈ BHV-Petersburg, 2003. - 400 p.: ill.