Пример Web-интерфейса для работы с NAV 2009. Часть 2.

В предыдущей статье  мы говорили о том, как с использованием клиент/серверных технологий можно без труда реализовать простейшее web-приложение с тем, чтобы интегрировать его с NAV’ом. Собственно, последнее действие мы и будем реализовывать прямо сейчас…
Для начала, напишем простейший Codeunit и опубликуем его в качестве web-сервиса:

m1_picture-10.png

 Как мы помним из предыдущего выпуска, web-сервисы могут «хоститься» в службах Windows , в IIS. Так же они могут быть встроены в WCF-службы, которые Microsoft упорно позиционирует на смену старым «Web Services». Поскольку Навижин работать умеет только с обычными web-службами, нам надо опубликованный web service (см. предыдущую рис.) «внедрить» в WCF-службу, созданную нами на самом первом шаге (здесь дай ссылку на Часть 1).  Этим и займемся…
Для начала просто добавим Web Reference на web-службу NAV:

 m1_picture-11.png

Теперь реализуем WCF-службу, в которую «внедрим» web-службу Навижина:

m1_picture-12.png

Давайте подробнее остановимся на реализации, которая приведена на предыдущей картинке:

  • для начала указываем те сборки, которые отвечают за функциональность WCF;
  • далее ссылаемся на web-службу Навижина;
  • реализуем класс, задающий контракт с методом AddCustomer. Данный метод непосредственно работает с web-службой Навижина и обновляет комментарии по клиенту.
  • не забываем указать уровень совместимости с ASP.NET, необходимый для WCF-службы (Allowed);
  • возвращаем web-клиенту тестовую строку, дабы показать, что возможна реакция web-приложения на завершение работы web-службы NAV.

Ну и не забудем корректно указать в конфигурационном файле все необходимые привязки, службу и контракт, который служба реализовывает:

m1_picture-13.png

Помимо этого, разместим эту службу внутри IIS. Ниже показан листинг описывающего ее файла Service.svc:
<%@ ServiceHost Language=”C#” Debug=”true” Service=”WCFService4NAV.CustomerCommentsReview” CodeBehind=”~/App_Code/Service.cs” %>

А теперь попробуем обратиться к ней, передав браузеру следующую строку: http://localhost/WCFService_/Service.svc

 m1_picture-15.png

Вроде работает… С реализацией WCF-службы закончили. Но как же клиентское web-приложение будет знать, где именно находится WCF-служба, к которой она должна обратиться? Ответ дан ниже:

m1_picture-14.png

Для того чтобы служба CustomerCommentsReview работала вместе с ASP.NET, необходимо добавить ссылку на нее с помощью менеджера сценариев ASP.NET ScriptManager, что мы и сделали выше.

Теперь, когда все готово, опишем реализацию метода, вызываемого при нажатии кнопки «Set Comment»:

 m1_picture-16.png

Видно, что мы проверяем, был ли задан комментарий, затем обращаемся к службе, запускаем механизм обновления правого ListBox’a (функция SetMode) и выводим ответ службы, вызывая функцию GetResponseFromService:

m1_picture-17.png

Нажатие кнопки OK информационного окна приведет к обновлению правого List Box’a. Новый комментарий по клиенту занесен в базу.

На этом реализация нашего нехитрого примера завершена.

P.S: после написания статьи впервые натолкнулся на технологию ADO.NET Entity Framework, вплотную засел к изучению… Рекомендую всем: может пригодиться в скором времени. Постараюсь в ближайшее время что-нибудь написать на эту тему…

Метки: ,



Оставьте свой отзыв!