|
Модульность ИС
|
|||
---|---|---|---|
#18+
Создал в ветке Delphi тему о плагинах. С другой стороны мне эта тема интересна не толька в рамках одного языка, а в целом. Собственно вопрос такой - какие факторы и как они влияют на выбор разработчиком или архитектором той или иной технологии построения системы, а конкретно обеспечения ее наращиваемости. Приведу оригинальный пост авторТак как давно занимаюсь разработкой масштабирумых систем, вопрос по наращиванию и управлению функционалом приложений интересовал и интересует по сей день. В обзорах статей и собственной практике встретил несколько вариантов обеспечения расширяемости/настраивоемости. Исходные данные беру такие - есть некая ИС, в которой должен быть движок, управляющий поведением приложения. Требуется построить систему плагинов таким образом, чтобы функционал можно было расширять средствами самой ИС и(или) с помощью Delphi. Кросплатформенность и многоязыковость в большинстве случаев не нужна, но вот хотелось бы, я думаю меня поймут, чтобы поддерживались различные версии Delphi. Т.е. основное приложение пусть написано на D5, но вот плагины могли бы быть и на D6, D7 и т.д. 1) Скриптовый язык. По своей сути предоставляет командный интерфейс для манипулирования объектами приложения. Если к скриптовому движку приладить еще и дизайнер форм, то можно рисовать формы документов(делаем поправку на то что я занимаюсь ИС, в основном формы - это документы) не отходя от кассы. Из плюсов можно отметить то, что скрипты раз написанные будут работать оч.долго и не требуют привязки к версии программы. Здесь я имею ввиду то, что в большинстве случаев функционал программы будет пополнятся новыми функциями и написание этих функций не вызовет потребности пересмотра скрипта. Минусы очевидны - создать полноценную среду для разработки приложений сложно, для этого нужно сного опыта и сил, тем более когда есть полноценные IDE, которые давно написаны и протестированы. 2) Гибкие настройки программы. Да, да, да! Бывают фанаты именно этого подхода. На каждую операцию и форму может быть созданы десятки и сотни настроек. Плюсы и минусы, думаю, очевидны. Впрочем область применения тоже. 3) DLL - старые добрые библиотеки. Экспортируют набор функций. Подходят в тех случаях когда основное приложение дополняется сторонними функциями. Чаще всего работа на принцепе Вопрос-Ответ. Плюсы: дешево и сердито, все просто и прозрачно. Минусы: работа с объектами основного приложения уже не так тривиальна, а иногда превращается в головную боль. 4) BPL - пакеты. Специфичные библиотеки для Delphi-програм. Работают замечательно, вдобавок можно интегрировать со средой. Плюсы - расширяемы, наращиваемы. Минусы: любые изменения базовых классов и интерфейсов влекут за собой цепочку перекомпиляций зависимых модулей. Во-вторых написанные на одной версии Дельфи пакеты могут и не "поехать" с другой версией. Т.е. если пишем на D5, уж извините, тогда все все делаем на нем. 5) COM - plugins. По типу того как это реализовано в МС Офисе. Плюсы: Наращиваемо, при использовании диспинтерфейсов не возникает проблем со сменой версии интерфейса. Очень легко наладить связь между плагином и движком приложения. Минусы: работа с объектами требует определенных навыков и знаний, тем более, что многие разработчики считают, что в Дельфи не лучшим образом реализована поддержка COM. Второй минус - невозможность поддерживать разные версии библиотек, потому как они "железно" регистрируются в реестре. Еще важным минусом считаю то, как в COM реализована поддержка событий. 6) Интерфейсные BPL, DLL. Некий гибрид COM и DLL. Работа плагинов реализована не на доступе к компонентам, а доступе к объектам через интерфейс. Плюсы: нет привязки к версии Дельфи - плагин может быть скомпилирован на любом Дельфи, расширяемость тоже на высоте. Минусы - по принципу это теже DLL, COM-ограничен использованием регламентированных интерфейсов, про диспинтерфейсы можно забыть. Хотелось бы услышать, кто какие технологии применяет для своих задач, или может быть их комбинации. Какие доводы в пользу каждой из технологий можете привести? Какую считаете более перспективной? --- aka VIR. No pity. No mercy. No remorse. No Regret ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2006, 05:56 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
Infernal V. Ravenкакие факторы и как они влияют на обеспечения наращиваемости. Способы наращиваемости в порядке применения: 1. Настройка штатными средствами, разработка отчетов штатными средствами 2. Написание обработчиков на встроенном языке по регламентам системы 3. Написание новых функциональных модулей средствами системы 4. Написание новых модулей сторонними средствами ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2006, 12:50 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
Лично я решил вопрос маштабируемости достаточно станадартно. Написано приложение, которое общается с сервером в специальном XML-протоколе. Вся логика на сервере, весь интерфейс генерится на сервере и передается в виде XML клиенту, который его интерпретирует. Новые задачи - без изменения клиента - создаются мгновенно. Клиент написан на powerbuilder, сервер Oracle. Что-то типа XAML, XUL... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2006, 18:42 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
мод Infernal V. Ravenкакие факторы и как они влияют на обеспечения наращиваемости. Способы наращиваемости в порядке применения: 1. Настройка штатными средствами, разработка отчетов штатными средствами 2. Написание обработчиков на встроенном языке по регламентам системы 3. Написание новых функциональных модулей средствами системы 4. Написание новых модулей сторонними средствами 1) Встроенный генератор отчетов? Тот же Crystal 2) Нужен ли встроенный язык, ведь его разработка весьма затруднена и дорогостоящая по мат. и временным затратам. 3) Это следует из 2)? Если нет то каким образом? 4) Логично ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2006, 11:51 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
alex108Лично я решил вопрос маштабируемости достаточно станадартно. Написано приложение, которое общается с сервером в специальном XML-протоколе. Вся логика на сервере, весь интерфейс генерится на сервере и передается в виде XML клиенту, который его интерпретирует. Новые задачи - без изменения клиента - создаются мгновенно. Клиент написан на powerbuilder, сервер Oracle. Что-то типа XAML, XUL...Тут просматриваются сложности с реализацией такого протокола, а во вторых наращиваемости нестандартного функционала. Кстати как дела со скоростью? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2006, 11:52 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
Infernal V. Raven1) Встроенный генератор отчетов? Тот же Crystal Если он штатный для системы, то да. Infernal V. Raven2) Нужен ли встроенный язык, ведь его разработка весьма затруднена и дорогостоящая по мат. и временным затратам. Нужен, но в качестве такого языка лучше всего использовать какой-нибудь стандартный язык по правилам системы. Написание новых модулей несколько шире чем просто вставки на языке - нужны еще правила оформления, подключения модулей, новые таблицы в БД, взаимодействие с другими модулями и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2006, 12:32 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
Советую поискать по фразе "Hosting CLR" - не для дельфы, но вариант хороший. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2006, 15:55 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
Это очень серйозная проблема. Во первых нужно всё максимально делать на серваке. На каждую фигню заводите хранимую SQL процедуру. Тобто в самой программе меньше кода для работы с базой. Это так делается в фирме гда я сейчас работаю. Очень удобно для проверок. Но тысяча хранимых процедур понятность базы аж не улучшают. И потом ищеш вспоминаеш что куда ты всунул и откуда не высунул. Тогда при изминении вы сразу можете увидеть что где начало глючить. Делать свой внутрений язык - глупо. И все программы нужно делать модульными. Причём не просто модульными, а полностью! ЧТобы в exe'шнике ничего не было, кроме движка для плагинов. А сама функциональность приложения определяется модулями и их настройками. Такой принцип применяется в Миранде. Обязательно изучите её структуру. Может она не совершенна, но многое ими уже разработано. Но есть разработка фирмы IBM Eclipse. IBM в неё вгрохала 40 лимонов $ и открыла исходники. Так вот - это самый крутой движок для разработки модулей. Круче миранды. Так что почитайте про неё. Я и сам скоро займусь её изучением ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2006, 02:23 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
Возник у меня такой вопрос по данной теме к людям, у которых реализована система с главным приложением в виде основы для подключения плагинов, и самими плагинами, реализующие различные действия с БД. Как реализован доступ к БД у плагинов, т.е. в каждом плагине реализованы свои подключения к БД (для примера, TADOConnection), компоненты для доступа и т.п., либо каким то образом используются компоненты основного приложения? программист со знанием фотошопа ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2006, 09:41 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
AIMВозник у меня такой вопрос по данной теме к людям, у которых реализована система с главным приложением в виде основы для подключения плагинов, и самими плагинами, реализующие различные действия с БД. Как реализован доступ к БД у плагинов, т.е. в каждом плагине реализованы свои подключения к БД (для примера, TADOConnection), компоненты для доступа и т.п., либо каким то образом используются компоненты основного приложения? программист со знанием фотошопа 2 ответа: - По слухам MS рекомендует делать коннект к серверу на короткое время (компонент TADOConnection лежит на форме и коннект открывается на открытие конкретной формы). - Но МОДУЛЬНОСТЬ требует все доступы к БД делать через отдельный модуль. Например у нас это COM-объект с TADOConnection и ADOCommand и ADODataSet в одном флаконе. Если много потоков, то там-же пул коннектов. Что выбрать каждый решает сам, чтобы не делать винегред из технологий :). "Сложнее всего в мире достигнуть простоты - это крайняя граница опыта и последнее усилие гения". George Sand. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2006, 10:19 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
stokito ЧТобы в exe'шнике ничего не было, кроме движка для плагинов. А сама функциональность приложения определяется модулями и их настройками. ага! В exe нет ничего, а зачем он тогда нужен? EXE + плагин_главное_меню + плагин_контекстное_меню+ плагин_горячие_клавиши+ плагин______ ? ЗЫ. Модульность могут себе позволить "большие" коллективы разработчиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2006, 10:23 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
Petro123ЗЫ. Модульность могут себе позволить "большие" коллективы разработчиков. Мне кажется, Вы черезчур абсолютизируете собственный опыт, когда, судя по взгляду со стороны, вы заложили просто слишком громоздкую, слишком тяжелую для конкретного случая технологию. Я сейчас позволил себе некоторые элементы модульности в проекте на три человека, и результат уже серьезно радует. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2006, 13:16 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
softwarer Petro123ЗЫ. Модульность могут себе позволить "большие" коллективы разработчиков. Мне кажется, Вы черезчур абсолютизируете собственный опыт, когда, судя по взгляду со стороны, вы заложили просто слишком громоздкую, слишком тяжелую для конкретного случая технологию. Я сейчас позволил себе некоторые элементы модульности в проекте на три человека, и результат уже серьезно радует. истина, она посередине опыта твоего и моего IMHA :) Даже клиен-серверная технология не везде нужна, не говоря уже о плагинной .... авторМне кажется, Вы черезчур абсолютизируете собственный опыт, ====== - в том что плагины это не ПУСТОЙ exe + плагины? - в том что плагины это не самоцель и не любому приложению они нужны? - в том что нужность плагинов надо обосновывать из бизнес-требований заказчика а не ВИДЕНИЕМ или ЛЮБОВЬЮ архитектора к плагинам? когда, судя по взгляду со стороны, вы заложили просто слишком громоздкую, слишком тяжелую для конкретного случая технологию. ====== да, см.выше. Я сейчас позволил себе некоторые элементы модульности в проекте на три человека, и результат уже серьезно радует. ===== значит см.выше у тебя по другому. И потом, ведь у тебя плагины не на COM? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2006, 14:13 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
Пожалуй наиболее распространённый подход - клиент-сервер. Разрабатываем множество компонентов - форм. Формы взаимодействуют с СУБД, которая является скелетом системы. В масштабе целой системы такой подход позволяет наращивать её функции любыми средствами практически безгранично. В масштабе одного приложения хорошо работают старые добрые DLL. Практика покажет, какие функции следует вынести в DLL, какие оставить в EXE. Очевидно, с точки зрения конфигурационного управления нет смысла делать DLL которую нечем заменить и возможность такой замены не предвидится. Иногда проще создать, протестировать и сопровождать нестолько версий EXE, чем кучу компонентов, которые могут соединяться в огромном количестве самых непредсказуемых конфигураций. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2006, 14:16 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
Petro123Даже клиен-серверная технология не везде нужна, не говоря уже о плагинной .... Безусловно. С этим я и не собираюсь спорить; я исключительно о попытке ограничить технологию "большими командами" (далее подразумевается, что у этих команд есть лишнее время и лишние деньги, а вот нам, сирым, приходится заниматься делом). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2006, 11:54 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
>Infernal V. Raven По поводу модульности свои мысли изложил здесь: http://www.gotdotnet.ru/LearnDotNet/NETFramework/223738.aspx - постановка заачи, статья http://www.gotdotnet.ru/Downloads/Examples/401713.aspx - реализация центра управления сообщениями(ЦУС), включая и реализацию сервера коммуникаций. Все написано на C#. Проекты и исходники. http://www.gotdotnet.ru/Downloads/Examples/408575.aspx - реализация сервера приложений в среде прототипа. В основе лежит ЦУС, сервера коммуникаций и пул серверов приложений. С уважением, Владимир. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2006, 20:14 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
О господи, опять эта затычка. Вы хоть с согласованностью данных-то разобрались? Или до сих пор предлагаете считать важные отчеты только по ночам, когда все спят и данные никто не меняет? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2006, 22:23 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
>softwarer >О господи, опять эта затычка. Уважаемый, терпимее пожалуйста к чужим идеям и мыслям (они могут быть и ошибочны, но на то и дискуссия) , или, если не можете, то по крайней мере помолчите, глядишь и ... С уважением, Владимир. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2006, 23:21 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
ВМоисеевУважаемый, терпимее пожалуйста к чужим идеям и мыслям (они могут быть и ошибочны, но на то и дискуссия) , Видите ли, любезный, с изрядной натяжкой, но я готов считать неграмотность "идеями и мыслями". К чему я не собираюсь быть терпимым, так это к тому, что одна и та же неграмотность, на которую уже не раз указывали, вылезает вновь и вновь в неизменном виде. Будучи "словесно опровергнутым, но неубежденным" Вы просто выдерживаете карантинный период молчания, после чего вновь вылезаете. По-моему, я уже говорил Вам, что Вы второй после ЧАЛа [не будем поминать его всуе, еще накличем], кто придерживается подобной методики. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2006, 23:45 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
Можно вставить и свое ИМХО? Модульность это путь, посредством которого достигается масштабируемость. Масштабируемость и гибкость - это одно и то же или нет? Наверное не одно и то же. Но гибкость также может быть достигнута модульностью. Какие DLL, свой язык или существующий - это детали. Должна быть основа на которой будет построена модульность. Эта основа - это формализация предметной области. Надо ее сначала так представить, что бы это представление годилось для решения всех задач в намеченной области. Тогда ваш модуль будет содержать один экзэшник, одну базу данных для всех решаемых задач (подчеркиваю, в заданной области). Масштабирование - это возможность наращивания или урезания системы в зависимости от потребности без каких либо существенных переделок. Да, это достигается модальностью. Только надо решить еще вопрос межмодульных связей. Таких связей, что бы включение нового модуля в систему не приводило к необходимости переработки уже существующих. О исключение - вообще не требовало никаких переделок. Фантазия? Нет. Так построена конктретная система БАС , которая исопользуется для различных задач. Действительно одна и та же база данных, один и тот же экзешник, но используются для, казалось бы, совершенно разных задач: бухучет, склады, зарплата, экономическая подготовка производства, производственный учет, биллинговые системы для работы с населением и юридическими лицами, банковские платежи и т.п. Здесь методика, которая лежит в ее основе . Потом уже языки, базы данных и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2006, 19:57 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
PVP Фантазия? Нет. Так построена конктретная система БАС , по той ссылке нет ничего, что бы раскрыло мрхитектуру модульности в БАС. Просто статья про ООП в построении архитектуры. Только почему то это обозвали новыми терминами - Элементарный объект, Элементарная операция . IMHO Все объектно-ориентированные методы, например, ООАП / OOAD (Object oriented Analysis & Design) построения приложений имеют понятия "элементарный объект". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2006, 10:45 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
PVPМодульность это путь, посредством которого достигается масштабируемость. При столь мощной фразе не лишним выглядело бы определение масштабируемости, которое Вы подразумеваете. PVPМасштабирование - это возможность наращивания или урезания системы в зависимости от потребности без каких либо существенных переделок. Это оно? PVP Фантазия? Нет. Так построена конктретная система Пошла реклама. Нет, это не фантазия, о чем толковые авторы говорили еще за двадцать лет до появления конкретной системы. Что дальше? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2006, 11:42 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
Petro123 PVP Фантазия? Нет. Так построена конктретная система БАС , по той ссылке нет ничего, что бы раскрыло мрхитектуру модульности в БАС. Просто статья про ООП в построении архитектуры. Только почему то это обозвали новыми терминами - Элементарный объект, Элементарная операция . IMHO Все объектно-ориентированные методы, например, ООАП / OOAD (Object oriented Analysis & Design) построения приложений имеют понятия "элементарный объект". Нет, здесь нет речи о методах программирования. К стати, ООП я вообще не владею, только слышал :). Речь идет о том, что надо задачу формализовать и потом уже на основе полученной формализации делать систему. Утрированный пример: формулу программировать проще, чем писать правила с помощью "если-то-иначе". На счет модульной структуры БАС - посмотрите руководство программиста. В нем она подробно описана. Общая идея простая - каждый модуль - своя база. Создать новый модуль, значит скопировать наиболее похожую базу, удалить лишние настройки и добавить новые. Межмодульные связи реализуеются процедурами, обслуживающими те операции, где эти связи возникают. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2006, 17:22 |
|
Модульность ИС
|
|||
---|---|---|---|
#18+
softwarer PVPМасштабирование - это возможность наращивания или урезания системы в зависимости от потребности без каких либо существенных переделок. Это оно?Да, с учетом приставки IMХО softwarer PVP Фантазия? Нет. Так построена конктретная система Пошла реклама.Да, есть немножко, уж простите. Но если посмотреть в контексте темы топика, то при желании, можно и не относить к рекламе. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2006, 17:25 |
|
|
start [/forum/topic.php?fid=33&msg=34218894&tid=1549200]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
163ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 258ms |
total: | 527ms |
0 / 0 |