Лабораторная работа: Разработка веб-службы в ASPNET
Цель работы: знакомство с инструментом разработки ASP.NET веб-служб в среде Microsoft Visual Studio.
Рассмотрим в качестве примера создание с помощью ASP.NET веб-службы, которая переводит любое целое десятичное число в один из форматов по выбору: двоичный, восьмеричный, десятичный.
- Создайте новый проект (тип: ASP Web Service), например, под именем ASPNETCalcWebService. В результате будет автоматически сгенерирован файл Service1.asmx.cs.
Программная логика веб-службы будет реализована на языке C# в CodeBehind файле Service1.asmx.cs:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
namespace ASPNETCalcWebService
{
/// <summary>
/// Summary description for Service1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
}
}
- Для реализации логики веб-службы в этом файле замените в файле Service1.asmx.cs метод HelloWorld() на 3 новых метода, при помощи которых будут выполняться все преобразования:
3. using System;
4. using System.Collections;
5. using System.ComponentModel;
6. using System.Data;
7. using System.Web;
8. using System.Web.Services;
9. using System.Web.Services.Protocols;
10.
11.namespace ASPNETCalcWebService
12.{
13. /// <summary>
14. /// Summary description for Service1
15. /// </summary>
16. [WebService(Namespace = "http://tempuri.org/")]
17. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
18. [ToolboxItem(false)]
19. public class Service1 : System.Web.Services.WebService
20. {
21. //Uncomment the following line if using designed components
22. //InitializeComponent();
23. }
24.
25.// Преобразование в двоичную систему счисления
26.
27. [WebMethod]
28. public string Binary(int x) {
29. return Convert.ToString(x, 2);
30. }
31.
32.// Преобразование в восьмеричную систему счисления
33.
34. [WebMethod]
35. public string Octal(int x)
36. {
37. return Convert.ToString(x, 8);
38. }
39.
40.// Преобразование в шестнадцатиричную систему счисления
41.
42. [WebMethod]
43. public string Hexadecimal(int x)
44. {
45. return Convert.ToString(x, 16);
46. }
}
Пример 26.1. (html, txt)
Атрибут WebMethod в этом файле указывает на то, что описываемый метод должен быть доступен по протоколу HTTP для пользователей.
- Откомпилируйте и запустите проекта. В результате в браузере должна следующая страница
- Активируйте гиперссылку "Описание службы". В окне браузера должно появиться описание веб-службы в формате WSDL
49.<?xml version="1.0" encoding="utf-8" ?>
50.<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
51. xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
52. xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
53. xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
54. xmlns:tns="http://tempuri.org/"
55. xmlns:s="http://www.w3.org/2001/XMLSchema"
56. xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
57. xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
58. targetNamespace="http://tempuri.org/"
59. xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
60. <wsdl:types>
61.<s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
62.<s:element name="Binary">
63.<s:complexType>
64. <s:sequence>
65. <s:element minOccurs="1" maxOccurs="1" name="x" type="s:int" />
66. </s:sequence>
67. </s:complexType>
68. </s:element>
69.<s:element name="BinaryResponse">
70. <s:complexType>
71.<s:sequence>
72. <s:element minOccurs="0" maxOccurs="1" name="BinaryResult" type="s:string" />
73. </s:sequence>
74. </s:complexType>
75. </s:element>
76. <s:element name="Octal">
77. <s:complexType>
78.<s:sequence>
79. <s:element minOccurs="1" maxOccurs="1" name="x" type="s:int" />
80. </s:sequence>
81. </s:complexType>
82. </s:element>
83. <s:element name="OctalResponse">
84.<s:complexType>
85.<s:sequence>
86. <s:element minOccurs="0" maxOccurs="1" name="OctalResult" type="s:string" />
87. </s:sequence>
88. </s:complexType>
89. </s:element>
90. <s:element name="Hexadecimal">
91.<s:complexType>
92.<s:sequence>
93. <s:element minOccurs="1" maxOccurs="1" name="x" type="s:int" />
94. </s:sequence>
95. </s:complexType>
96. </s:element>
97. <s:element name="HexadecimalResponse">
98. <s:complexType>
99. <s:sequence>
100. <s:element minOccurs="0" maxOccurs="1" name="HexadecimalResult" type="s:string" />
101. </s:sequence>
102. </s:complexType>
103. </s:element>
104. </s:schema>
105. </wsdl:types>
106. <wsdl:message name="BinarySoapIn">
107. <wsdl:part name="parameters" element="tns:Binary" />
108. </wsdl:message>
109. <wsdl:message name="BinarySoapOut">
110. <wsdl:part name="parameters" element="tns:BinaryResponse" />
111. </wsdl:message>
112. <wsdl:message name="OctalSoapIn">
113. <wsdl:part name="parameters" element="tns:Octal" />
114. </wsdl:message>
115. <wsdl:message name="OctalSoapOut">
116. <wsdl:part name="parameters" element="tns:OctalResponse" />
117. </wsdl:message>
118. <wsdl:message name="HexadecimalSoapIn">
119. <wsdl:part name="parameters" element="tns:Hexadecimal" />
120. </wsdl:message>
121. <wsdl:message name="HexadecimalSoapOut">
122. <wsdl:part name="parameters" element="tns:HexadecimalResponse" />
123. </wsdl:message>
124. <wsdl:portType name="ServiceSoap">
125. <wsdl:operation name="Binary">
126. <wsdl:input message="tns:BinarySoapIn" />
127. <wsdl:output message="tns:BinarySoapOut" />
128. </wsdl:operation>
129. <wsdl:operation name="Octal">
130. <wsdl:input message="tns:OctalSoapIn" />
131. <wsdl:output message="tns:OctalSoapOut" />
132. </wsdl:operation>
133. <wsdl:operation name="Hexadecimal">
134. <wsdl:input message="tns:HexadecimalSoapIn" />
135. <wsdl:output message="tns:HexadecimalSoapOut" />
136. </wsdl:operation>
137. </wsdl:portType>
138. <wsdl:binding name="ServiceSoap" type="tns:ServiceSoap">
139. <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
140. <wsdl:operation name="Binary">
141. <soap:operation soapAction="http://tempuri.org/Binary" style="document" />
142. <wsdl:input>
143. <soap:body use="literal" />
144. </wsdl:input>
145. <wsdl:output>
146. <soap:body use="literal" />
147. </wsdl:output>
148. </wsdl:operation>
149. <wsdl:operation name="Octal">
150. <soap:operation soapAction="http://tempuri.org/Octal" style="document" />
151. <wsdl:input>
152. <soap:body use="literal" />
153. </wsdl:input>
154. <wsdl:output>
155. <soap:body use="literal" />
156. </wsdl:output>
157. </wsdl:operation>
158. <wsdl:operation name="Hexadecimal">
159. <soap:operation soapAction="http://tempuri.org/Hexadecimal" style="document" />
160. <wsdl:input>
161. <soap:body use="literal" />
162. </wsdl:input>
163. <wsdl:output>
164. <soap:body use="literal" />
165. </wsdl:output>
166. </wsdl:operation>
167. </wsdl:binding>
168. <wsdl:binding name="ServiceSoap12" type="tns:ServiceSoap">
169. <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
170. <wsdl:operation name="Binary">
171. <soap12:operation soapAction="http://tempuri.org/Binary" style="document" />
172. <wsdl:input>
173. <soap12:body use="literal" />
174. </wsdl:input>
175. <wsdl:output>
176. <soap12:body use="literal" />
177. </wsdl:output>
178. </wsdl:operation>
179. <wsdl:operation name="Octal">
180. <soap12:operation soapAction="http://tempuri.org/Octal" style="document" />
181. <wsdl:input>
182. <soap12:body use="literal" />
183. </wsdl:input>
184. <wsdl:output>
185. <soap12:body use="literal" />
186. </wsdl:output>
187. </wsdl:operation>
188. <wsdl:operation name="Hexadecimal">
189. <soap12:operation soapAction="http://tempuri.org/Hexadecimal" style="document" />
190. <wsdl:input>
191. <soap12:body use="literal" />
192. </wsdl:input>
193. <wsdl:output>
194. <soap12:body use="literal" />
195. </wsdl:output>
196. </wsdl:operation>
197. </wsdl:binding>
198. <wsdl:service name="Service">
199. <wsdl:port name="ServiceSoap" binding="tns:ServiceSoap">
200. <soap:address location="http://localhost/NumConvert/Service.asmx" />
201. </wsdl:port>
202. <wsdl:port name="ServiceSoap12" binding="tns:ServiceSoap12">
203. <soap12:address location="http://localhost/NumConvert/Service.asmx" />
204. </wsdl:port>
205. </wsdl:service>
206. </wsdl:definitions>
Пример 14.2. (html, txt)
- Если необходимо сообщить более подробную информацию для пользователей по каждому из доступных в этой веб-службе методов достаточно будет добавить параметр Description в атрибуте WebMethod, например:
208. [WebMethod (Description = "Перевод целого числа в двоичную систему счисления")]
209. public string Binary(int x)
210. {
211. return Convert.ToString(x, 2);
212. }
В результате в браузере будет получена следующая страница:
- Выберите метод Binary. При этом должна загрузиться веб-страница вида:
В результате работы веб-службы (после ввода числа и нажатия кнопки "Запуск") будет создана загрузится следующая страница:
Дата добавления: 2015-12-29; просмотров: 1150;