Как вызвать веб-сервис Java в ASP.net с помощью C# - Создание веб-сайта ASP.net с помощью C#

ОГЛАВЛЕНИЕ

Создание веб-сайта ASP.net с помощью C#

Теперь веб-сервис можно вызвать из платформы разработки, не основанной на Java. В данной статье разрабатывается пример клиента на базе ASP.net. В Visual Studio 2008 это делается в несколько шагов, изложенных ниже:
1.    Создать веб-сайт ASP.net.
2.    Добавить веб-ссылку.
3.    Написать код для вызова веб-сервиса.
4.    Протестировать клиентское приложение веб-сервиса.

Шаг 1. Создать веб-сайт ASP.net

i.    Запустить Visual Studio 2008; перейти в Новый ? Веб-сайт …, находящийся в меню Файл.

 

Рисунок 13: Окно ”Новый веб-сайт”

ii.    Выбрать веб-сайт ASP.net.
iii.    Выбрать папку, в которой будет создан веб-сайт. В данном случае это JSimpCalcWebServiceWebSite
iv.    Выбрать язык Visual C# и нажать кнопку OK.

Шаг 2. Добавить веб-ссылку

Теперь надо указать файл WSDL в веб-сайте. Для добавления ссылки на веб-сервис надо выполнить следующие шаги:
i.    Перейти в окно ”Проводник решения”.
ii.    Щелкнуть правой кнопкой мыши по имени проекта (в данном случае JSimpCalcWebServiceWebSite). Появится контекстное меню.
iii.    Щелкнуть по меню ”Добавить веб-ссылку”. Откроется диалоговое окно ”Добавить веб-ссылку”.

 

Рисунок 14: Контекстное меню ”Добавить веб-ссылку”

iv.    Скопировать и вставить унифицированный указатель ресурса WSDL из адресной строки браузера (смотрите рисунок 12) в адресную строку диалогового окна ”Добавить веб-ссылку” и нажать кнопку ”Перейти” (смотрите рисунок 15).

 

Рисунок 15: Диалоговое окно ”Добавить веб-ссылку”

v.    Отобразятся все имена методов веб-сервиса. Ввести имя веб-ссылки (в данном примере JSimpCalcWebService) и нажать кнопку ”Добавить ссылку”.

Шаг 3. Написать код для вызова веб-сервиса

С помощью C# очень легко вызывается веб-сервис при помощи нескольких строк кода:
i.    Сначала создается страница ASP.net. Имя файла по умолчанию - Default.aspx (исходник есть в zip-архиве).
ii.    Веб-ссылка включается в код (т.е. Default.aspx.cs). Например:
using JSimpCalcWebServiceService;
iii.    Создается объект веб-ссылки.

JSimpCalcWebServiceService.JSimpCalcWebServiceService proxy = new JSimpCalcWebServiceService.JSimpCalcWebServiceService();

iv.    WebMethod вызывается подобно любому другому вызову метода. Например:
proxy.addition(10,20);

 

Рисунок 16: Код вызова веб-методов

Код должен выглядеть так:

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using JSimpCalcWebServiceService;

public partial class _Default : System.Web.UI.Page
{
    JSimpCalcWebServiceService.JSimpCalcWebServiceService proxy;

    protected void Page_Load(object sender, EventArgs e)
    {
        proxy = new JSimpCalcWebServiceService.JSimpCalcWebServiceService();
    }

    protected void btnAddition_Click(object sender, EventArgs e)
    {
        try
        {
            lblResultAddition.Text = "Результат: " + proxy.addition(double.Parse(txtbtnAdditionParameter1.Text),
                                double.Parse(txtbtnAdditionParameter2.Text));
        }
        catch (FormatException)
        {
            lblResultAddition.Text = "Результат: недопустимый ввод";
        }
        UpdatePanelAddition.Update();
    }

    protected void btnSubtraction_Click(object sender, EventArgs e)
    {
        try
        {
            lblResultSubtraction.Text = "Результат: " + proxy.subtraction(double.Parse(txtSubtractionParameter1.Text),
                                    double.Parse(txtSubtractionParameter2.Text));
        }
        catch(FormatException)
        {
            lblResultSubtraction.Text = "Результат: недопустимый ввод";
        }

        UpdatePanelSubtraction.Update();
    }
    protected void btnMultiplication_Click(object sender, EventArgs e)
    {
        try
        {
            lblResultMultiplication.Text = "Результат: " + proxy.multiplication(double.Parse(txtMultiplicationParameter1.Text),
                                    double.Parse(txtMultiplicationParameter2.Text));
        }
        catch (FormatException)
        {
            lblResultMultiplication.Text = "Результат: недопустимый ввод";
        }

        UpdatePanelMultiplication.Update();
    }

    protected void btnDivision_Click(object sender, EventArgs e)
    {
        try
        {
            lblResultDivision.Text = "Результат: " + proxy.division(double.Parse(txtDivisionParameter1.Text),
                                double.Parse(txtDivisionParameter2.Text));
        }
        catch (FormatException)
        {
            lblResultDivision.Text = "Результат: недопустимый ввод";
        }

        UpdatePanelDivision.Update();
    }

    protected void btnMaximum_Click(object sender, EventArgs e)
    {
        try
        {
            lblResultMaxMin.Text = "Результат: " + proxy.maximum(double.Parse(txtMaxMinParameter1.Text),
                            double.Parse(txtMaxMinParameter2.Text));
        }
        catch (FormatException)
        {
            lblResultMaxMin.Text = "Результат: недопустимый ввод";
        }

        UpdatePanelMaxMin.Update();
    }

    protected void btnMinimum_Click(object sender, EventArgs e)
    {
        try
        {
            lblResultMaxMin.Text = "Результат: " + proxy.minimum(double.Parse(txtMaxMinParameter1.Text),
                                double.Parse(txtMaxMinParameter2.Text));
        }
        catch (FormatException)
        {
            lblResultMaxMin.Text = "Результат: недопустимый ввод";
        }

        UpdatePanelMaxMin.Update();
    }

    protected void btnPower_Click(object sender, EventArgs e)
    {
        try
        {
            lblResultPower.Text = "Результат: " + proxy.power(double.Parse(txtPowerParameter1.Text),
                            double.Parse(txtPowerParameter2.Text));
        }
        catch (FormatException)
        {
            lblResultPower.Text = "Результат: недопустимый ввод";
        }

        UpdatePanelPower.Update();
    }
}

Исходник 3: Исходный код Default.aspx.cs

Шаг 4. Протестировать клиентское приложение веб-сервиса

Теперь пора протестировать клиентское приложение веб-сервиса путем нажатия на кнопку ”Начать отладку” на панели инструментов или путем нажатия кнопки F5 на клавиатуре. Веб-страница должна выглядеть как на рисунке ниже.

 

Рисунок 17: Вывод веб-сайта

Вывод:

Данная статья показывает стандарты, используемые веб-сервисами, затрагивая базовый механизм реализации.

Рассмотренный здесь пример использует ряд свойств веб-сервисов, перечисленных ниже:
•    Автономный: Веб-сервис не требует дополнительных программ:

a.    Сторона клиента: Язык программирования с поддержкой клиента XML/HTML.
b.    Сторона сервера: Нужны веб-сервер и сервер SOAP.

•    Слабосвязанный: Клиент и сервер знают только о сообщениях – простой уровень взаимодействия, позволяющий более гибко менять конфигурацию.
•    Веб-ориентированный: Веб-сервис публикуется, находится и вызывается через сеть с помощью утвержденных легких интернет-стандартов.
•    Независимый от языка и совместимый: Клиент и сервер могут быть реализованы в разных средах и на разных языках.
•    Компонуемый: Веб-сервисы могут объединяться с помощью средств потока операций для выполнения высокоуровневых бизнес-функций.
•    Динамически связываемый: С помощью UDDI и WSDL можно автоматизировать обнаружение и связывание веб-сервисов.
•    Программный доступ: Подход веб-сервисов не предоставляет графический интерфейс пользователя, но работает на командном уровне.
•    Оборачивает существующие приложения: Автономные приложения легко объединяются путем реализации веб-сервиса в качестве интерфейса.

Аналогично можно создавать веб-сервисы на C# и вызывать их через клиентское приложение веб-сервиса, написанное на Java.