Здравствуйте MagAlx, Вы писали:
MA>Скажите, уважаемые! Какой интерфейс должен поддерживать COM-объект, чтобы он мог храниться в Collection ( VB Collection) ?
Что бы хранится в коллекции никакого интерфейса вроде как и не надо, но, что бы написать коллекцию нужно немного потрудится. Вот здесь это обсуждалось http://www.rsdn.ru/forum/message.asp?mid=10104
Здравствуйте IT, Вы писали:
IT>Здравствуйте MagAlx, Вы писали:
MA>>Скажите, уважаемые! Какой интерфейс должен поддерживать COM-объект, чтобы он мог храниться в Collection ( VB Collection) ?
IT>Что бы хранится в коллекции никакого интерфейса вроде как и не надо, но, что бы написать коллекцию нужно немного потрудится. Вот здесь это обсуждалось http://www.rsdn.ru/forum/message.asp?mid=10104
Здравствуйте MagAlx, Вы писали:
MA>Тогда извольте потрудиться и посмореть пробелму, описаную в COM issue
Поконкретней, пожалуйста, где этот COM issue.
А лучше вопрос сформулировать по-понятнее. Лично я ещё ни разу в этой жизни не писал какой-бы то ни было специальной поддержки для классов, включаемых в коллекции.
Если имеются ввиду рекомендации MS для объектных моделей приложений, то это уже другой вопрос, который и задавать надо по другому.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте IT, Вы писали:
IT>Здравствуйте MagAlx, Вы писали:
MA>>Тогда извольте потрудиться и посмореть пробелму, описаную в COM issue
IT>Поконкретней, пожалуйста, где этот COM issue. IT>А лучше вопрос сформулировать по-понятнее. Лично я ещё ни разу в этой жизни не писал какой-бы то ни было специальной поддержки для классов, включаемых в коллекции.
IT>Если имеются ввиду рекомендации MS для объектных моделей приложений, то это уже другой вопрос, который и задавать надо по другому.
Он звучал так:
Hello All,I have a problem, and possibly you would be able to advise.
Thank you very much in advance for your kind help and answer(of course, answer if you only have time).
Description:
There is some COM object which is created as following
Set MYStatuses = New MYCOMLib.MYClient
object can be created and works somehow, but it can't be saved to the session
the session variable is empty after
Set masterWebClass.Session("MY_CLIENT") = MYStatuses
OR
Set MYStatuses = New MYCOMLib.MYClient
Set x = MYStatuses
Attention!! The x varible not is Nothing but afer next operation (see below), the masterWebClass.Session("MY_CLIENT") is Empty
Set masterWebClass.Session("MY_CLIENT") = x
1) What can be possible reason of such a behavior?
2) should COM component have something special to allow save it to and restore it from ASP Session?
Special interface or something like that?
Здравствуйте MagAlx, Вы писали:
MA>1) What can be possible reason of such a behavior? MA>2) should COM component have something special to allow save it to and restore it from ASP Session? MA>Special interface or something like that?
Оснований для такого поведения много, но это никак не связано со специальными интерфейсами, о которых я пока не слышал.
В MSDN, практически в каждой статье говорится о том, что сохранять что-либо в сессии не есть очень хорошо, так как не надёжно. Лучше пользоваться кукесами, хотя в них объекты и не затолкаешь. Либо придумывать другие решения. В частности, одной из проблем может быть то, что IE для страниц с фреймами не может использовать тот же самый процесс, а так как информация о сессии сохраняется в памяти процесса, то в этом случае IE открывает новую сессию и, следовательно, переменные старой сессии уже недоступны. В общем, здесь нужен более подробный пример, желательно без лишней воды.
Если нам не помогут, то мы тоже никого не пощадим.
MA>Attention!! The x varible not is Nothing but afer next operation (see below), the masterWebClass.Session("MY_CLIENT") is Empty MA>Set masterWebClass.Session("MY_CLIENT") = x
А что за зверь masterWebClass? Это случайно не ASP-шный Application?
Если это свой (самопальный) объект, то проблема (думаю) в нем.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте VladD2, Вы писали:
VD>Здравствуйте MagAlx, Вы писали:
MA>>Attention!! The x varible not is Nothing but afer next operation (see below), the masterWebClass.Session("MY_CLIENT") is Empty MA>>Set masterWebClass.Session("MY_CLIENT") = x
VD>А что за зверь masterWebClass? Это случайно не ASP-шный Application?
VD>Если это свой (самопальный) объект, то проблема (думаю) в нем.
IT>В MSDN, практически в каждой статье говорится о том, что сохранять что-либо в сессии не есть очень хорошо, так как не надёжно. Лучше пользоваться кукесами, хотя в них объекты и не затолкаешь. Либо придумывать другие решения. В частности, одной из проблем может быть то, что IE для страниц с фреймами не может использовать тот же самый процесс, а так как информация о сессии сохраняется в памяти процесса, то в этом случае IE открывает новую сессию и, следовательно, переменные старой сессии уже недоступны. В общем, здесь нужен более подробный пример, желательно без лишней воды.
1) Это дело такое, что написано я знаю :))
2) Как из примера видно, дело не во фреймах, Collection объект храниться, любой другой объект, который ИМИ поставлялся — тоже храниться, а вот имеено с этим проблемы?
Здравствуйте VladD2, Вы писали:
VD>Здравствуйте MagAlx, Вы писали:
MA>>Это просто WebClass!
VD>Так это твой объект или чужой?
Это не мой — это MS -ный в ISS Application
М еще раз прошу обратить внимание —
стандартный Collection и какой-либо другой, сделанный ИМИ или мной, сохранияется, а вот ИМЕННО ТОТ — ОДИН, из-за которого и написал письмо!
Вот мне и инетерсно, как ПРОБЛЕМНЙЫЙ объект написан так, что его не получается впихнуть в Session.Contens Collection!
И пожалуйста, посылайте предположения только обоснованные, поговорить можно и так, как-нибудь!
Здравствуйте MagAlx, Вы писали:
MA>Скажите, уважаемые! Какой интерфейс должен поддерживать COM-объект, чтобы он мог храниться в Collection ( VB Collection) ?
Может быть проблема в
PRB: Storing STA COM Component in Session Locks Session Down to Single Thread
ID: Q243815
Здравствуйте IT, Вы писали:
IT>Здравствуйте MagAlx, Вы писали:
MA>>Set MYStatuses = New MYCOMLib.MYClient
IT>Кстати, а почему через New? Объекты в ASP лучше создавать с помощью Server.CreateObject.
БО ЭТО НЕ ASP — SCRIPT!
И связывание на уровне виртуальной таблицы
Здравствуйте MagAlx, Вы писали:
MA>БО ЭТО НЕ ASP — SCRIPT!
^%#$%, совсем голову заморочил. почитай вот это на досуге — http://delphi.mastak.ru/vopros/index.html , очень помогает правильнее воспринимать бытиё.
MA>И связывание на уровне виртуальной таблицы
А это ещё чё за связывание такое? Раннее бейсиковское что-ли? Так оно не обязательно должно работать через VTBL, объект может и не поддерживать дуального интерфейса.
В общем, судя по расплывчатой информации, проблема у тебя скорее всего либо в masterWebClass либо в правильности его использования. Я например совсем не уверен, что конструкция
Set masterWebClass.Session("MY_CLIENT") = x
должна автоматически создавать элемент коллекции "MY_CLIENT". Не исключено, что ты сам заранее должен об этом позаботиться и прежде вызвать какое-нибудь
masterWebClass.Session.Add("MY_CLIENT")
Если нам не помогут, то мы тоже никого не пощадим.
Re[8]: Интерфесы и коллекция
От:
Аноним
Дата:
03.12.01 15:45
Оценка:
Здравствуйте IT, Вы писали:
IT>Здравствуйте MagAlx, Вы писали:
MA>>БО ЭТО НЕ ASP — SCRIPT!
IT>^%#$%, совсем голову заморочил. почитай вот это на досуге — http://delphi.mastak.ru/vopros/index.html , очень помогает правильнее воспринимать бытиё.
MA>>И связывание на уровне виртуальной таблицы
IT>А это ещё чё за связывание такое? Раннее бейсиковское что-ли? Так оно не обязательно должно работать через VTBL, объект может и не поддерживать дуального интерфейса.
IT>В общем, судя по расплывчатой информации, проблема у тебя скорее всего либо в masterWebClass либо в правильности его использования. Я например совсем не уверен, что конструкция
IT>
IT>Set masterWebClass.Session("MY_CLIENT") = x
IT>
IT>должна автоматически создавать элемент коллекции "MY_CLIENT". Не исключено, что ты сам заранее должен об этом позаботиться и прежде вызвать какое-нибудь
IT>
IT>masterWebClass.Session.Add("MY_CLIENT")
IT>
Давай определим вещи!
masterWebClas is WebClass, который написан MS и используется дизайнеором в VB? когда создается проект типа IIS Application! Он совершенно нормальный! Так как вся проблема заключается именно в классе MyClient, Этот класс был разработан не ной, и возможность получение Source Code равна 0! В Session.Add("MY_CLIENT") можно "бросать" любые объкты, которые мне необходимо, но именно с этим объктом (MyClient) — ПРОБЛЕМА!