Deem |
Отправлено: 19.04.2004, 12:33 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
Народ, двайте обсудим тему параллельной разработки несколькими человеками одного проекта.. Имею ввиду, разработку, компиляцию, дебаг своего омдуля без сборки всего проета. Насколько должны быть автономными модули, розданные людям, чтоб программеры могли делать их не используя других модулей, котороые делаются параллельно. Что лучше использовать: DLL, стендовый проект (маленький для одного модуля), или есть другие варианты?
|
|
Admin |
Отправлено: 19.04.2004, 16:00 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
У нас более удобным на практике оказался вариант c dll
Большая прога состоит из подключаемых dll, выполняющих
различные задачи.
При изменении чего-либо часто требуется написать-подключить
другую dll, без внесения изменений глобально в проект.
Также достаточно удобно иметь подключаемую (статически) lib
с часто используемыми функциями.
|
|
Георгий |
Отправлено: 19.04.2004, 21:16 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
После Владимира мне добавить нечего, кроме "одобрямс"
А особый "одобрямс" lib (статическим) библиотекам, но только не функций, а объектов |
|
olegenty |
Отправлено: 20.04.2004, 09:03 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
полностью согласен.
вот только не умею экспортировать классы из DLL.
научите, а?
|
|
Георгий |
Отправлено: 20.04.2004, 20:37 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
olegenty
где то было...
по форуму поищи — ктото из dll не только классы, но и методы класса смог вытащить |
|
Asher |
Отправлено: 21.04.2004, 08:34 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
Привет.
Поищи по старому форуму тему "Метод класса в DLL" создавал Andrew,
а отвечал Devnvd с BorlandXPortal.
Он потом все это дело довел до конца и собрал в кучу
Метод класса в DLL
|
|
olegenty |
Отправлено: 21.04.2004, 10:20 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
качнул топик, дома буду разбираться. вопросов будет, как грязи, уже чую...
|
|
Admin |
Отправлено: 23.04.2004, 09:46 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Да, а тут еще вспомнил про еще одну технологию — COM
Конечно, это непросто, но освоив эту технологию,
получите как раз то что хотите -
QUOTE |
Насколько должны быть автономными модули, розданные людям, чтоб программеры могли делать их не используя других модулей
|
Почитать можно в книгах, можно и здесь:
http://www.developing.ru/cominside/index.html#intro
много статей есть и на
http://www.rsdn.ru/?summary/266.xml
Несколько статей по теме в прикрепленном файле.
|
|
Deem |
Отправлено: 23.04.2004, 16:29 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
DLL — хорошо. А как насчет взаимодействия классов из них между собой? Да и с отладкой этих DLL одни проблемы. Сколько лепил их, они все потом плавно переходили в обычные модули .
Про автономность-взаимодействие методов от разных производителей: я о такой ситуации, когда при написании своего куска мне уже надо производить вызов методов объекта, который еще не создан, или создается другим программером. Т.е., видимо, заголовки (.h) должны быть написаны сообща (или вобще одним человеком?) до того как все разойдутся писать свои куски. Или не так?
|
|
Admin |
Отправлено: 28.04.2004, 12:17 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
QUOTE |
Т.е., видимо, заголовки (.h) должны быть написаны сообща (или вобще одним человеком?) до того как все разойдутся писать свои куски. Или не так? |
Тогда больше подходит технология COM.
Там .h файлы не нужны — только согласуете интерфейсы.
|
|
olegenty |
Отправлено: 28.04.2004, 13:31 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
присоединяюсь к последнему замечанию. хотя, тут есть один хитрющий момент: COM всю эту интерфейсную инфу хранит в реестре (библиотеки типа). так что можешь рождать свой "псевдо COM", только договорись с другими, как в рантайме определить, что это за объект (аналог IUnknown), и какие методы он поддерживает (IQueryInterface).
забыл автора книги от Microsoft Press глянуть, одного из разработчиков COM. он как раз всё это описывает оптом. доступно, с примерами. постараюсь в этот раз не забыть.
|
|
Deem |
Отправлено: 29.04.2004, 09:33 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
Да не..... Ком — это не серьезно. Дофига кода будет заниматься отлавливанием интерфейсов, выбором нужных функций....
Лучше уж DLL. Или .h файлы заранее сделать с заглушками для pablic. Выкладывть их по мере изменения в определенном месте в сети с obj. И чтоб компиляторы тащили их оттуда сами.
А кто как делает DLL? Сразу проект DLL создаете или сначала как обычный модуль, а потом, после отладки, в DLL?
Отредактировано Deem — 29/04/2004, 10:36
|
|
olegenty |
Отправлено: 24.05.2004, 07:33 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Последднее.
|
|
olegenty |
Отправлено: 24.05.2004, 07:46 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Да, вот ещё что, касаемо "псевдо-COM":
я бы всё же разработал чисто виртуальные классы предков, на которых основывались бы потом ВСЕ интерфейсные классы. и утвердил бы этот набор классов стандартными родтелями для данного проекта. а может и для всех проектов, если это классы интерфейса визуализации, дабы лицо продуктов группы имело место быть неизменным...
|
|
olegenty |
Отправлено: 04.02.2005, 11:35 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
в данный момент окончательно перешёл на DLL
суть такая:
1. Есть основная запускающая часть, включающая
1.1.а Главную MDI форму
1.2.а Инспектор функций, встроенный в главную форму, который черпает информацию о функционале из БД в зависимости от роли тела
или
1.1.б Аналогично BCB окно вверху
1.2.б Инспектор функций
а MDI дети, либо просто фрмы находятся в DLL. в первом случае приходится делать Build with runtime packages + Use dynamic rtl, но какая нафиг разница, сколько модулей таскать.
MDI ребёнок или просто форма порождаются от класса интерфейсной формы, обеспечивающей заплагинивание. вот, собстенно, и всё. мне нравится. а разработчки отдельной функциональной формы достаточно иметь определение и реализацию класса интерфейсной формы (ну и dfm), хотя можно и это упростить. (просто у меня на форме лежит TADOConnection, а если никаких компонентов для Design time не предполагать, то достаточно просто определения и *.obj реализации)
|
|
Deem |
Отправлено: 26.04.2005, 16:41 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
Ну нифига себе! Год прошел после нашего разговора.
Я тож остановился на системе dll. Причем, главная часть при запуске шарит вокруг себя и наход dll, грузит, опрашивает интерфейсную функцию, вытягивает пункты меню и добавляет к всоему главному. Прога создает впечатление целостной. А наращивать такую систему вобще можно бесконечно.
Главное, я сначала испугался за классы и их "экспорт" и передал в ДЛЛ хендл главного окна. Проблем я не встретил ни с экспортом дочерних окон, ни с отладкой. BCB позволяет запустить приложение, которое динамически подгружает разрабатываемую dll, и при вызове функций их трассировка идет как в обычном ехе.
|
|