Лабораторная работа: Разработка веб-службы в ASPNET

Цель работы: знакомство с инструментом разработки ASP.NET веб-служб в среде Microsoft Visual Studio.

 

Рассмотрим в качестве примера создание с помощью ASP.NET веб-службы, которая переводит любое целое десятичное число в один из форматов по выбору: двоичный, восьмеричный, десятичный.

  1. Создайте новый проект (тип: 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";

}

}

}

  1. Для реализации логики веб-службы в этом файле замените в файле 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 для пользователей.

  1. Откомпилируйте и запустите проекта. В результате в браузере должна следующая страница

 

  1. Активируйте гиперссылку "Описание службы". В окне браузера должно появиться описание веб-службы в формате 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)

  1. Если необходимо сообщить более подробную информацию для пользователей по каждому из доступных в этой веб-службе методов достаточно будет добавить параметр Description в атрибуте WebMethod, например:

208. [WebMethod (Description = "Перевод целого числа в двоичную систему счисления")]

209. public string Binary(int x)

210. {

211. return Convert.ToString(x, 2);

212. }

В результате в браузере будет получена следующая страница:

 

  1. Выберите метод Binary. При этом должна загрузиться веб-страница вида:

 

В результате работы веб-службы (после ввода числа и нажатия кнопки "Запуск") будет создана загрузится следующая страница:

 








Дата добавления: 2015-12-29; просмотров: 1163;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.041 сек.