VIP и Web-сервисы
Модераторы: m0p3e, edward_K, Модераторы
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
VIP и Web-сервисы
Господа, вопрос жизни и смерти.
У кого нибудь получилось толково запустить через точку расширения нормальный web-сервис?
Если да - поделитесь опыом. Очень интересная и злободневная тема.
ПыСы.
Ответы типа "а кто мешает зпустить оттуда exe или ф-ю из dll" не канают )))
нужно запустить из Галактики полноценый веб-сервис, который бы реагировал на изменение состояния некоей записи в БД Галки...
У кого нибудь получилось толково запустить через точку расширения нормальный web-сервис?
Если да - поделитесь опыом. Очень интересная и злободневная тема.
ПыСы.
Ответы типа "а кто мешает зпустить оттуда exe или ф-ю из dll" не канают )))
нужно запустить из Галактики полноценый веб-сервис, который бы реагировал на изменение состояния некоей записи в БД Галки...
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Поясняю на пальцах:
1. Есть точка расширения на триггер таблицы БД Первасива
2. На отрабатывание триггера необходимо запустить внешний web-сервис. Если точнее - то web-сервис Microsoft Dynamics CRM 4.0.
если есть примеры подобных кодов - буду чрезмерно признателен.
можно публиковать здесь - думаю всем будет интересно
1. Есть точка расширения на триггер таблицы БД Первасива
2. На отрабатывание триггера необходимо запустить внешний web-сервис. Если точнее - то web-сервис Microsoft Dynamics CRM 4.0.
если есть примеры подобных кодов - буду чрезмерно признателен.
можно публиковать здесь - думаю всем будет интересно
Ну тогда 2-й вариант. Я немного занимался этим вопросом. Не смотря на рекламные слоганы, Галактика не имеет встроенных средств для работы с web сервисами. Все что она может, это работать с COM объектами. Поэтому схема примерно такая (пример на .NET, но это неважно, в остальном тот же принцип):
1) получаем по wsdl описанию proxy web сервиса. Можно воспользоваться утилитой wsdl.exe. Например так:
2) Полученный прокси класс нужно представить как COM объект. Навешиваем на класс дополнительные атрибуты:
3) Компилируем, получаем сборку MyProxy.dll (сборка должна быть strong name). Теперь эту сборку нужно зарегить как COM объект:
4) Далее получаем обертку на vip:
- получаем tlb файл (можно с помощью OLE/COM object viewer) по нашей сборке
- гененрируем vih и vip файлы
5) Пишем собственно на vip:
Примерно так...
1) получаем по wsdl описанию proxy web сервиса. Можно воспользоваться утилитой wsdl.exe. Например так:
Код: Выделить всё
"c:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\wsdl.exe" /n:MyNamespace /out:"webServiceProxy.cs" /urlkey:WebServiceUrl http://localhost/MyWebService.asmx?wsdl
Код: Выделить всё
[Guid(здесь конкретный Guid)]
[ComVisible(true)]
public partial class MyWebService : System.Web.Services.Protocols.SoapHttpClientProtocol {
Код: Выделить всё
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm.exe /codebase MyProxy.dll
- получаем tlb файл (можно с помощью OLE/COM object viewer) по нашей сборке
- гененрируем vih и vip файлы
Код: Выделить всё
atltlb.exe MyProxy.tlb
Код: Выделить всё
handler with replace ...
action
{
var _proxy : com_MyWebService;
_proxy := com_MyWebService(new(coMyWebService));
_proxy.МетодWebСервиса(...);
}
-
- Сообщения: 2
- Зарегистрирован: 24 июн 2009, 15:05
- Откуда: Тюмень, Тюмбит-АСУ
- Контактная информация:
Попробовал предложенный galover-ом способ, столкнулся с такой проблемой: при создании vih-ов не создаются методы веб-сервиса, в созданном файле описание объектного интерфейса выглядит так:
Соответственно, при компиляции ресурсника атлантис ругается на несуществующие методы.
В созданном wsdl-ом классе методы видно:
ComVisible(true) стоит, в свойствах проекта тоже стоят галки "Register for COM Interop" и "Make assembly COM-Visible". Сборка успешно регистрируется.
Есть какие-то тонкости в этом процессе? Как заставить галактику увидеть веб-сервисы? Разработка .Net 2.0 (VS2008), atltlb версии 5.2.08.00.
Код: Выделить всё
(...)
ObjInterface com_GalWebServices( comIDispatch );
end;
(...)
В созданном wsdl-ом классе методы видно:
Код: Выделить всё
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://zzz/webservices/HelloWorld", RequestNamespace="http://zzz/webservices", ResponseNamespace="http://zzz/webservices", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public int HelloWorld() {
object[] results = this.Invoke("HelloWorld", new object[0]);
return ((int)(results[0]));
}
Есть какие-то тонкости в этом процессе? Как заставить галактику увидеть веб-сервисы? Разработка .Net 2.0 (VS2008), atltlb версии 5.2.08.00.