
Web-сервисы
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 370
- Зарегистрирован: 28 сен 2006, 15:43
- Откуда: Санкт-Петербург
- Контактная информация:
Web-сервисы
У кого есть опыт настройки веб-сервисов в Галактике, помогите, пожалуйста, разобраться. Попытался воспроизвести пример, что идет в поставке атлантиса в папке VipServices. Скомпилировал все что там было, веб-сервисы скинул в папку inetpub/wwwroot/ws, создал виртуальный каталог. Открыл проект тестового клиента в вижуал студии, в References отображаются не найденные ссылки на Atlantis_valeryLib и AtlantisComDrvLib. Что это за звери, как их установить? Опыта работы с веб-сервисами нет никакого, только начал разбираться. Чувствую что-то где-то надо зарегистрировать, а что и где не знаю. Настраиваю все это дело в WinXP. В общем, буду рад любой полезной информации 

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

Код: Выделить всё
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)
--- Конец трассировки внутреннего стека исключений ---

-
- Местный житель
- Сообщения: 370
- Зарегистрирован: 28 сен 2006, 15:43
- Откуда: Санкт-Петербург
- Контактная информация:
нет. Есть настроечный файл Web.config. Там три параметра:
Так мне не понятно, какие именно сюда надо прописывать параметры. То ли имя и пароль на сервер приложений, то ли юзера под которым я в винде работа., то ли вообще на бд галактики. Хотя вроде все перепробовал. Единственное что заметил, когда DefaultUserName не прописываю ошибка другая: "Empty user"
Код: Выделить всё
<add key="Atlantis.VipService.ConnectUserName" value="webuser"/>
<add key="Atlantis.VipService.ConnectPassword" value=""/>
<add key="Atlantis.VipService.DefaultUserName" value="client1"/>
1-е я так понял нужно скомпилить vip фейсы, которые и будут работать в качестве web-сервисов. В тестовом примере это
vService
vGoods
vSpecification
vInvoice
vOrganization
эти интерфейсы унаследованы от webDefault (реализующего ISetData, IGetHandle) и реализуют интерфейс IModify
это я так понял сделано
2-е поднять через IIS эти web сервисы. Вот тут у меня затык. Как ты это сделал?
vService
vGoods
vSpecification
vInvoice
vOrganization
эти интерфейсы унаследованы от webDefault (реализующего ISetData, IGetHandle) и реализуют интерфейс IModify
это я так понял сделано
2-е поднять через IIS эти web сервисы. Вот тут у меня затык. Как ты это сделал?
-
- Местный житель
- Сообщения: 370
- Зарегистрирован: 28 сен 2006, 15:43
- Откуда: Санкт-Петербург
- Контактная информация:
Ну я просто сделал так: запутил файл
Atlantis\VipServices\Example\test.bat.
Дальше, все что в папке TPU\EXE скинул в EXE своего сервера приложений и выполнил reg.bat. Папку WS скинул в inetpub/wwwroot и сделал виртуальный каталог. Ну и все собственно. Заходим в IIS в созданный виртуальный каталог, выбираем Web-сервис, правой кнопкой - обзор. Этот момент работает. Дальше запускаю пример клиента. Вот до этого момента работает:
А на строчке
получаю эксепшн, потому как не могу понять, кому надо дать какие права..
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 раза.
хм... а попробуй открыть в браузере ссылку
http://localhost/WS/CORGANIZATION.asmx
и посмотри есть ли у web сервиса метод IOrganization_getData и какие параметры он принимает. У меня подозрение, что данные в примере несколько расходятся с тем, что на самом деле есть у web сервиса
http://localhost/WS/CORGANIZATION.asmx
и посмотри есть ли у web сервиса метод IOrganization_getData и какие параметры он принимает. У меня подозрение, что данные в примере несколько расходятся с тем, что на самом деле есть у web сервиса
-
- Местный житель
- Сообщения: 370
- Зарегистрирован: 28 сен 2006, 15:43
- Откуда: Санкт-Петербург
- Контактная информация:
нрек записи. Да это не так важно пока, главное чтоб с правами разобраться
А в 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, то удалить его..
-
- Местный житель
- Сообщения: 370
- Зарегистрирован: 28 сен 2006, 15:43
- Откуда: Санкт-Петербург
- Контактная информация:
Методы :
Описание метода (запрос) IOrganization_getData
SOAP 1.1
В следующем примере показаны запрос и ответ SOAP 1.1. Вместо элементов-заполнителей следует подставить фактические значения.
Код: Выделить всё
Следующие операции поддерживаются. Формальное определение см. в Описание службы.
IOrganization_getData
IOrganization_setData
vOrganization_Init
vOrganization_InitId
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>