Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π—Π«Πš ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ˜Π ΠžΠ’ΠΠΠ˜Π― Π‘# 2005 И ΠŸΠ›ΠΠ’Π€ΠžΠ ΠœΠ .NET 2.0. 3-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 250

Автор Π­Π½Π΄Ρ€ΡŽ ВроСлсСн

Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях WSDL-описаниС Web-сСрвиса XML автоматичСски гСнСрируСтся сСрвСром IIS Microsoft, Ссли ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠΉ запрос ΠΈΠΌΠ΅Π΅Ρ‚ суффикс ?wsdl. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌΠΈ потрСбитСлями WSDL-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ² ΡΠ²Π»ΡΡŽΡ‚ΡΡ инструмСнты гСнСрирования Π°Π³Π΅Π½Ρ‚ΠΎΠ². НапримСр, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки wsdl.exe (Π΅Π΅ обсуТдСниС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅) Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ клиСнтский C#-класс Π°Π³Π΅Π½Ρ‚Π° Π½Π° основС ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎΡΡ WSDL-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

Π’ Π±ΠΎΠ»Π΅Π΅ слоТных случаях (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ с Ρ†Π΅Π»ΡŒΡŽ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ совмСстимости) ΠΏΡ€ΠΈ построСнии Web-сСрвисов ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ сначала Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ опрСдСляСтся WSDL-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ упомянутая Π²Ρ‹ΡˆΠ΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки wsdl.exe ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ описания интСрфСйса для Web-сСрвиса XML ΠΈ Π½Π° основС WSDL-опрСдСлСния.

Вранспортный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»

ПослС создания Ρ‚ΠΈΠΏΠ° Π°Π³Π΅Π½Ρ‚Π° для взаимодСйствия с Web-сСрвисом XML ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ доступныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Как ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π»ΠΎΡΡŒ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сСтСвого ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP. Π’ частности, для ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ потрСбитСлями ΠΈ Web-сСрвисами ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ HTTP-ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ GET ΠΈ POST ΠΈΠ»ΠΈ SOAP.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, основным Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ оказываСтся SOAP, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ, ΠΊΠ°ΠΊ Π²Ρ‹ вскорС ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, сообщСния SOAP ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ XML-описания слоТных Ρ‚ΠΈΠΏΠΎΠ² (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΈ Ρ‚ΠΈΠΏΡ‹ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов .NET), ΠŸΡ€ΠΈ использовании HTTP-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² GET ΠΈ POST Π²Π°ΠΌ придСтся ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ·ΠΊΠΈΠΌ мноТСством Ρ‚ΠΈΠΏΠΎΠ² XML-схСмы.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ .NET для Web-сСрвисов XML

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ Π±Π°Π·Π° для понимания ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² функционирования Web-сСрвисов XML, ΠΌΡ‹ с Π²Π°ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π½ΡΡ‚ΡŒΡΡ построСниСм Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ†Π΅Π»Ρ‹ΠΉ ряд пространств ΠΈΠΌΠ΅Π½, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… взаимодСйствиС с любой ΠΈΠ· доступных Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ использования Web-сСрвисов (Ρ‚Π°Π±Π». 25.1).

Π’Π°Π±Π»ΠΈΡ†Π° 25.1. ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Web-сСрвисами XML 

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ ОписаниС System.Web.Services Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ [WebMethod]), Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для построСния любого Web-сСрвиса XML System.Web.Services.Configuration Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Ρ‚ΠΈΠΏΡ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Web-сСрвиса XML Π² срСдС выполнСния ASP.NET System.Web.Services.Description Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Ρ‚ΠΈΠΏΡ‹, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ взаимодСйствиС с WSDL-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΠΌ описаниС Π΄Π°Π½Π½ΠΎΠ³ΠΎ Web-сСрвиса System.Web.Services.Discovery Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Ρ‚ΠΈΠΏΡ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ потрСбитСлям Web-сСрвисов Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ поиск Web-сСрвисов Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ машинС System.Web.Services.Protocols ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ряд Ρ‚ΠΈΠΏΠΎΠ², ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… "Π°Ρ‚ΠΎΠΌΡ‹" Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² связи Web-сСрвисов XML (HTTP-ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ get ΠΈ POST, Π° Ρ‚Π°ΠΊΠΆΠ΅ SOAP)

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ВсС пространства ΠΈΠΌΠ΅Π½, связанныС с Web-сСрвисами XML, содСрТатся Π² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ System.Web.Services.dll.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ System.Web.Services

НСсмотря Π½Π° Π±ΠΎΠ³Π°Ρ‚Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности, обСспСчиваСмыС всСми пространствами ΠΈΠΌΠ΅Π½ .NET, связанными с Web-сСрвисами XML, ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ нСпосрСдствСнного взаимодСйствия Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π² System.Web.Services. Как становится ясно ΠΈΠ· Ρ‚Π°Π±Π». 25.2, количСство Ρ‚Π°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² достаточно Π½Π΅Π²Π΅Π»ΠΈΠΊΠΎ (Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ).

Π’Π°Π±Π»ΠΈΡ†Π° 25.2. Π§Π»Π΅Π½Ρ‹ пространства ΠΈΠΌΠ΅Π½ System.Web.Services

Π’ΠΈΠΏ ОписаниС WebMethodAttribute Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° [WebMethod] Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ»ΠΈ свойство Ρ‚ΠΈΠΏΠ° класса Web-сСрвиса ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‡Π»Π΅Π½Π° срСдствами HTTP ΠΈ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ XML WebService ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс построСния Web-сСрвисов XML Π² .NET. ΠŸΡ€ΠΈ использовании этого класса ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ Web-сСрвис XML Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ "Π°ΠΊΠΊΡƒΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ" ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ состояния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ сСанса ΠΈ прилоТСния) WebServiceAttribute Атрибут [WebService] ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для добавлСния Π² Web-сСрвис ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ строка с описаниСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй сСрвиса ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… пространств ΠΈΠΌΠ΅Π½ XML WebServiceBindingAttribute Π­Ρ‚ΠΎΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ (появившийся Π² .NET 2.0) ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Web-сСрвиса (HTTP-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ get ΠΈ POST ΠΈΠ»ΠΈ SOAP), ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ совмСстимости (WSI) Web-сСрвиса WsiProfiles Π­Ρ‚ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ (появившийся Π² .NET 2.0) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для описания спСцификаций WSI (Web Services Interoperability – Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Web-сСрвисов), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ Web-сСрвис

ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ пространства ΠΈΠΌΠ΅Π½, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π». 25.1, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ Π²Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с WSDL-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, слуТбами поиска ΠΈΠ»ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ сСтСвыми ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ. ВсС подробности ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ .NET Framework 2.0 SDK.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Web-сСрвиса XML Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ

Как ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ .NET, Web-сСрвисы XML ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π±Π΅Π· использования ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Visual Studio 2005. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ возмоТности использования Web-сСрвисов XML, Π΄Π°Π²Π°ΠΉΡ‚Π΅ построим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ простого Web-сСрвиса XML Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° создайтС Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ HelloWorldWebService.asmx (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для обозначСния Ρ„Π°ΠΉΠ»ΠΎΠ² Web-сСрвисов .NET ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ *.asmx). Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» Π² подходящСм мСстС Π½Π° своСм ТСстком дискС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΏΠ°ΠΏΠΊΠ΅ C:\HelloWorldWebService), Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°.

β€Ή%@ WebService Language="C#" Class="HelloWebService.HelloService" %β€Ί

using System;

using System.Web.Services;

namespace HelloWebService {

 public class HelloService {

  [WebMethod]

  public string HelloWorld() {

   return "Hello!";

  }

 }

}

Π’ основном, Ρ„Π°ΠΉΠ» *.asmx выглядит Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π»ΡŽΠ±ΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ пространства ΠΈΠΌΡ‘Π½ C#. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ достойным внимания ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ здСсь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° β€Ή%@WebService%β€Ί, которая Π΄ΠΎΠ»ΠΆΠ½Π°, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ управляСмого языка, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для опрСдСлСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ класса, ΠΈ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя этого класса. Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ Language ΠΈ Class Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° β€Ή%@WebService%β€Ί ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Debug, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ компилятор ASP.NET ΠΎ нСобходимости гСнСрирования символов ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, ΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ CodeBehind, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ связанный Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° App_Code (см. Π³Π»Π°Π²Ρƒ 23). Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π½Π΅ собираСмся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ внСшний Ρ„Π°ΠΉΠ» ΠΊΠΎΠ΄Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ, Π° встроим всю Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ нСпосрСдствСнно Π² Ρ„Π°ΠΉΠ»

ΠšΡ€ΠΎΠΌΠ΅ использования Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ β€Ή%@WebService%β€Ί, Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ это-Π³ΠΎ Ρ„Π°ΠΉΠ»Π° *.asmx являСтся использованиС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° [WebMethod], ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ срСду выполнСния ASP.NET ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ доступСн для ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΡ… HTTP-запросов ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ XML.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… HTTP ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ доступными Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π»Π΅Π½Ρ‹, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ [WebMethod]. Π§Π»Π΅Π½Ρ‹, Π½Π΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ [WebMethod], Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π°Π³Π΅Π½Ρ‚ΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

ВСстированиС Web-сСрвиса XML с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ WebDev.WebServer.exe

Напомним (снова см. Π³Π»Π°Π²Ρƒ 23), Ρ‡Ρ‚ΠΎ WebDev.WebServer.exe являСтся сСрвСром Web-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ASP.NET, поставляСмым Π² составС дистрибутива .NET Framework 2.0 SDK. И хотя WebDev.WebServer.exe Π½Π΅ прСдполагаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для обслуТивания Web-сСрвисов XML производствСнного уровня, этот инструмСнт позволяСт Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Web-содСрТимоС нСпосрСдствСнно ΠΈΠ· локального ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ своСго сСрвиса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого инструмСнта ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Visual Studio 2005 ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΡƒΠΊΠ°Π·Π°Π² свободный Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΡ€Ρ‚Π° ΠΈ физичСский ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ, содСрТащСму ваш Ρ„Π°ΠΉΠ» *.asmx.

WebDev.Webserver /port:4000 /path:"C:\HelloWorldWebService"

ПослС запуска Web-сСрвСра ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ любой Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π² Π΅Π³ΠΎ ΠΎΠΊΠ½Π΅ имя своСго Ρ„Π°ΠΉΠ»Π° *.asmx, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΡ€Ρ‚Π°.

http://localhost:4000/HelloWorldWebService.asmx

Π’Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ список всСх Web-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², доступных ΠΏΠΎ этому адрСсу URL (рис. 25.2).

Рис. 25.2. ВСстированиС Web-сСрвиса XML

Если Π² ΠΎΠΊΠ½Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Π²Ρ‹ Ρ‰Π΅Π»ΠΊΠ½Π΅Ρ‚Π΅ Π½Π° ссылкС HelloWorld, откроСтся другая страница, которая ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ [WebMethod], Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Π²Π°ΠΌΠΈ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹Π·ΠΎΠ²Π° HelloWorld() Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π° Π½Π΅ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½Π°Ρ строка .NET System.String, a XML-прСдставлСниС тСкстовых Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Web-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ HelloWorld().