powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Джентльмены, кто работал с COM+ на VB
45 сообщений из 45, показаны все 2 страниц
Джентльмены, кто работал с COM+ на VB
    #33659294
Может кто просветит, почему столь мощная технология COM+ столь редко используется в VB и ASP - проектах? В чем ее слабость - в сложностях настройки компонентов или в ограничениях бейсика (поддержке событий, например). Взял несколько раритетных книг по данной тематике - пытаюсь разобраться и применить. Может зря трачу время и силы? Буду рад любой информации от уважаемых Гуру ;)
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33659335
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дан Эпплман, известный как Гуру, еще 5 лет назад заявил, что и COM, и COM+, и др. подобные технологии не только устарели, не успев толком прижиться, но и гавно полное.
Если интересно подробнее, сделай запрос в поисковике по "Appleman" и "COM"... я лично в подробности не вдавался...
:))
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33659389
Один1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Абросов ЮрийМожет кто просветит, почему столь мощная технология COM+ столь редко используется в VB и ASP - проектах? Собственно, а с чего вы взяли что "редко используется" ? Там где надо, там и используется :)
Может просто не так часто находил лись задачи, где это было надо ? Абросов Юрий Взял несколько раритетных книг по данной тематике - пытаюсь разобраться и применить. Может зря трачу время и силы? Вы же сами написали "раритетных". Вот вам и ответ
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33660445
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
COM+ имеет смысл использовать при большой нагрузке на сервер. В asp смысла использовать нет - IIS и так под COM+ крутится. А насчет сложности настройки - в саму точку. Поддержку событий тоже можно сделать, но ее еще сложнее настроить. Мне, например, так и не удалось даже на одном и том же компе. Кроме того многие файерволлы блокируют Remote Procedure Call, необходимый для com+.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33660507
Letter_D:
Вот именно, что не вдавался в подробности. Я читал его (Эпплмана) "Guide" - там ничего нет по использованию COM+. Так что где он выражал свое отношение к данной технологии и какие аргументы приводил? И особенно удивляет, по Вашему высказыванию, его отрицательное отношение к COM, на котором весь VB и построен. Будьте добры приводить первоисточник после столь громких заявлений.

Один1 :
Не согласен с Вами - таких задач немеряно. Технология же COM+ предполагается для использования в распределенных приложениях и Интернет посредством ASP. Возможно эта технология вытесняется JAVA, котроый изначально ориентирован на создание таких приложений. И кроме того набирает обороты нетовские WEB-сервисы.
И насчет раритетов. Раритетами становятся не только неиспользуемые издания, но и не модные, т.е. не бестселлеры.

И вообще, джентльмены, почему такая низкая активность - неужели топик неинтересный ;)
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33660736
Antonariy:
Вот это уже похоже на серьезные аргументы. А насчет ASP я не понял - почему не нужно использовать COM+? Компоненты же вызываются как объекты ASP. Может имеется ввиду не обязательностьиспользования именно ASP для интернет-приложений, скажем PHP или Perl?
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33660761
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В книге "Переход на VB.NET" Дан Эплман долго и старательно объясняет что .NET - это не есть очередное новое название для давно устаревшей вещи (как любит это делать микрософт). При этом "нечаянно" забрасывает камнями всю СОМ.
Все знают как трудно освоить СОМ в дельфи или С++. И, мне кажется, лишь эта сложность заставляет произносить фразы о "мощности СОМ".
Наверно словосочетание "столь мощная технология СОМ" все же не более чем клише.
В VB6 очень просто создавать СОМ-компоненты. Есть соблазн этим воспользоваться.
Но есть пара оговорок, пара риторических вопросов:
"а как с сопровождением проекта другими программистами?"
и "а каково соотношение (усилия_на_освоение/эффективность) COM в сравнении с дотнет?"
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33660763
Один1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Абросов Юрий Один1 :
Не согласен с Вами - таких задач немеряно. Технология же COM+ предполагается для использования в распределенных приложениях и Интернет посредством ASP. Возможно эта технология вытесняется JAVA, котроый изначально ориентирован на создание таких приложений. И кроме того набирает обороты нетовские WEB-сервисы. Я не готов дать сколь либо приемлемую оценку слову "немеряно", п.є. спорить не буду. Немеряно, значит немеряно.

Вы правы, говоря, что COM+ создавался для применения в распределенных приложениях (фактич. являлся развитием DCOM + MTS). Сейчас MS предлагает совсем другие решения для этих задач: Remoting (к-й тоже уже уступает Indigo свое место) и те же Web сервисы.

Т.о. даже если не говорить о степени распространенности приложений использующих COM+, в градации MS эта технология - (поза)вчерашний день.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33660931
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абросов Юрий А насчет ASP я не понял - почему не нужно использовать COM+? Компоненты же вызываются как объекты ASP. Может имеется ввиду не обязательностьиспользования именно ASP для интернет-приложений, скажем PHP или Perl?Имеется ввиду, что Internet Information Server, обрабатывающий asp-скрипты, сам работает под COM+, соответственно vb-компоненты, которые он может использовать, автоматически попадают в контекст COM+, и дополнительно для этого ничего не нужно делать.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33661053
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абросов Юрий Технология же COM+ предполагается для использования в распределенных приложениях и Интернет посредством ASP.Неверно. Технология DCOM предназначена для вызова методов com-классов, установленных на другом компьютере, а MTS занимается обработкой пула соединений с базой данных и упорядочиванием транзакций. А COM+ - это два в одном.

Например, подключаются к SQL серверу 200 клиентов. Без COM+ сервер должен поддерживать 200 соединений да еще выстраивать их транзакции, а каждое соединение отжирает приличную долю ресурсов. При наличии серверной библиотеки, заточенной под COM+, вся эта деятельность переклатывается на нее. COM+ сам решает сколько соединений открыть и как выстроить транзакции, чтобы оптимально использовать ресурсы компьютера.

К интернету и распределенным приложениям COM+ отношения не имеет, он работает только в локальной сети.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33661134
Antonariy:
К интернету и распределенным приложениям COM+ отношения не имеет, он работает только в локальной сети.
Ага, так вот где собака порылась. Стало быть, это и есть "узкое" место данной технологии ;)
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33661155
Worobjoff:
А вот где, интересно, этот самый "Переход на VB.NET" Дана Эплмана можно найти? Не подскажете ли, может есть сылка где на форуме ;)
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33661248
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСтало быть, это и есть "узкое" место данной технологии ;)Дело не в узости, а в области применения. COM+ разрабатывался как средство уменьшения нагрузки на сервер при работе клиентских приложений в локальной сети, интенсивно его нагружающих. web-клиенты по определению не предназначены для такой работы, они подключаются по протоколу http через web-сервер, который опять-таки работает под com+.

Ты лучше в консерватории разберись - нафига тебе вообще сдался com+. Мощь современных серверов позволяет поддерживать пару сотен клиентов без всяких плюсов, а судя по вопросам ты еще не дорос до приложений, рассчитанных на несколько тысяч подключений.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33662760
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абросов Юрий
Уже ответили. Я там же прочитал. Причем не сказал, что согласен, не надо фыркать в мою сторону.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33663920
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy Абросов Юрий Технология же COM+ предполагается для использования в распределенных приложениях и Интернет посредством ASP.Неверно. Технология DCOM предназначена для вызова методов com-классов, установленных на другом компьютере, а MTS занимается обработкой пула соединений с базой данных и упорядочиванием транзакций. А COM+ - это два в одном.

Например, подключаются к SQL серверу 200 клиентов. Без COM+ сервер должен поддерживать 200 соединений да еще выстраивать их транзакции, а каждое соединение отжирает приличную долю ресурсов. При наличии серверной библиотеки, заточенной под COM+, вся эта деятельность переклатывается на нее. COM+ сам решает сколько соединений открыть и как выстроить транзакции, чтобы оптимально использовать ресурсы компьютера.

К интернету и распределенным приложениям COM+ отношения не имеетон работает только в локальной сети. , Строго говоря, распределенные приложения могут быть и в пределах лок. сети.
С остальным согласен.

2 Абросов Юрий - если уж взялись "ворошить былое", советую начать с DCOM и MTS. Тогда стенет понятно откуда пошел COM+
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33664289
Alexey Kudinov
В том-то и дело, что я к COM+ пришел через DCOM и MTS. Предысторию я смотрел. Повторюсь, меня интересует почему эта технология не прижилась.
Как кто-то здесь сказал, очень велик соблазн построения распределенных приложений (пусть и в локальной сети или Интранет) с помощью компонентов, настраиваемых на поддержку транзакций, активацию по требованию и пр.
Однако отказ от этих возможностей в большинстве приложений оказался для меня столь неожиданным что послужил созданию данного топика.

Letter_D
Надеюсь, в ближайшее время ознакомлюсь с доводами Эпплмана против COM+, тогда извинюсь за "фырканье в Вашу сторону" ;) Все-таки переход на VB.NET столь трудоемок, что хочется выжать максимум из возможностей VB и COM, в особенности для распределенных приложений и Интранет.

Всем
Собственно идея использования COM+ и возникла в связи с разработкой корпоративного сайта и необходимостью снижения нагрузки на сервер.
Вот и рою, и вас беспокою, уважаемые Гуру ;)
Спасибо за участие в обсуждении. Надеюсь оно будет интересным и другим участникам форума :)
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33670186
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как идет ваше освоение COM+, Юрий?
У меня свой вопрос: где найти инсталляцию MTS?
В моей работе очень бы пригодилась распределенная архитектура. Но по другой причине: Бизнес-логика сложная.
Реализовать бизнес-логику в моделях предметной области и вынести ее из клиента выглядит очень заманчиво. Плюрализм мнений (изрядно надоевший) относительно построения клиентских приложений размывает логику и сильно затрудняет повторное использование кода в работе.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33670215
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MTS ставится вместе с SQL Server'ом, в SQL Service Manager'е виден под названием "Координатор распределенных транзакций"
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33670677
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffВ моей работе очень бы пригодилась распределенная архитектура. Если (вдруг :) ) встанет вопрос о переходе на .Net и использовании распределенной архитектуры в .Net, советую прочитать этот тред про Enterprise Services (это фактич. обертка над COM+ для .Net) и потом этот
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33670723
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абросов ЮрийКак кто-то здесь сказал, очень велик соблазн построения распределенных приложений (пусть и в локальной сети или Интранет) с помощью компонентов, настраиваемых на поддержку транзакций, активацию по требованию и пр.
Однако отказ от этих возможностей в большинстве приложений оказался для меня столь неожиданным что послужил созданию данного топика. Соблазн то велик, но ... Здесь можно легко "съехать" в оффтоп, который активно обсуждается в Проектировании БД или Построении инф. систем.
Если вкратце, то IMO уже выросло поколение программистов "наигравшихся" в подобного рода архитектурные изыски и знающих к чему они ведут.
С другой стороны, как правильно заметил Antonariy
Antonariy Мощь современных серверов позволяет поддерживать пару сотен клиентов без всяких плюсов, а в интранете редко бывает больше.
Т.е., грубо говоря, обычный клиент-сервер оказывается вполне подходящим для решения большинства задач.

Итого:
1 COM+ хорош сам по себе, но для большинства задач просто не нужен
2 А те задачи, где он нужен, сейчас решают другими средствами.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33670746
Worobjoff

Совершенно верно, MTS устанавливается с SQL Server. Настраивать компоненты нужно в Сomponent Manager. А устанавливать части распределенного приложения - где угодно в пределах сети.
Я сделал пару простых приложений, такого состава:

1. клиент - IE + ASP-файлы;
2. сервер приложений - наборы COM+ компонентов двух уровней: уровня баз данных и уровня бизнесс-логики;
3. сервер баз данных - база данных на MSSQL Server.

Все эти части распределенного приложения размещались на разных серверах в различных конфигурациях. Например, ASP-страницы и база данных - на одном, а COM+ компоненты - на другом и т.п.

Источник: Скот Хильер "Создание приложений COM+ в среде Visual Basic",
www.williamspublishing.com

PS:
Да, кстати, я прочитал Дена Эпплмана. В действительности, он очень осторожно подводит к мысли, что COM - устаревшая технология, перечисляя ее серьезные недостатки. Но весь традиционный VB построен на ней, да и в .NET сохраняется возможность использования COM. Даже глава у него так и называется "COM умер - да здравствует COM". Так что COM умрет вместе с традиционным васиком, а васик, как я понимаю, умирать не собирается ;)
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33671926
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Kudinov WorobjoffВ моей работе очень бы пригодилась распределенная архитектура. Если (вдруг :) ) встанет вопрос о переходе на .Net и использовании распределенной архитектуры в .Net, советую прочитать этот тред про Enterprise Services (это фактич. обертка над COM+ для .Net) и потом этотА есть ли возможность написать COM+ сервер на дотнет?
Клиентское приложение на дотнет врядли позволят писать (разве что работу сменить ;).
А вот сервер приложений - может быть да.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33672030
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffА есть ли возможность написать COM+ сервер на дотнет?
Клиентское приложение на дотнет врядли позволят писать (разве что работу сменить ;).
А вот сервер приложений - может быть да. Теоретически (теоретически !) да, возможность есть. .Net-овские сборки могут быть опубликованы как Com интерфейсы. Только, боюсь, что смысла в этом нет.
Для .Net Com - не родная технология. .Net может работать с .Com, но ... не любит :)

Наверняка будет много странных проблем. Посмотрите хотя бы на мучения Magnus23 с Enterprise services.

IMO:
При разработке под .Net есть простое правило: надо писать под .Net все и сразу. "кусочек" переписать не получится, что бы там не говорилось в статьях по миграции и как бы не хотелось начальству и программистам. Соответственно старые проеткты продолжаем вести на VB, новые - на .Net
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33672750
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Kudinov"кусочек" переписать не получится, Это почему же не получится переписать один из кусочков классической трехзвенной системы? Вообще-то разбиение на звенья придумано заодно и для того, чтобы при изменениях не переделывать всё разом. А если в архитектуру системы заложены интерфейсы, на основании которых реализуются классы взаимодействия между компонентами, то переделать такой класс можно и на .NET

Alexey KudinovТеоретически (теоретически !) да, возможность есть. .Net-овские сборки могут быть опубликованы как Com интерфейсы. Только, боюсь, что смысла в этом нет.
Для .Net Com - не родная технология. .Net может работать с .Com, но ... не любит :)Автор совсем запутался в различиях между COM как таковым и COM+ как частным случаем ;)

C COM+ в .NET дела обстоят еще лучше, чем в VB6.
MSDNIn the .NET Framework, you can still use all of the services that COM+ offers, as long as your classes derive from the System.EnterpriseServices.ServicedComponent class. Any class that derives from the ServicedComponent class will be hosted by COM+ services and can use any of the available COM+ services.

MSDNWhen creating components in .NET that you want to interact with COM+ Services, you perform the following steps. Table 2 includes an explanation of each step.

1. Create a Class Library.
2. Create all classes so they inherit from the System.EnterpriseServices.ServicedComponents class.
3. Create an assembly.
4. Create a strong name.

Table 2. Definition of terms used in creating a .NET component

Term Description
Class Library A .dll project type that contains classes. There is generally no user interface with this type of project. System.EnterpriseServices.ServicedComponents A class in the .NET Framework that is required for you to be able to interact with COM+ Services
Assembly A description of all of the classes and interfaces within your project Strong Name Generates a GUID from your assembly so that your component can be registered with COM+ Services Поставив где нужно галочку Expose to COM, можно прозрачненько юзать такой сервер из VB6.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33672850
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПоставив где нужно галочку Expose to COM, можно прозрачненько юзать такой сервер из VB6.Дай бы бог что бы так!
Я уже создавал модели предметной области на VB6. Намучился с поддержкой событий и борьбой с циклическими ссылками! Даже если не надо закладывать поддержку интерактивности клиентов, пользующихся библиотекой классов, с событиями все равно иметь дело придется. А еще недостатки VB6-шного ООП...
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33672884
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy Alexey Kudinov"кусочек" переписать не получится, Это почему же не получится переписать один из кусочков классической трехзвенной системы? Вообще-то разбиение на звенья придумано заодно и для того, чтобы при изменениях не переделывать всё разом. А если в архитектуру системы заложены интерфейсы, на основании которых реализуются классы взаимодействия между компонентами, то переделать такой класс можно и на .NET Да, в теории так и должно быть. Просто ... не советую.

AntonariyC COM+ в .NET дела обстоят еще лучше, чем в VB6.
MSDN<skipped>Поставив где нужно галочку Expose to COM, можно прозрачненько юзать такой сервер из VB6. Это понятно все, можно было и не цитировать столь обильно MSDN.

Еще раз. COM+ появился ДО .Net.
.Net на момент выхода обладал технологией, позволяющей создавать распределенные приложения (Remoting) и не обладал технологией позволяющей управлять транзакциями. Т.о. из двух составляющих COM+ (DCOM и MTS) у .Net была замена только одной, DCOM-у. Так появились Enterprise Services, которые суть есть .Net-овская обертка над COM+
Насколько с ними "лучше", можно посмотреть на примере треда, который я уже приводил. Если очень хочется можно верить, что на самом деле все хорошо, просто руки кривые были
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33673408
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey, а какие средства есть в дотнет для создания (не СОМ) распределенных приложений ?
Куда копать?
И, если (может быть :) для этого достаточно всего-лишь реализовать каие-то интерфейсы, то каие?
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33673493
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffAlexey, а какие средства есть в дотнет для создания (не СОМ) распределенных приложений ?
Куда копать?
И, если (может быть :) для этого достаточно всего-лишь реализовать каие-то интерфейсы, то каие? Ну вот например http://msdn.microsoft.com/msdnmag/issues/02/10/NETRemoting/ но не факт, что это отражает последние взгляды МS на то как надо строить распределенные приложения. :)

вообще искать по словам .Net distributed applications и еще, после того как почитаете про Remoting, искать про Indigo
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33673702
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffДай бы бог что бы так!
Я уже создавал модели предметной области на VB6. Намучился с поддержкой событий и борьбой с циклическими ссылками!Гы! Флаг тебе в руки.)) Я не имел ввиду, что написание всех этих наворотов есть пустяковая задача (лично у меня события COM+ так и не заработали), а то, что уж коли оно сделано в .NET , то и в VB6 через прокси элементарно заработает.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33673809
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey KudinovДа, в теории так и должно быть. Просто ... не советую. Система, которую я сейчас пишу, состоит из 7и библиотек, из которых 2 серверные, 4 клиентские и одна общая, описывающая интерфейсы. Одна из серверных отвечает за транспортировку данных, другая за доступ к данным SQL Server'а. Я могу заточить библиотеку доступа под Oracle, под Interbase, да хоть под текстовые файлы, и это никак не коснется остальных 6и звеньев системы. Я могу переписать библиотеку транспорта, чтобы она использовала вместо http непосредственно tcp или еще более непосредственно DCOM - и это никак не отразится на остальных. Могу добавить компрессию и шифрование пакетов и это коснулось бы двух (кошмар!) транспортных библиотек - серверной и клиентской - если бы не было уже реализовано в общей - опять таки одной.

Я с вниманием прислушиваюсь ко всем советам))
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33674022
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyСистема, которую я сейчас пишу, состоит из 7и библиотек, из которых 2 серверные, 4 клиентские и одна общая, описывающая интерфейсы. Давайте отделять мух от котлет (С)
Вы описали стандартный компонентный подход к проектировнию сколь либо сложных систем и сказали, что изменение одного компонента не приведет к изменению других. Ну это азы проектирования, очевидные даже новичку.

Я же говорю о том, что по возможности не стОит смешивать технологии разных поколений, да еще и в виде downgrade-а более новой технологии. Да, в теории это будет работать. Да, на тестах это тоже будет работать. Однако в дальнейшем при таком подходе возможны, даже более того, весьма вероятны внезапные проблемы с безопасностью, настройкой доступа, производительностью и т.п.
Из треда, который я уже приводил.
Magnus23В жизни бы не подумал что все так просто. После продолжительных копаний и собирания инфы "с миру по нитке" выработал таки более-менее четкий план действий.
Сейчас все это видится простым до неприличия.далее
Magnus23Я на эту бодягу уже 2 проэкта перевожу, нужно только оттестировать хорошенько на предмет перформенса, а так выглядит очень даже ничего себе :).

На счет транзакций, это одна из фичей, но не в первую очередь.

В первую очередь это наличие централизованного сервера компонетов на котором можно держать бизнес-логику и слой доступа к данным отдельными компонентами и иметь возможность актуализации этого дела только на одной машине - сервере, а все пять тясяч клиентов и знать об этом не будут.

Cool, не правда ли?
далее
Magnus23Короче все не так гладко как кажется.
На деле оказалось что та самая прокся для клиента из ремотинга выколупывается.
И все сообщения тоже через него. Выходит так что Enterprise Services херня какая-то. Говорили ж мне: Overhead, Overhead, Overhead...

Плюс еще начали выскакивать какие-то левые проблемы. Оттестеный код который был перенесен из сервиса в компонент вдруг начал вываливатся c StackOverflowException. При чем на строке которая делает вызов API из натиной dll, там никаких лупов и рекурсии в жизни не валялось. Точно так же валятся все API вытзовы.

Поэтому я и сказал "не советую"
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33674165
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично я стал бы связываться с такой технологией распределенной системы где клиентское приложение может юзать объекты сервера приложений примерно так:
Код: plaintext
1.
2.
For Each Заказ In РеестрЗаказов.ItemByName("06/171-ЗТ")
   debug.print Заказ.ИмяОбщее
Next
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33674169
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что ж, вглядимся детально...
Magnus23На деле оказалось что та самая прокся для клиента из ремотинга выколупывается.
И все сообщения тоже через него. Выходит так что Enterprise Services херня какая-то. Говорили ж мне: Overhead, Overhead, Overhead...Не знаю что такое Overhead, но автор ожидал увидеть именно его, а увидел тот же COM+, только в профиль. То есть технология толком не поменялась и ни о каком даунгрейде речи быть не может. Поменялось только средство доставки вызовов - с DCOM на Remoting.
Magnus23Плюс еще начали выскакивать какие-то левые проблемы. Оттестеный код который был перенесен из сервиса в компонент вдруг начал вываливатся c StackOverflowException. При чем на строке которая делает вызов API из натиной dll, там никаких лупов и рекурсии в жизни не валялось. Точно так же валятся все API вытзовы.А это недостатки конкретной реализации. Черным по белому написано - автор копипастнул код из сервиса . А программирование под COM+ предъявляет определенные требования к тому, что и как (особенно апи, да еще в транзакции) должно вызываться по ходу выполнения. Не видя того, что там напрогано, было бы неверно все проблемы валить на то, что технология - отстой. И вообще - проблемы именно в сервере, он даже не успевает отписать результаты работы клиенту - валится. Так что, до момента, на котором могут столкнуться лбами разные технологии дело просто не доходит.

Вобщем, я не вижу убедительных причин (личные фобии не в счет) не делать клиент и сервер на разных технологиях. Но только если это оправдано.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33674216
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffЛично я стал бы связываться с такой технологией распределенной системы где клиентское приложение может юзать объекты сервера приложений примерно так:Как клиенту юзать серверные объекты - целиком на совести разработчика, а не технологии. Сначала разрабатывается архитектура, потом выбираются средства и методы ее реализации. Допустим так, как написал ты. Это тоже можно сделать двумя путями. Если классы объектов "Заказ" и "РеестрЗаказов" разместить непосредственно на сервере, то тут без COM+ не обойтись. А если на клиенте? Клиенту совершенно без разницы как происходит вызов ItemByName("06/171-ЗТ").Item. В Property Get может находится запрос к серверу любым способом, и именно там может формироваться объектное представление для переменной "Заказ".
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33674239
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, значит все что мне нужно - реализовать интерфейсы COM в своих классах и настроить MTS ?
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33674245
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffЛично я стал бы связываться с такой технологией распределенной системы где клиентское приложение может юзать объекты сервера приложений примерно так:
Код: plaintext
1.
2.
For Each Заказ In РеестрЗаказов.ItemByName("06/171-ЗТ")
   debug.print Заказ.ИмяОбщее
Next
А оно так и есть :) Только работать с распред. данными именно так не всегда оправдано. Но это отдельная тема, ОЧЕНЬ флеймогонная.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33674384
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Antonariy, значит все что мне нужно - реализовать интерфейсы COM в своих классах и настроить MTS ?
Грубо говоря да. А на VB6 и интерфейсов реализовывать не надо.
1. Создаешь ActiveX dll
2. Подключаешь в референсах COM+ Services Type Library.
3. В свойствах класса ставишь желаемый MTSTransactionMode.
4. При вызове метода выполняешь инструкцию GetObjectContext.SetAbort, она запускает транзакцию на SQL сервере.
5. При отсутствии ошибок выполняешь инструкцию GetObjectContext.SetComplete

Полученную dll кидаешь в менеджер COM+, настраиваешь права, выковыриваешь прокси, который ставишь клиентам. Этот прокси можно подключить в референсах клиентского проекта.

Вот минимальный джентельменский набор требований к COM+ dll. Есть еще роли, события, MSMQ, но все это описано в толстых книгах.

Но я не уверен в возможности создания коллекций на стороне сервера. При вызове метода COM+, экземпляр класса, к которому он относится, каждый раз на сервере создается заново.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33674438
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Worobjoff настроить MTSХе )), не MTS, а DCOM. С мтсом ничего вообще делать не нужно - GetObjectContext.SetAbort включает транзакцию, GetObjectContext.SetComplete ее подтверждает. Все. Главный геморой - именно права DCOM. Под W2k можно просто закинуть библиотеку и назначить юзера, под которым она будет работать, а под XP обязательно добавить хотя бы одну роль. Кроме того, DCOM для вызова удаленных методов использует технологию Remote Procedure Call (RPC Call), а многие файрволлы пакеты RPC блокируют по умолчанию. Это тоже нужно иметь ввиду.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33675194
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey KudinovТолько работать с распред. данными именно так не всегда оправдано.Имеются в виду т.н. "говорливые интерфейсы"?
AntonariyНо я не уверен в возможности создания коллекций на стороне сервера. При вызове метода COM+, экземпляр класса, к которому он относится, каждый раз на сервере создается заново.Поясните.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33675196
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, и еще: не очень понятно зачем нужна распределенная транзакция. У меня запускает транзакцию и вообще сохранение всех данных выполняет объект UnitOfWork.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33675395
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Worobjoff Поясните.
На клиенте:
Код: plaintext
1.
2.
 1  Set ComPlusObj = CreateObject("ComPlusLib.ComPlusClass", "server") 'можно и так, без прокси
 2  ComPlusObj.SomeProperty = SomeVal
 3  x = ComPlusObj.SomeFunction(SomeParam)
На сервере:
Код: plaintext
1.
2.
3.
4.
5.
6.
 1  'в классе ничего не происходит
 2  Class_Initialize()
  Property Let SomeProperty(rhs)
  Class_Terminate()
 3  Class_Initialize()
  Function SomeFunction(param)
  Class_Terminate()
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33675721
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Worobjoff Alexey KudinovТолько работать с распред. данными именно так не всегда оправдано.Имеются в виду т.н. "говорливые интерфейсы"?
Я не знаю что такое "говорливые интерфейсы" :)
Если вкратце, то существует мнение, что если вы делаете вот так
Код: plaintext
1.
2.
3.
For Each Заказ In РеестрЗаказов.ItemByName("06/171-ЗТ") 
   debug.print Заказ.ИмяОбщее--И здесь каждый раз происходит обращение к серверу приложений
Next
то система "страдает" большим количеством round trip-ов и это плохо. Надо все данные "за раз" вытянуть на клиента и уже там работать с ними. Как я уже говорил, это все это спорно, и в отрыве от конкретной реализации большого смысла обсуждать не имеет.
Если вам не нужны распределенные транзакции, имеет смысл использовать только DCOM.
Только перед проектированием системы прочитайте про STA threading model (MTA VB не поддерживает), а если решите, что вам нужен еще и MTS, то и про принципы создания и работы с объектами под MTS (например http://www.sabbasoft.com/mts_faq_mts.htm) там и про коллекции написано и про создание/уничтожение экземпляров класов под MTS.
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #33675904
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey KudinovТолько перед проектированием системы прочитайте про STA threading model Как раз в своем предыдущем посте я на пальцах показал как работает эта модель. Теперь и название знаю :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Джентльмены, кто работал с COM+ на VB
    #35774447
Bruins888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые, подскажите что не так в моем коде почему мой объект com+ не регистрируется
пишет ошибка. Заранее буду благодарен. Файл пар-ключ создал утилитой sn.exe
Библиотека Framework 2.0
Invalid ServicedComponent-derived classes were found in the assembly
<Classes must be puplic, concrete? have a public default constructor ............ и т.д.

Мой код
using System;
using System.EnterpriseServices;
using System.Data.SqlClient;
using System.Reflection;

[assembly: ApplicationName("ServicedComponentInserted")]
[assembly: AssemblyKeyFile("SqlServer2000\\ServicedComponentInserted"
+ "\\bin\\Release\\ServicedComponentInserted.snk")]
[assembly: Description("Serviced Component Unload")]
namespace ServicedComponentInserted
{

[Transaction(TransactionOption.Required)]
public class InsertedComponentServiced : ServicedComponent
{
public InsertedComponentServiced()
:base()
{
}
public string InsertedTransaction(bool error)
{
string statusMsg = "Transaction Not Attempted Yet";
SqlConnectionStringBuilder strConnection =
new SqlConnectionStringBuilder();
strConnection.DataSource = @"BROKER";
strConnection.InitialCatalog = "Resources";
strConnection.IntegratedSecurity = true;

SqlConnection conn = new SqlConnection(strConnection.ConnectionString);
string strSQL = "INSERT INTO dbo.Departs(Description) " +
"VALUES('Managmnet " + DateTime.Now + "')";
SqlCommand cmd = new SqlCommand(strSQL, conn);
try
{
conn.Open();
cmd.ExecuteNonQuery();
if (error)
{
strSQL = "INSERT INTO dbo.Departs(Description) " +
"VALUES('BadValue')";
cmd.CommandText = strSQL;
cmd.ExecuteNonQuery();
}
ContextUtil.SetComplete();
statusMsg = "Transaction Success";
}
catch (Exception)
{
ContextUtil.SetAbort();
statusMsg = "Transaction Failure";
}
finally
{
conn.Close();
}
return statusMsg;
}
}
...
Рейтинг: 0 / 0
Джентльмены, кто работал с COM+ на VB
    #35776826
Bruins888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все разобрался
...
Рейтинг: 0 / 0
45 сообщений из 45, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Джентльмены, кто работал с COM+ на VB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]