Форум: ".Net";
Текущий архив: 2008.07.27;
Скачать: [xml.tar.bz2];
ВнизWeb Service, DCOM сервер и многия клиенты Найти похожие ветки
← →
Skyle © (2005-07-06 07:03) [0]Есть такая задача. Имеется унаследованный сервер DCOM. Нужно написать Web Service, который будет шлюзовать запросы клиентов к этому самому серверу. Клиенты написаны на C#.
Создал interop, вкрутил в сервис, создал пару тестовых WebMethod"ов, из которых он обращается, всё вроде в ажуре.
Проблем несколько.
1. Аутентификация.
Пробовал решить через строку
<identity impersonate="true" userName="DOMAIN\USER" password="superpass"/> в web.config этого WebServicer"а. Вроде бы работает, но почему-то не всегда.
Я правильно понимаю, что под указанной учётной записью будет исполняться мой WebService и обращение к DCOM серверу будет именно под этой учётной записью (т.е. ей нужно раздать достаточные права в dcomcnfg на машине с DCOM сервером)?
2. Сохранение коннекта.
Видимо по умолчанию WebService находится в stateless mode, т.е. не держит сессии (cookies клиенты принимать умеют и это у них разрешено). Поэтому при каждом вызове каждого метода создаётся коннект к серверу (новый экземпляр). Видимо это новый экземпляр WebService"а. Пробовал создавать экземпляр DCOM сервера и хранить его в объекте Application. Работает, но решение видится очень кривым.
Вопрос в том, как заставить сервис держать сессии.
Есть и ещё вопросы, но это основное...
P.S. WebService пока написан в VS .NET 2003, но возможно будет написан на D7. Думаю ответы на эти вопросы одинаковы в обоих случаях.
Интересуют либо прямые ответы, либо ссылки на соответствующие доки либо просто накидать умных слов, чтобы я сам поискал...
← →
iZEN © (2005-07-06 08:44) [1]stateless - это природа WebServices.
← →
Polevi © (2005-07-06 09:25) [2]если DCOM сервер statefull придется тебе держать ссылку, ничего не поделаешь
← →
Skyle © (2005-07-06 09:45) [3]> stateless - это природа WebServices.
Т.е. никак его не заставить чтоли?
А как насчёт [WebMethod(EnableSession=true)]?
Насколько я понял, это именно включение сессий (т.е. раздаются cookies, объект Session живёт и может хранить данные между соединениями), но вот у меня это не заработало.
> [2] Polevi © (06.07.05 09:25)
> если DCOM сервер statefull придется тебе держать ссылку,
> ничего не поделаешь
Где держать-то?
Глобально, как я и писал (одна на всех в Application) или всё-таки умудриться запустить сессии?
Можно попробовать в Application сделать какой-нибудь пул, например имя объекта - уникальный гуид логической сессии клиента.
Если не запущу сессии, видимо так и придётся работать...:(
И ещё вопрос...
Допустим, у меня на каждое обращение создаётся экземпляр DCOM сервера со всеми вытекающими (коннект и прочее). Как эти коннекты отрубать?
Казалось бы достаточно просто уничтожить объект в сервисе, но не тут то было.
Насколько я понял привычным образом аля Excel.Quit; Excel := UnAssigned; тут не поступишь. Приходится отдаваться на милость GC? Или всё-таки есть способы его погасить руками?
В общем, чего-то я здесь простого не догоняю видимо...
← →
Игорь Шевченко © (2005-07-06 09:55) [4]
> Видимо по умолчанию WebService находится в stateless mode
А в webconfig посмотреть в сторону параметра sessionState не поможет ?
← →
Polevi © (2005-07-06 10:01) [5]честно говоря могу ощибаться, но EnableSession это когда объект Session сериализуется и передается при каждом request-response
тебе же требуется хранить в памяти сервера двоичный объект
вариант с пулом вполне нормальный
насчет lifetime можешь копнуть в сторону спонсоров
← →
Skyle © (2005-07-06 10:51) [6]> насчет lifetime можешь копнуть в сторону спонсоров
А что за спонсоры? Как в оригинале называется?
← →
Skyle © (2005-07-06 10:52) [7]
> [4] Игорь Шевченко © (06.07.05 09:55)
> > Видимо по умолчанию WebService находится в stateless mode
> А в webconfig посмотреть в сторону параметра sessionState
> не поможет ?
Посмотрел, написано, что сессии включены (cookieless = FALSE)...
← →
Игорь Шевченко © (2005-07-06 11:54) [8]
> А что за спонсоры? Как в оригинале называется?
Так и называются
← →
Polevi © (2005-07-06 11:55) [9]http://msdn.microsoft.com/msdnmag/issues/03/12/leasemanager/default.aspx?fig=true#fig7
← →
Skyle © (2005-07-06 14:23) [10]Всем спасибо, буду делать пул.
Страницы: 1 вся ветка
Форум: ".Net";
Текущий архив: 2008.07.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.019 c