Код, генерируемый шаблоном Managed C++ Web Service (Web-служба на управляемом C++)
Шаблон Managed C++ Web Service (Web-служба на управляемом C++) создает код стартовой системы для проекта Web-службы. На рис. 11.6 приведено окно Solution Explorer (Поиск решения), в котором открыт проект ManagedWebService.
Рис. 11.6. Окно Solution Explorer (Поиск решения), в котором открыт проект Web-службы на управляемом C++, созданный на основе шаблона Managed C++ Web Service (Web-служба на управляемом C++)
Файл ManagedWebService.asmx содержит следующую строку:
<%@ WebService Class= ManagedWebService.Classl %>
Кроме этого файла в состав проекта еще входит исходный файл ManagedWebService.срр и связанный с ним заголовочный файл ManagedWebService.h. Обратите внимание, что файл ManagedWebService.h содержит директиву #using, которая ссылается на сборку System.Web.Service.dll. В этой сборке содержится важная информация о типах, используемых Web-службой Кроме того, можно видеть, что Web-служба реализована с помощью класса Classl, который принадлежит пространству имен ManagedWebService. Данный класс содержит метод HelloWorld, который имеет атрибут [System::Web:: Services::WebMethod] ([Система-Сеть-Службы-WebMethod]). Этот атрибут необходим для того, чтобы Web-клиент мог вызвать данный метод как метод Web-службы. Код, который содержится в исходном файле ManagedWebService.срр приведен ниже.
#mclude "stdafx.h" tinclude " ManagedWebService.h" #include "Global.asax.h" namespace ManagedWebService // пространство имен ManagedWebService { // ПРИМЕР WEВ-СЛУЖБЫ // Пример службы HelloWorld () возвращает… // Чтобы проверить эту Web-службу, убедитесь, что.asmx… // в свойствах проекта // установлен в качестве отладочного // унифицированного указателя информационного ресурса (URL) // для протокола передачи гипертекстовых файлов HTTP. // и нажмите F5. String _go* Classl::HelloWorld() { // TODO: Add the implementation of your… // TODO: Добавьте реализацию вашего… return S"Hello World!"; // Привет, мир! } };
Теперь приведем содержимое исходного файла ManagedWebService.h.
// ManagedWebService.h #pragma once #using <System.Web.Services.dll> using namespace System; // использование пространства имен Система; using namespace System::Web; // использование пространства имен Система::Сеть; using namespace System::Web::Services; // использование пространства имен Система::Сеть::Службы; namespace ManagedWebServiee // пространство имен ManagedWebServiee { public _gc // сборщик мусора class Classl: public WebService // класс Classl: WebService { public: // ПРИМЕР WEB-СЛУЖБЫ СЕТИ // Пример службы HelloWorld() возвращает… // Чтобы проверить эту Web-службу, убедитесь, что… // установлен для проекта в качестве отладочного // унифицированного указателя информационного ресурса (URL) // для протокола передачи гипертекстовых файлов HTTP.. // и нажмите F5. [System::Web::Services::WebMethod] // [Система::Сеть::Службы::WebMethod] String _gc* HelloWorld(); // TODO: Add the methods of your Web Service here // TODO: Добавьте здесь методы вашей Web-службы }; }
Кроме рассмотренных выше файлов, были также созданы следующие файлы: Global.аsах, ManagedWebServiee.vsdisco и Web.config. Файл обнаружения ManagedWebServiee.vsdisco – это файл в формате XML. Он был создан мастером, и используется клиентами при поиске Web-службы.
Чтобы просмотреть Web-службу и увидеть, как работает метод HelloWorld, можно воспользоваться стандартным браузером, как и в предыдущем примере. При этом мы совсем не изменили исходный проект ManagedWebServiee, созданный с помощью шаблона Managed C++ Web Service (Web-служба на управляемом C++). В следующем разделе мы рассмотрим проект Arithmetic (Арифметика), который был создан аналогично проекту ManagedWebServiee. А вот код проекта Arithmetic (Арифметика), сгенерированный с помощью шаблона Managed C++ Web Service (Web-служба на управляемом C++), был сильно изменен, прежде чем он приобрел окончательный вид.