|
|
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Может кто просветит, почему столь мощная технология COM+ столь редко используется в VB и ASP - проектах? В чем ее слабость - в сложностях настройки компонентов или в ограничениях бейсика (поддержке событий, например). Взял несколько раритетных книг по данной тематике - пытаюсь разобраться и применить. Может зря трачу время и силы? Буду рад любой информации от уважаемых Гуру ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2006, 17:54 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Дан Эпплман, известный как Гуру, еще 5 лет назад заявил, что и COM, и COM+, и др. подобные технологии не только устарели, не успев толком прижиться, но и гавно полное. Если интересно подробнее, сделай запрос в поисковике по "Appleman" и "COM"... я лично в подробности не вдавался... :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2006, 18:08 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Абросов ЮрийМожет кто просветит, почему столь мощная технология COM+ столь редко используется в VB и ASP - проектах? Собственно, а с чего вы взяли что "редко используется" ? Там где надо, там и используется :) Может просто не так часто находил лись задачи, где это было надо ? Абросов Юрий Взял несколько раритетных книг по данной тематике - пытаюсь разобраться и применить. Может зря трачу время и силы? Вы же сами написали "раритетных". Вот вам и ответ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2006, 18:23 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
COM+ имеет смысл использовать при большой нагрузке на сервер. В asp смысла использовать нет - IIS и так под COM+ крутится. А насчет сложности настройки - в саму точку. Поддержку событий тоже можно сделать, но ее еще сложнее настроить. Мне, например, так и не удалось даже на одном и том же компе. Кроме того многие файерволлы блокируют Remote Procedure Call, необходимый для com+. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2006, 11:09 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Letter_D: Вот именно, что не вдавался в подробности. Я читал его (Эпплмана) "Guide" - там ничего нет по использованию COM+. Так что где он выражал свое отношение к данной технологии и какие аргументы приводил? И особенно удивляет, по Вашему высказыванию, его отрицательное отношение к COM, на котором весь VB и построен. Будьте добры приводить первоисточник после столь громких заявлений. Один1 : Не согласен с Вами - таких задач немеряно. Технология же COM+ предполагается для использования в распределенных приложениях и Интернет посредством ASP. Возможно эта технология вытесняется JAVA, котроый изначально ориентирован на создание таких приложений. И кроме того набирает обороты нетовские WEB-сервисы. И насчет раритетов. Раритетами становятся не только неиспользуемые издания, но и не модные, т.е. не бестселлеры. И вообще, джентльмены, почему такая низкая активность - неужели топик неинтересный ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2006, 11:23 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Antonariy: Вот это уже похоже на серьезные аргументы. А насчет ASP я не понял - почему не нужно использовать COM+? Компоненты же вызываются как объекты ASP. Может имеется ввиду не обязательностьиспользования именно ASP для интернет-приложений, скажем PHP или Perl? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2006, 12:13 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
В книге "Переход на VB.NET" Дан Эплман долго и старательно объясняет что .NET - это не есть очередное новое название для давно устаревшей вещи (как любит это делать микрософт). При этом "нечаянно" забрасывает камнями всю СОМ. Все знают как трудно освоить СОМ в дельфи или С++. И, мне кажется, лишь эта сложность заставляет произносить фразы о "мощности СОМ". Наверно словосочетание "столь мощная технология СОМ" все же не более чем клише. В VB6 очень просто создавать СОМ-компоненты. Есть соблазн этим воспользоваться. Но есть пара оговорок, пара риторических вопросов: "а как с сопровождением проекта другими программистами?" и "а каково соотношение (усилия_на_освоение/эффективность) COM в сравнении с дотнет?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2006, 12:18 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Абросов Юрий Один1 : Не согласен с Вами - таких задач немеряно. Технология же COM+ предполагается для использования в распределенных приложениях и Интернет посредством ASP. Возможно эта технология вытесняется JAVA, котроый изначально ориентирован на создание таких приложений. И кроме того набирает обороты нетовские WEB-сервисы. Я не готов дать сколь либо приемлемую оценку слову "немеряно", п.є. спорить не буду. Немеряно, значит немеряно. Вы правы, говоря, что COM+ создавался для применения в распределенных приложениях (фактич. являлся развитием DCOM + MTS). Сейчас MS предлагает совсем другие решения для этих задач: Remoting (к-й тоже уже уступает Indigo свое место) и те же Web сервисы. Т.о. даже если не говорить о степени распространенности приложений использующих COM+, в градации MS эта технология - (поза)вчерашний день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2006, 12:18 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Абросов Юрий А насчет ASP я не понял - почему не нужно использовать COM+? Компоненты же вызываются как объекты ASP. Может имеется ввиду не обязательностьиспользования именно ASP для интернет-приложений, скажем PHP или Perl?Имеется ввиду, что Internet Information Server, обрабатывающий asp-скрипты, сам работает под COM+, соответственно vb-компоненты, которые он может использовать, автоматически попадают в контекст COM+, и дополнительно для этого ничего не нужно делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2006, 12:56 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Абросов Юрий Технология же COM+ предполагается для использования в распределенных приложениях и Интернет посредством ASP.Неверно. Технология DCOM предназначена для вызова методов com-классов, установленных на другом компьютере, а MTS занимается обработкой пула соединений с базой данных и упорядочиванием транзакций. А COM+ - это два в одном. Например, подключаются к SQL серверу 200 клиентов. Без COM+ сервер должен поддерживать 200 соединений да еще выстраивать их транзакции, а каждое соединение отжирает приличную долю ресурсов. При наличии серверной библиотеки, заточенной под COM+, вся эта деятельность переклатывается на нее. COM+ сам решает сколько соединений открыть и как выстроить транзакции, чтобы оптимально использовать ресурсы компьютера. К интернету и распределенным приложениям COM+ отношения не имеет, он работает только в локальной сети. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2006, 13:21 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Antonariy: К интернету и распределенным приложениям COM+ отношения не имеет, он работает только в локальной сети. Ага, так вот где собака порылась. Стало быть, это и есть "узкое" место данной технологии ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2006, 13:36 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Worobjoff: А вот где, интересно, этот самый "Переход на VB.NET" Дана Эплмана можно найти? Не подскажете ли, может есть сылка где на форуме ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2006, 13:41 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
авторСтало быть, это и есть "узкое" место данной технологии ;)Дело не в узости, а в области применения. COM+ разрабатывался как средство уменьшения нагрузки на сервер при работе клиентских приложений в локальной сети, интенсивно его нагружающих. web-клиенты по определению не предназначены для такой работы, они подключаются по протоколу http через web-сервер, который опять-таки работает под com+. Ты лучше в консерватории разберись - нафига тебе вообще сдался com+. Мощь современных серверов позволяет поддерживать пару сотен клиентов без всяких плюсов, а судя по вопросам ты еще не дорос до приложений, рассчитанных на несколько тысяч подключений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2006, 14:03 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Абросов Юрий Уже ответили. Я там же прочитал. Причем не сказал, что согласен, не надо фыркать в мою сторону. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2006, 21:18 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Antonariy Абросов Юрий Технология же COM+ предполагается для использования в распределенных приложениях и Интернет посредством ASP.Неверно. Технология DCOM предназначена для вызова методов com-классов, установленных на другом компьютере, а MTS занимается обработкой пула соединений с базой данных и упорядочиванием транзакций. А COM+ - это два в одном. Например, подключаются к SQL серверу 200 клиентов. Без COM+ сервер должен поддерживать 200 соединений да еще выстраивать их транзакции, а каждое соединение отжирает приличную долю ресурсов. При наличии серверной библиотеки, заточенной под COM+, вся эта деятельность переклатывается на нее. COM+ сам решает сколько соединений открыть и как выстроить транзакции, чтобы оптимально использовать ресурсы компьютера. К интернету и распределенным приложениям COM+ отношения не имеетон работает только в локальной сети. , Строго говоря, распределенные приложения могут быть и в пределах лок. сети. С остальным согласен. 2 Абросов Юрий - если уж взялись "ворошить былое", советую начать с DCOM и MTS. Тогда стенет понятно откуда пошел COM+ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2006, 12:29 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Alexey Kudinov В том-то и дело, что я к COM+ пришел через DCOM и MTS. Предысторию я смотрел. Повторюсь, меня интересует почему эта технология не прижилась. Как кто-то здесь сказал, очень велик соблазн построения распределенных приложений (пусть и в локальной сети или Интранет) с помощью компонентов, настраиваемых на поддержку транзакций, активацию по требованию и пр. Однако отказ от этих возможностей в большинстве приложений оказался для меня столь неожиданным что послужил созданию данного топика. Letter_D Надеюсь, в ближайшее время ознакомлюсь с доводами Эпплмана против COM+, тогда извинюсь за "фырканье в Вашу сторону" ;) Все-таки переход на VB.NET столь трудоемок, что хочется выжать максимум из возможностей VB и COM, в особенности для распределенных приложений и Интранет. Всем Собственно идея использования COM+ и возникла в связи с разработкой корпоративного сайта и необходимостью снижения нагрузки на сервер. Вот и рою, и вас беспокою, уважаемые Гуру ;) Спасибо за участие в обсуждении. Надеюсь оно будет интересным и другим участникам форума :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2006, 13:39 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Как идет ваше освоение COM+, Юрий? У меня свой вопрос: где найти инсталляцию MTS? В моей работе очень бы пригодилась распределенная архитектура. Но по другой причине: Бизнес-логика сложная. Реализовать бизнес-логику в моделях предметной области и вынести ее из клиента выглядит очень заманчиво. Плюрализм мнений (изрядно надоевший) относительно построения клиентских приложений размывает логику и сильно затрудняет повторное использование кода в работе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 09:42 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
MTS ставится вместе с SQL Server'ом, в SQL Service Manager'е виден под названием "Координатор распределенных транзакций" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 09:55 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
WorobjoffВ моей работе очень бы пригодилась распределенная архитектура. Если (вдруг :) ) встанет вопрос о переходе на .Net и использовании распределенной архитектуры в .Net, советую прочитать этот тред про Enterprise Services (это фактич. обертка над COM+ для .Net) и потом этот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 12:14 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Абросов ЮрийКак кто-то здесь сказал, очень велик соблазн построения распределенных приложений (пусть и в локальной сети или Интранет) с помощью компонентов, настраиваемых на поддержку транзакций, активацию по требованию и пр. Однако отказ от этих возможностей в большинстве приложений оказался для меня столь неожиданным что послужил созданию данного топика. Соблазн то велик, но ... Здесь можно легко "съехать" в оффтоп, который активно обсуждается в Проектировании БД или Построении инф. систем. Если вкратце, то IMO уже выросло поколение программистов "наигравшихся" в подобного рода архитектурные изыски и знающих к чему они ведут. С другой стороны, как правильно заметил Antonariy Antonariy Мощь современных серверов позволяет поддерживать пару сотен клиентов без всяких плюсов, а в интранете редко бывает больше. Т.е., грубо говоря, обычный клиент-сервер оказывается вполне подходящим для решения большинства задач. Итого: 1 COM+ хорош сам по себе, но для большинства задач просто не нужен 2 А те задачи, где он нужен, сейчас решают другими средствами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 12:28 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
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 умрет вместе с традиционным васиком, а васик, как я понимаю, умирать не собирается ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 12:36 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Alexey Kudinov WorobjoffВ моей работе очень бы пригодилась распределенная архитектура. Если (вдруг :) ) встанет вопрос о переходе на .Net и использовании распределенной архитектуры в .Net, советую прочитать этот тред про Enterprise Services (это фактич. обертка над COM+ для .Net) и потом этотА есть ли возможность написать COM+ сервер на дотнет? Клиентское приложение на дотнет врядли позволят писать (разве что работу сменить ;). А вот сервер приложений - может быть да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 18:02 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
WorobjoffА есть ли возможность написать COM+ сервер на дотнет? Клиентское приложение на дотнет врядли позволят писать (разве что работу сменить ;). А вот сервер приложений - может быть да. Теоретически (теоретически !) да, возможность есть. .Net-овские сборки могут быть опубликованы как Com интерфейсы. Только, боюсь, что смысла в этом нет. Для .Net Com - не родная технология. .Net может работать с .Com, но ... не любит :) Наверняка будет много странных проблем. Посмотрите хотя бы на мучения Magnus23 с Enterprise services. IMO: При разработке под .Net есть простое правило: надо писать под .Net все и сразу. "кусочек" переписать не получится, что бы там не говорилось в статьях по миграции и как бы не хотелось начальству и программистам. Соответственно старые проеткты продолжаем вести на VB, новые - на .Net ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 18:37 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 10:38 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
AntonariyПоставив где нужно галочку Expose to COM, можно прозрачненько юзать такой сервер из VB6.Дай бы бог что бы так! Я уже создавал модели предметной области на VB6. Намучился с поддержкой событий и борьбой с циклическими ссылками! Даже если не надо закладывать поддержку интерактивности клиентов, пользующихся библиотекой классов, с событиями все равно иметь дело придется. А еще недостатки VB6-шного ООП... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 11:07 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
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+ Насколько с ними "лучше", можно посмотреть на примере треда, который я уже приводил. Если очень хочется можно верить, что на самом деле все хорошо, просто руки кривые были ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 11:13 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Alexey, а какие средства есть в дотнет для создания (не СОМ) распределенных приложений ? Куда копать? И, если (может быть :) для этого достаточно всего-лишь реализовать каие-то интерфейсы, то каие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 13:14 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
WorobjoffAlexey, а какие средства есть в дотнет для создания (не СОМ) распределенных приложений ? Куда копать? И, если (может быть :) для этого достаточно всего-лишь реализовать каие-то интерфейсы, то каие? Ну вот например http://msdn.microsoft.com/msdnmag/issues/02/10/NETRemoting/ но не факт, что это отражает последние взгляды МS на то как надо строить распределенные приложения. :) вообще искать по словам .Net distributed applications и еще, после того как почитаете про Remoting, искать про Indigo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 13:41 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
WorobjoffДай бы бог что бы так! Я уже создавал модели предметной области на VB6. Намучился с поддержкой событий и борьбой с циклическими ссылками!Гы! Флаг тебе в руки.)) Я не имел ввиду, что написание всех этих наворотов есть пустяковая задача (лично у меня события COM+ так и не заработали), а то, что уж коли оно сделано в .NET , то и в VB6 через прокси элементарно заработает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 14:40 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Alexey KudinovДа, в теории так и должно быть. Просто ... не советую. Система, которую я сейчас пишу, состоит из 7и библиотек, из которых 2 серверные, 4 клиентские и одна общая, описывающая интерфейсы. Одна из серверных отвечает за транспортировку данных, другая за доступ к данным SQL Server'а. Я могу заточить библиотеку доступа под Oracle, под Interbase, да хоть под текстовые файлы, и это никак не коснется остальных 6и звеньев системы. Я могу переписать библиотеку транспорта, чтобы она использовала вместо http непосредственно tcp или еще более непосредственно DCOM - и это никак не отразится на остальных. Могу добавить компрессию и шифрование пакетов и это коснулось бы двух (кошмар!) транспортных библиотек - серверной и клиентской - если бы не было уже реализовано в общей - опять таки одной. Я с вниманием прислушиваюсь ко всем советам)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 15:07 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
AntonariyСистема, которую я сейчас пишу, состоит из 7и библиотек, из которых 2 серверные, 4 клиентские и одна общая, описывающая интерфейсы. Давайте отделять мух от котлет (С) Вы описали стандартный компонентный подход к проектировнию сколь либо сложных систем и сказали, что изменение одного компонента не приведет к изменению других. Ну это азы проектирования, очевидные даже новичку. Я же говорю о том, что по возможности не стОит смешивать технологии разных поколений, да еще и в виде downgrade-а более новой технологии. Да, в теории это будет работать. Да, на тестах это тоже будет работать. Однако в дальнейшем при таком подходе возможны, даже более того, весьма вероятны внезапные проблемы с безопасностью, настройкой доступа, производительностью и т.п. Из треда, который я уже приводил. Magnus23В жизни бы не подумал что все так просто. После продолжительных копаний и собирания инфы "с миру по нитке" выработал таки более-менее четкий план действий. Сейчас все это видится простым до неприличия.далее Magnus23Я на эту бодягу уже 2 проэкта перевожу, нужно только оттестировать хорошенько на предмет перформенса, а так выглядит очень даже ничего себе :). На счет транзакций, это одна из фичей, но не в первую очередь. В первую очередь это наличие централизованного сервера компонетов на котором можно держать бизнес-логику и слой доступа к данным отдельными компонентами и иметь возможность актуализации этого дела только на одной машине - сервере, а все пять тясяч клиентов и знать об этом не будут. Cool, не правда ли? далее Magnus23Короче все не так гладко как кажется. На деле оказалось что та самая прокся для клиента из ремотинга выколупывается. И все сообщения тоже через него. Выходит так что Enterprise Services херня какая-то. Говорили ж мне: Overhead, Overhead, Overhead... Плюс еще начали выскакивать какие-то левые проблемы. Оттестеный код который был перенесен из сервиса в компонент вдруг начал вываливатся c StackOverflowException. При чем на строке которая делает вызов API из натиной dll, там никаких лупов и рекурсии в жизни не валялось. Точно так же валятся все API вытзовы. Поэтому я и сказал "не советую" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 16:10 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Лично я стал бы связываться с такой технологией распределенной системы где клиентское приложение может юзать объекты сервера приложений примерно так: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 16:58 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Что ж, вглядимся детально... Magnus23На деле оказалось что та самая прокся для клиента из ремотинга выколупывается. И все сообщения тоже через него. Выходит так что Enterprise Services херня какая-то. Говорили ж мне: Overhead, Overhead, Overhead...Не знаю что такое Overhead, но автор ожидал увидеть именно его, а увидел тот же COM+, только в профиль. То есть технология толком не поменялась и ни о каком даунгрейде речи быть не может. Поменялось только средство доставки вызовов - с DCOM на Remoting. Magnus23Плюс еще начали выскакивать какие-то левые проблемы. Оттестеный код который был перенесен из сервиса в компонент вдруг начал вываливатся c StackOverflowException. При чем на строке которая делает вызов API из натиной dll, там никаких лупов и рекурсии в жизни не валялось. Точно так же валятся все API вытзовы.А это недостатки конкретной реализации. Черным по белому написано - автор копипастнул код из сервиса . А программирование под COM+ предъявляет определенные требования к тому, что и как (особенно апи, да еще в транзакции) должно вызываться по ходу выполнения. Не видя того, что там напрогано, было бы неверно все проблемы валить на то, что технология - отстой. И вообще - проблемы именно в сервере, он даже не успевает отписать результаты работы клиенту - валится. Так что, до момента, на котором могут столкнуться лбами разные технологии дело просто не доходит. Вобщем, я не вижу убедительных причин (личные фобии не в счет) не делать клиент и сервер на разных технологиях. Но только если это оправдано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 17:01 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
WorobjoffЛично я стал бы связываться с такой технологией распределенной системы где клиентское приложение может юзать объекты сервера приложений примерно так:Как клиенту юзать серверные объекты - целиком на совести разработчика, а не технологии. Сначала разрабатывается архитектура, потом выбираются средства и методы ее реализации. Допустим так, как написал ты. Это тоже можно сделать двумя путями. Если классы объектов "Заказ" и "РеестрЗаказов" разместить непосредственно на сервере, то тут без COM+ не обойтись. А если на клиенте? Клиенту совершенно без разницы как происходит вызов ItemByName("06/171-ЗТ").Item. В Property Get может находится запрос к серверу любым способом, и именно там может формироваться объектное представление для переменной "Заказ". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 17:13 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Antonariy, значит все что мне нужно - реализовать интерфейсы COM в своих классах и настроить MTS ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 17:17 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
WorobjoffЛично я стал бы связываться с такой технологией распределенной системы где клиентское приложение может юзать объекты сервера приложений примерно так: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 17:17 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. Создаешь ActiveX dll 2. Подключаешь в референсах COM+ Services Type Library. 3. В свойствах класса ставишь желаемый MTSTransactionMode. 4. При вызове метода выполняешь инструкцию GetObjectContext.SetAbort, она запускает транзакцию на SQL сервере. 5. При отсутствии ошибок выполняешь инструкцию GetObjectContext.SetComplete Полученную dll кидаешь в менеджер COM+, настраиваешь права, выковыриваешь прокси, который ставишь клиентам. Этот прокси можно подключить в референсах клиентского проекта. Вот минимальный джентельменский набор требований к COM+ dll. Есть еще роли, события, MSMQ, но все это описано в толстых книгах. Но я не уверен в возможности создания коллекций на стороне сервера. При вызове метода COM+, экземпляр класса, к которому он относится, каждый раз на сервере создается заново. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 17:50 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Worobjoff настроить MTSХе )), не MTS, а DCOM. С мтсом ничего вообще делать не нужно - GetObjectContext.SetAbort включает транзакцию, GetObjectContext.SetComplete ее подтверждает. Все. Главный геморой - именно права DCOM. Под W2k можно просто закинуть библиотеку и назначить юзера, под которым она будет работать, а под XP обязательно добавить хотя бы одну роль. Кроме того, DCOM для вызова удаленных методов использует технологию Remote Procedure Call (RPC Call), а многие файрволлы пакеты RPC блокируют по умолчанию. Это тоже нужно иметь ввиду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 18:05 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Alexey KudinovТолько работать с распред. данными именно так не всегда оправдано.Имеются в виду т.н. "говорливые интерфейсы"? AntonariyНо я не уверен в возможности создания коллекций на стороне сервера. При вызове метода COM+, экземпляр класса, к которому он относится, каждый раз на сервере создается заново.Поясните. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2006, 08:09 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Да, и еще: не очень понятно зачем нужна распределенная транзакция. У меня запускает транзакцию и вообще сохранение всех данных выполняет объект UnitOfWork. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2006, 08:12 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Worobjoff Поясните. На клиенте: Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2006, 09:46 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Worobjoff Alexey KudinovТолько работать с распред. данными именно так не всегда оправдано.Имеются в виду т.н. "говорливые интерфейсы"? Я не знаю что такое "говорливые интерфейсы" :) Если вкратце, то существует мнение, что если вы делаете вот так Код: plaintext 1. 2. 3. Если вам не нужны распределенные транзакции, имеет смысл использовать только DCOM. Только перед проектированием системы прочитайте про STA threading model (MTA VB не поддерживает), а если решите, что вам нужен еще и MTS, то и про принципы создания и работы с объектами под MTS (например http://www.sabbasoft.com/mts_faq_mts.htm) там и про коллекции написано и про создание/уничтожение экземпляров класов под MTS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2006, 11:13 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Alexey KudinovТолько перед проектированием системы прочитайте про STA threading model Как раз в своем предыдущем посте я на пальцах показал как работает эта модель. Теперь и название знаю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2006, 11:55 |
|
||
|
Джентльмены, кто работал с COM+ на VB
|
|||
|---|---|---|---|
|
#18+
Уважаемые, подскажите что не так в моем коде почему мой объект 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; } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2009, 17:06 |
|
||
|
|

start [/forum/topic.php?all=1&fid=60&tid=2161400]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
60ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
86ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 437ms |

| 0 / 0 |
