Web-сервисы

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Web-сервисы

Сообщение Vik »

У кого есть опыт настройки веб-сервисов в Галактике, помогите, пожалуйста, разобраться. Попытался воспроизвести пример, что идет в поставке атлантиса в папке VipServices. Скомпилировал все что там было, веб-сервисы скинул в папку inetpub/wwwroot/ws, создал виртуальный каталог. Открыл проект тестового клиента в вижуал студии, в References отображаются не найденные ссылки на Atlantis_valeryLib и AtlantisComDrvLib. Что это за звери, как их установить? Опыта работы с веб-сервисами нет никакого, только начал разбираться. Чувствую что-то где-то надо зарегистрировать, а что и где не знаю. Настраиваю все это дело в WinXP. В общем, буду рад любой полезной информации :)
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

Если кратко, то ситуация такая: Галактика сама может работать как web-сервис (т.е. выступать в качестве сервера), на VIP-е это объявляется как:
web vipInterface
Т.е. теоретически (сам не пробовал) можно обратиться из вне (написать клиента на любом языке) и вызвать методы этого интерфейса.
Второй вариант, когда сама Галактика выступает в качестве клиента и обращается к внешнему web-сервису. Здесь встроенных средств поддержки со стороны vip-а нет. Просто для web-сервиса пишется proxy и регистрируется как COM объект. С COM объектами Галактика худо-бедно умеет работать. Я как-то писал недавно пошагово о том, как это сделать, поищи.
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

Да, я видел, что вы писали. Но мне нужен именно первый вариант. Дело в том, что для первого варианта даже пример есть. Но я не могу сделать так, чтоб он заработал :( Сейчас я застрял на ексепшне:

Код: Выделить всё

System.Web.Services.Protocols.SoapException: Серверу не удалось обработать запрос. ---> System.UnauthorizedAccessException: Сбой при получении производства объектов класса COM для компонента с CLSID {2C4CF260-DAA2-11D5-A29D-00204CE40998} в результате следующей ошибки: 80070005.
   в Atlantis.Vip.ConnectedUser.GetInterface(ifcHandle handle)
   в Atlantis.Vip.Services.GetObject(WebService service, ifcHandle handle)
   в CORGANIZATIONService.IOrganization_getData(ifcHandle handle)
   --- Конец трассировки внутреннего стека исключений ---
Какие-то проблемы с авторизацией, как с ними справиться, понять не могу :(
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

вероятно, нужно для начала установить соединение, передать логин и пароль, в коде такой участок есть?
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

нет. Есть настроечный файл Web.config. Там три параметра:

Код: Выделить всё

    <add key="Atlantis.VipService.ConnectUserName" value="webuser"/>
    <add key="Atlantis.VipService.ConnectPassword" value=""/>
    <add key="Atlantis.VipService.DefaultUserName" value="client1"/>
Так мне не понятно, какие именно сюда надо прописывать параметры. То ли имя и пароль на сервер приложений, то ли юзера под которым я в винде работа., то ли вообще на бд галактики. Хотя вроде все перепробовал. Единственное что заметил, когда DefaultUserName не прописываю ошибка другая: "Empty user"
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

клиента на ASP.NET что ли пишешь?
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

Ну клиент обычная форма на C#. Web - сервисы на ASP.NET. Все написано до меня, я лишь пытаюсь запустить, чтоб увидеть, что это действительно работает)
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

тоже решил посмотреть пример, пипец как там все запущено. Поразбираюсь
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

1-е я так понял нужно скомпилить vip фейсы, которые и будут работать в качестве web-сервисов. В тестовом примере это
vService
vGoods
vSpecification
vInvoice
vOrganization
эти интерфейсы унаследованы от webDefault (реализующего ISetData, IGetHandle) и реализуют интерфейс IModify

это я так понял сделано

2-е поднять через IIS эти web сервисы. Вот тут у меня затык. Как ты это сделал?
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

Ну я просто сделал так: запутил файл
Atlantis\VipServices\Example\test.bat.
Дальше, все что в папке TPU\EXE скинул в EXE своего сервера приложений и выполнил reg.bat. Папку WS скинул в inetpub/wwwroot и сделал виртуальный каталог. Ну и все собственно. Заходим в IIS в созданный виртуальный каталог, выбираем Web-сервис, правой кнопкой - обзор. Этот момент работает. Дальше запускаю пример клиента. Вот до этого момента работает:

Код: Выделить всё

CORGANIZATIONService service = new CORGANIZATIONService();
			service.Url = "http://localhost/WS/CORGANIZATION.asmx";
			service.Credentials = CredentialCache.DefaultCredentials;
			ifc = service.vOrganization_InitId( Convert.ToInt64(textBox1.Text) );
            MessageBox.Show(ifc.vipIfcComponent);
            MessageBox.Show(ifc.vipIfcName);
            MessageBox.Show(ifc.ToString());
А на строчке

Код: Выделить всё

org = service.IOrganization_getData( ifc );
получаю эксепшн, потому как не могу понять, кому надо дать какие права..
Последний раз редактировалось Vik 29 апр 2009, 18:41, всего редактировалось 2 раза.
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

А, да.. Еще test.res который получился прицепил в саппорте
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

Прикольно, у меня чего-то не компилится, sets.bat не докрутил. А в
vOrganization_InitId какой параметр передается?
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

хм... а попробуй открыть в браузере ссылку
http://localhost/WS/CORGANIZATION.asmx
и посмотри есть ли у web сервиса метод IOrganization_getData и какие параметры он принимает. У меня подозрение, что данные в примере несколько расходятся с тем, что на самом деле есть у web сервиса
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

нрек записи. Да это не так важно пока, главное чтоб с правами разобраться :( А в sets.bat я указал лишь путь на утилиты, которые там требуются, кое что поменял в makeVip.bat (добавил запись в vip.cfg ключа, лицензии и базу свою). Вот что удалось найти:

Код: Выделить всё

В файле machine.config содержатся системные параметры всех запускаемых на данном компьютере Microsoft.NET приложений в xml-представлении. Ветка <configuration> \ <system.web> соответствует настройкам приложения ASP.NET. В этой ветке необходимо найти ключ <processModel>. Если ключ не найден, его необходимо создать именно внутри указанного подуровня. Но обычно он уже задан, и в версии 1.1 содержит подробные настройки для ASP.NET, а в версии 2.0 ограничивается только одним значением autoConfig="true" 3)	Если среди всех перечисленных в этом ключе значений удалось найти два: userName и password (по умолчанию они будут определены как "machine" и "AutoGenerate" соответственно) и прописать в них имя того пользователя, под правами которого будут выполняться приложения ASP.NET на этом компьютере и его пароль. Если эти два элемента не определены, определить их. Если задан элемент autoConfig, то удалить его..
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

Методы :

Код: Выделить всё

Следующие операции поддерживаются. Формальное определение см. в Описание службы. 

IOrganization_getData 
IOrganization_setData 
vOrganization_Init 
vOrganization_InitId 
Описание метода (запрос) IOrganization_getData
SOAP 1.1
В следующем примере показаны запрос и ответ SOAP 1.1. Вместо элементов-заполнителей следует подставить фактические значения.

Код: Выделить всё

POST /WS/CORGANIZATION.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://galaktika.ru/VipServices/IOrganization_getData"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <IOrganization_getData xmlns="http://galaktika.ru/VipServices/">
      <handle>
        <vipIfcComponent>string</vipIfcComponent>
        <vipIfcName>string</vipIfcName>
        <constructorName>string</constructorName>
        <parameters>
          <anyType />
          <anyType />
        </parameters>
        <properties>
          <ifcProperty>
            <objIfcComponent>string</objIfcComponent>
            <objIfcName>string</objIfcName>
            <propertyName>string</propertyName>
          </ifcProperty>
          <ifcProperty>
            <objIfcComponent>string</objIfcComponent>
            <objIfcName>string</objIfcName>
            <propertyName>string</propertyName>
          </ifcProperty>
        </properties>
      </handle>
    </IOrganization_getData>
  </soap:Body>
</soap:Envelope>
Ответить