вторник, 31 января 2012 г.

Обращение к службе из ASP приложения

Теперь, когда у нас есть веб-служба и приложение, остается собрать их в одно целое.

    В Visual Studio этот процесс максимально автоматизирован. Чтобы обратиться к сервису нужно создать, на основе его интерфейсов, класс-обертку. Для этого в обозревателе решений щелкаем правой клавишей по проекту приложения и выбираем "Добавить ссылку на службу". Откроется окно:




    В качестве адреса указываем тот, по которому размещена наша первая служба, добавив в конце ?wsdl. Этот же адрес можно увидеть и на странице службы по умолчанию, а если по нему перейти то нам будет показан XML с описанием службы.  В нижнем поле указываем пространство имен, в данном случае это BnkLoadServiceReference и нажимаем кнопку "Перейти". Будет найдена и отображена служба LoadService. Нажимаем ОК. В этом случае будут сгенерированы методы для синхронного вызова службы. Если нужен асинхронный вызов, то перед нажатием ОК нажимаем "Дополнительно" и выставляем галочку напротив пункта "Создать асинхронные операции".

    В проекте приложения появилась новая папка "Service References", а в ней файл с именем BnkLoadServiceReference. Связь со службой установлена.

    Проверим работоспособность. Для этого добавим на страницу Default кнопку и метку:

 <div id = "maindiv" runat="server">
   <asp:Button ID = "Callbutton" Text = "тест"  OnCommand = "CallButtonCommand" runat ="server" />

   <p>
   <asp:Label ID = "CallLabel" Text ="вызов" runat ="server" />
   </p>


   </div>

    div - это панель. Не обязательна, но для удобства обращения со страницей из серверного кода пусть будет.
   asp:Button - кнопка. ID - уникальный идентификатор, Text - надпись на кнопке, runat ="server" - указывает на то, что это серверный элемент управления. OnCommand = "CallButtonCommand" - обработчик события. Событие OnCommand возникает при нажатии на кнопку, CallButtonCommand - имя метода, который будет вызван по этому событию.
структура asp:Label совершенно аналогична, расписывать смысла нет.
 
    Теперь реализуем метод CallButtonCommand, указанный в обработчике. Переходим в файл Default.aspx.cs (либо щелкнув правой клавишей по Default.aspx и выбрав "Перейти к коду", либо просто раскрыв дерево Default.aspx и явно выбрав нужный файл). Создаем там вот такой метод:

        public void CallButtonCommand(object sender, EventArgs e)
        {
           
            BnkLoadServiceReference.LoadInSQLClient load = new BnkLoadServiceReference.LoadInSQLClient();
            CallLabel.Text = load.CheckService();
        
       
        }

В методе мы создаем клиента сервиса, потом вызываем его метод CheckService() и результат заносим в метку CallLabel. Запускаем приложение, нажимаем на кнопку "тест" и получаем искомое:



Похожие посты:

Комментариев нет:

Отправить комментарий