<s:element name="DoSomething" >
<s:complexType>
<s:sequence>
<s:element name="stringParam" nullable="true" type="s:string" />
<s:element name="intParam" nullable="true" type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="DoSomethingResponse">
<s:complexType>
<s:sequence>
<s:element name="DoSomethingResult" type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="int" type="s:int" />
</s:schema>
</types>
... Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ...
</definitions>
ΠΡΠ΅, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΎΡΠ²Π΅ΡΠΎΠ² SOAP ΠΈ HTTP, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π²ΠΈΠ΄Π΅Π»ΠΈ ΡΠ°Π½Π΅Π΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΡΠΈΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°Π»Π΅Π΅ Π² ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ. ΠΡΠ΅ ΡΠΈΠΏΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΡΡ Π΅ΠΌΡ XML, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
<s:element name="DoSomethingResponse">
<s:complexType>
<s:sequence>
<s:element name="DoSomethingResult" type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ <DoSomethingResponse> ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ-ΠΏΠΎΡΠΎΠΌΠΎΠΊ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ <DoSomethingResult>, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ.
ΠΡΠ»ΠΈ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠ΄Ρ WSDL Π΄Π»Ρ ΡΠ»ΡΠΆΠ±Ρ Web, ΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ°ΠΊ ΠΌΡ ΡΠΊΠΎΡΠΎ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΡΡΡΠ΄Π½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΊΡΠ°ΡΠΊΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ SOAP ΠΈ WSDL, ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ»ΡΠΆΠ±Ρ Web.
Π‘Π»ΡΠΆΠ±Ρ Web
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ»ΡΠΆΠ± Web Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π΄Π²Π° Π²ΠΎΠΏΡΠΎΡΠ°:
β‘ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ»ΡΠΆΠ± Web, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠ»ΡΠΆΠ± Web ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ Web.
β‘ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»ΡΠΆΠ± Web, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΡΠ»ΡΠΆΠ±.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ»ΡΠΆΠ± Web
Π‘Π»ΡΠΆΠ±Ρ Web ΡΠΎΠ·Π΄Π°ΡΡ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Ρ ΠΊΠΎΠ΄ ΠΏΡΡΠΌΠΎ Π² ΡΠ°ΠΉΠ»Ρ .asmx, Π»ΠΈΠ±ΠΎ, ΡΡΡΠ»Π°ΡΡΡ Π½Π° ΠΊΠ»Π°ΡΡΡ ΡΠ»ΡΠΆΠ±Ρ Web ΠΈΠ· ΡΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ°ΠΊ ΠΈ ΡΠΎ ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ ASP.NET, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ»ΡΠΆΠ±Ρ Web Π² VS.NET ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΈ ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠ΅Π»Π΅ΠΉ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ»ΡΠΆΠ±Ρ Web, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ PCSWebSrv1, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅, ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ, ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Web, ΠΊ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΌΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ WebForm1.aspx ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Service1.asmx. Π‘ΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» .vsdisco ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ»ΡΠΆΠ±Ρ Web, ΡΡΠΎΠ±Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Visual Studio .NET, ΠΊΠ°ΠΊ ΠΌΡ Π²ΡΠΊΠΎΡΠ΅ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΠΌΠΎΠ³Π»Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π° Π½Π΅Π³ΠΎ ΡΡΡΠ»ΠΊΡ Web.
ΠΠΎΠ΄ Π² Service1.asmx Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ΅ΡΠ΅Π· VS.NET, Π½ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Notepad ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠ΄Π°:
<%@ WebService Language="c#" Codebehind="Service1.asmx.cs" Class="PCSWebSrv1.Service1" %>
ΠΡΠΎΡ ΠΊΠΎΠ΄ ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° ΡΠ°ΠΉΠ» ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² VS.NET, β Service1.asmx.cs, Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ ΠΏΡΠΈ ΡΠ΅Π»ΡΠΊΠ΅ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ Π½Π° Service1.asmx Π² Solution Explorer ΠΈ Π²ΡΠ±ΠΎΡΠ΅ View Code. Π‘ΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌΠΈ Π΄Π»Ρ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅:
namespace PCSWebSrv1 {
using system;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
public class Service1 : System.Web.Services.WebService {
public Service1() {
InitializeComponent();
}
private void InitializeComponent() {
}
public override void Dispose() {
}
}
}
ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ PCSWebSrv1 Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΈ ΠΊΠ»Π°ΡΡ ΡΠ»ΡΠΆΠ±Ρ Web Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Service1 (ΡΡΡΠ»ΠΊΡ Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π²ΠΈΠ΄Π΅Π»ΠΈ Π²ΡΡΠ΅ Π² ΡΠ°ΠΉΠ»Π΅ Service1.asmx), ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΉ ΠΎΡ System.Web.Services.WebService. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠ»ΡΠΆΠ±Ρ Web.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π· ΡΠ»ΡΠΆΠ±Ρ Web, ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠ°ΠΊ public ΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π΄Π»Ρ Π½Π΅Π³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠ° WebMethod. ΠΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ. ΠΡΠΊΠΎΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΈ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π½ΠΎ ΠΏΠΎΠΊΠ° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄:
[WebMethod]
public String CanWeFixIt() {
return "Yes we can!";
}
ΠΈ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄.
ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½Π°ΠΏΡΠ°Π²Π»ΡΡ Π±ΡΠ°ΡΠ·Π΅Ρ Web Π½Π° ΡΠ°ΠΉΠ» Service1.asmx:
Π©Π΅Π»ΡΠΎΠΊ Π½Π° ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π·Π°ΠΏΡΠΎΡΠ΅ ΠΈ ΠΎΡΠ²Π΅ΡΠ΅ SOAP, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π·Π°ΠΏΡΠΎΡ ΠΈ ΠΎΡΠ²Π΅Ρ Π±ΡΠ΄ΡΡ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² HTTP GET ΠΈ HTTP POST. ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄, Π½Π°ΠΆΠΈΠΌΠ°Ρ Π½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Invoke (Π΅ΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΡΠΎΡΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Π²Π΅ΡΡΠΈ Π² ΡΡΠΎΠΉ ΡΠΎΡΠΌΠ΅). ΠΡΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΠΊΠΎΠ΄ XML, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°:
<?xml version="1.0" ?>
<string xmlns="http://tempuri.org/">Yes we can!</string>
ΠΡΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ.
Π‘Π»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Service Description, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π½Π° ΡΠΊΡΠ°Π½Π΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Π²ΡΡΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ WSDL ΡΠ»ΡΠΆΠ±Ρ Web. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠΉ ΡΠ°ΡΡΡΡ, ΠΈΠΌΠ΅ΡΡΠ΅ΠΉ ΠΊ Π½Π°ΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΎΡΠ²Π΅ΡΠΎΠ²:
<types>
<s:schema attributeFormDefault="qualified" elementFormPefault="qualified"
targetNamespace="http://tempuri.org/">
<s:element name="CanWeFixIt">
<s:complexType />
</s:element>
<s:element name="CanWeFixItResponse">
<s:complexType>
<s:sequence>
<s:element name="CanWeFixItResult" nullable="true" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="string" nullable="true" type="s:string" />
</s:schema>
</types>
ΠΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΎΡΠ²Π΅ΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΠ»ΡΠΆΠ±Ρ, Π΄Π΅Π»Π°Ρ Π΅Π³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»ΠΈΠ½Π½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ.
Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π΄Π»Ρ ΡΠ»ΡΠΆΠ± Web
Π‘Π»ΡΠΆΠ±Ρ Web ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π»ΡΠ±ΡΠΌΠΈ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ :
String Char Byte
Boolean Int16 Int32
Int64 UInt16 UInt32
UInt64 Single Double
Guid Decimal DateTime
XmlQualifiedName class struct
XmlNode DataSet
ΠΠ°ΡΡΠΈΠ²Ρ Π²ΡΠ΅Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ. ΠΡΠΌΠ΅ΡΠΈΠΌ, ΡΠ°ΠΊΠΆΠ΅, ΡΡΠΎ ΠΌΠ°ΡΡΠ°Π»ΠΈΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΊΡΡΡΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΏΠΎΠ»Ρ ΡΠΈΠΏΠΎΠ² class ΠΈ struct.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»ΡΠΆΠ± Web
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ»ΡΠΆΠ±Ρ Web, ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ. Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π² ΠΊΠΎΠ΄Π΅ ΠΊΠ»Π°ΡΡ ΠΏΡΠΎΠΊΡΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π½Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΠ»ΡΠΆΠ±ΠΎΠΉ Web. ΠΡΠ±ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΊΠΎΠ΄Π° ΠΊ ΡΠ»ΡΠΆΠ±Π΅ Web Π±ΡΠ΄ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΠΎΡ ΠΏΡΠΎΠΊΡΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ ΡΠ»ΡΠΆΠ±Π΅ Web, ΡΠΎΠ·Π΄Π°Π²Π°Ρ Π² ΠΊΠΎΠ΄Π΅ ΠΈΠ»Π»ΡΠ·ΠΈΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΊΠΎΠΏΠΈΡ ΡΠ»ΡΠΆΠ±Ρ Web. Π ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ HTTP, Π½ΠΎ ΠΌΡ Π·Π°ΡΠΈΡΠ΅Π½Ρ ΠΎΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π°. ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π»ΠΈΠ±ΠΎ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ WSDL.exe, Π»ΠΈΠ±ΠΎ ΠΏΡΠ½ΠΊΡΠΎΠΌ ΠΌΠ΅Π½Ρ Add Web Reference Π² VS.NET.
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΈΠ»ΠΈΡΡ WSDL.exe ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ°ΠΉΠ» .cs, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΊΠ»Π°ΡΡ ΠΏΡΠΎΠΊΡΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ WSDL ΡΠ»ΡΠΆΠ±Ρ Web. ΠΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ URL, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
WSDL http://localhost/PCSWebSrv1/Service1.asmx?WSDL
ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π° ΡΡΠ° ΡΡΠΈΠ»ΠΈΡΠ° ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Service1.cs ΠΊΠ»Π°ΡΡΠ° ΠΏΡΠΎΠΊΡΠΈ. ΠΠ»Π°ΡΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ cΠ»ΡΠΆΠ±Ρ Web, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Service1, ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ Π½Π°Π·Π²Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ»ΡΠΆΠ±Ρ. Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ, ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠ°ΠΉΠ» .cs, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
Service1 myService = new Service1();
String result = myService.CanWeFixIt();
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ Π½ΡΠΆΠ΅Π½ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ using, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΡΡΠ³ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ /n<namespace> ΡΡΠΈΠ»ΠΈΡΡ WSDL.exe.
ΠΡΠ° ΡΠ΅Ρ Π½ΠΈΠΊΠ° Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π΅Π»ΡΠ²Π°ΡΡ ΠΊΠΎΠ΄, Π΅ΡΠ»ΠΈ ΡΠ»ΡΠΆΠ±Π° ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΡΠΎΠ±Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠ΅ΠΉ, Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ± Π»ΡΡΡΠ΅.
ΠΡ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅ΠΌ Π΅Π³ΠΎ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Web Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ PCSWebClient1, ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°. Π ΡΠ΅Π»Π΅ ΡΠΎΡΠΌΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ .aspx Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ form Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
<form method="post" runat="server">
<asp:Label Runat="server" ID="resultLabel" />
<br>
<asp:Button Runat="server" ID="triggerButton" Text="Invoke CanWeFixIt()" />