C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Разработка проекта несколькими программерами, параллельно...
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.
научите, а? smile.gif
Георгий
Отправлено: 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

Несколько статей по теме в прикрепленном файле.

User Attached Image Скачать файл
com.rar


Deem
Отправлено: 23.04.2004, 16:29


Мастер участка

Группа: Участник
Сообщений: 327



DLL — хорошо. А как насчет взаимодействия классов из них между собой? Да и с отладкой этих DLL одни проблемы. Сколько лепил их, они все потом плавно переходили в обычные модули . smile.gif
Про автономность-взаимодействие методов от разных производителей: я о такой ситуации, когда при написании своего куска мне уже надо производить вызов методов объекта, который еще не создан, или создается другим программером. Т.е., видимо, заголовки (.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



Ну нифига себе! Год прошел после нашего разговора. smile.gif
Я тож остановился на системе dll. Причем, главная часть при запуске шарит вокруг себя и наход dll, грузит, опрашивает интерфейсную функцию, вытягивает пункты меню и добавляет к всоему главному. Прога создает впечатление целостной. А наращивать такую систему вобще можно бесконечно.
Главное, я сначала испугался за классы и их "экспорт" и передал в ДЛЛ хендл главного окна. Проблем я не встретил ни с экспортом дочерних окон, ни с отладкой. BCB позволяет запустить приложение, которое динамически подгружает разрабатываемую dll, и при вызове функций их трассировка идет как в обычном ехе.

Вернуться в Аспекты и идеология профессиональной разработки ПО