19 апреля 2024, 22:52:49

Новости:

Чтобы использовать все возможности форума на смартфоне или планшете необходимо в браузере выбрать настройку "Версия для ПК".


avatar_Sinferno

Клиент на Delphi к Web-сервису на C#

Автор Sinferno, 18 января 2011, 22:51:48

0 Пользователей и 1 гость просматривают эту тему.

Sinferno

Всем доброго времени суток.
Проблема с взаимодействием клиента на Delphi с web-службой, написанной на с#. Служба обращается к базе на MS SQL-сервере.
Сгенерировал pas с интерфейсом к web-методам и функцией получения этого интерфейса (GetWebServiceSoap).
Бросил на форму THTTPRio.
Вызываю web-методы так:
R:=(RIO as WebServiceSoap).GetDeviceId(271); // GetDeviceId - как вы догадались, web-метод
или так:
GetWebServiceSoap(false, '', RIO).GetDeviceId(271);
В OnAfterExecute компонента проверяю SOAPResponse.
Но для набора данных возвращается только xml-схема, а для простых данных - значение, которое методы возвращают, когда не могут подключиться к базе, или запрос ничего не возвращает.
В базе точно есть данные и другие программы на с# успешно дёргают эти же методы.
Объясните, плж. что я делаю не так. Такое впечатление, что база не дает службе подключиться, если службу запрашивает delphi-клиент.
Самое удивительное, что когда служба и база находились в локальной сети, но сервер со службой смотрел в internet, то через internet данные удавалось получить.

jk3

Sinferno
Ну ты, блин, и вопросы задаешь  :blink:

Хз в чём проблема, может Холидей подскажет...
Победи себя - и ты будешь непобедим! ©

Sinferno

19 января 2011, 18:46:20 #2 Последнее редактирование: 19 января 2011, 18:46:50 от Sinferno
jk3, это был акт отчаяния, задавал везде. Но сегодня подсказали решение. Надо было в секцию инициализации добавить строчку:
InvRegistry.RegisterInvokeOptions(TypeInfo(WebServiceSoap), ioDocument);
Без этого клиент получал лишь схему данных, но не сами данные.

holyday

21 января 2011, 17:39:48 #3 Последнее редактирование: 21 января 2011, 17:42:03 от holyday
Sinferno
jk3
Есть крупные проэкты и на Делфи и под .НЕТ (МВС), но если честно, по данному вопросу я бы ничего не подсказал ... область специфическая )))
не сталкивался ...

Бл* буду, но я ЭТО сделаю:
NBPEL: 12 -> 13.5 -> 14.5
BPEL: 14.5 -> 16.5 -> 17.5
EG: 11 -> 12.5 -> 13 -> 13.5

Sinferno

holyday, сам не сталкивался, но обстоятельства заставили. :)

holyday

Sinferno
На Делфи пишешь ???
ИМХО: лучше уж на Шарпе под .НЕТ - стабильнее. Особенно нравится в .НЕТ авто-очистка памяти, а то не уследил и пипец, оператору нужно, каждые 2-3 часа перегружать рабочую станцию. Если объём работы большой.
Счас перешёл на кросс-платформенный С++, там опять за памятью следить надо. Но зато начальство на лицензиях от Майкрософта сэкономит (((

Бл* буду, но я ЭТО сделаю:
NBPEL: 12 -> 13.5 -> 14.5
BPEL: 14.5 -> 16.5 -> 17.5
EG: 11 -> 12.5 -> 13 -> 13.5

Sinferno

holyday, и на шарпе и на С++ тоже приходится писать. Но утверждение о стабильности программы на шарпе мне кажется очень спорным и безосновательным. Некоторые вещи на Шарпе (который в Visual Studio) легче и сподручней делать. Но если уж менять Pascal, то на СИ. Все эти интерпретируемые проги с "управляемым кодом" не люблю. тормоза от него одна и неуправляемость. Один плюс - денег больше платят программисту на C#, или, еще больше, на Java. Кроссплатформенность нормальная есть только у Java, хотя уже появилась линуксовая виртуальная машина для Framework.
Привык сам следить для памятью и всем остальным. Да и проги на нормальном языке не тормозят и не жрут ресурсы мешками. Pascal который в Delphi) мне кажется даже более удобным, стройным и непротиворечивым, чем СИ и С++. Возможности колоссальные и можно делать почти все. СИ, конечно, более гибок и более мощней, но его развитие шло путем добавления всякой функциональности к тому, что есть. И получилось не очень красиво и логично, имхо. Чего только стоит работа со строками.
Наверное, главный критерий в оценки языка - это понятность и простота кода. Чтобы взглянув на код, я видел алгоритм и предназанчение программы. Тут Pascal'ю равных нет, имхо.

holyday

Sinferno
Спорить не буду, ибо каждому своё  :)
Но, я в восторге от Шарпа.
В С++, пока только въезжаю  :rolleyes: , хотя есть два проэктика рабочих.

Бл* буду, но я ЭТО сделаю:
NBPEL: 12 -> 13.5 -> 14.5
BPEL: 14.5 -> 16.5 -> 17.5
EG: 11 -> 12.5 -> 13 -> 13.5

Sinferno

holyday, тоже спорить не стану. ;) Ибо лучший язык - это тот, которым лучше владеешь.

Sinferno

Начинаю новый большой проект на шарпе. Работа с базами данных мне показалась намного сложней, чем в Delphi (может из-за отсутствия опыта). Но собираюсь написать под себя классы, чтобы инкапсулировать всю тягомотину.



По всем вопросам пишите по адресу gratispp@mail.ru