Теперь, когда у нас есть веб-служба и приложение, остается собрать их в одно целое.
В 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. Запускаем приложение, нажимаем на кнопку "тест" и получаем искомое:
В 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. Запускаем приложение, нажимаем на кнопку "тест" и получаем искомое:
Комментариев нет:
Отправить комментарий