|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
DrKonito3.5) Расскажите какой вы видите свою систему через 5 лет. Наверное это вообще самый важный вопрос, когда рассуждаешь о зрелости технологии. Остальные вопросы, честно говоря, риторические - ответьте хотя бы на этот :) Да ладно, я на все вопросы отвечу, мне не жалко, хотя приходится в выходные этим заниматься – на работе сейчас времени маловато стало… Если с точки зрения бизнеса все пойдет нормально, то через 5 лет это будет внедряемая своими силами + возможно силами партнеров система + набор типовых решений для построения определенного типа корпоративных приложений. Какого типа – на 5 лет загадывать не буду. Сейчас планируется документооборот, CMS, CRM. Возможно, через 5 лет она будет более специализированной, возможно - наоборот. DrKonitoОк, мне не жалко переформулирую: 1)Интеграция С интеграцией у СП плохо не в том случае, когда СП скрывает от клиента подлинный источник данных - здесь у СП все хорошо. Плохо у них, когда стороннему приложению надо взаимодействовать с вашим СП. Расскажите, как в вашей системе решаются вопросы 1.1) построения отчетов Пока что вручную на ASP.NET. Вообще планируем какое-нибудь готовое средство построения отчетов прикрутить, но какое - пока не определились. DrKonito1.2) распределенных транзакций Эта проблема решится с планируемым переходом на .NET 2.0, где проще реализуются возможности a-la COM+. DrKonito1.3) пакетных заданий Это вы как раз-таки про шедулер? Честно говоря здесь вообще проблемы не вижу. DrKonitoЯ не говорю, что ни один из этих вопросов не решаем. Каждый из них решаем в том или ином виде. Вопрос в том, что ради этого вам придется писать кучу нетривиального кода, ради того, что в СУБД уже есть и этим надо просто пользоваться. На моей прошлой работе ребята полгода собственный шедулер отлаживали (непростая тема оказывается), стандартные не подходили :) Да еще они хотели писать ОлеДб провайдер к своему СП :) А вы зря смеетесь, и у нас в планах стоит задача написания провайдера данных. OLEDB, ODBC, ADO.NET – это непринципиально. В этом случае автоматически отпадает бОльшая часть проблем, связанных с интеграцией данных. DrKonitoЯ понимаю, что это очень полезно и интересно с точки зрения чистого програмизма, но когда мне нужен результат с точки зрения заказчика, сами понимаете. Просто у нас разные задачи и соответственно разные результаты. Вы оцениваете общий подход применительно к своим частным задачам и делаете на основании этого общие выводы, хотя эти выводы применимы только к вашим задачам. DrKonito2)Эксплуатация 2.1) Деплоймент изменений - каждое изменение в СП - это как минимум рестарт СП, возможно обновление всех клиентов. Зависит от фантазии разработчика. При двузвенке - это просто прогрузка измененной процедуры. А если изменений несколько в день. Не пробовали? У вас наверное ежедневные билды и релиз раз в месяц? :) Вы думаете, достаточно прогрузки измененной процедуры? А клиента в этом случае менять не надо? Ну если изменения косметические – то наверное не надо. А если меняется структура данных? DrKonito2.2) Аудит системы, мониторинг производительности. В СУБД уже все есть ;) Собственно, тут используются возможности ОС - Event log, Performance counters и т.п. Не вижу никаких проблем в реализации подобных возможностей. DrKonito2.3) Поиск нетривиальных ошибок в системе, да и тривиальных тоже. Врядли вы в своем СП реализуете, что-нибудь круче обычного SQL-Profiler. Хорошо если у вас есть хотябы БольшойПротокол работы СП. Ошибки ловятся довольно тривиальным образом, для этого не нужно профайлера. Если проблемы на уровне СУБД – дедлоки, падение производительности и т.п. – они ловятся тем же SQL-профайлером. Если на уровне приложения – для этого просто правильно пишется обработка ошибок с выводом в файл или event log. До сего времени проблем с отловом ошибок не было, хотя ситуации бывали всякие… DrKonito2.4) Время безостановочной работы системы- как вы думаете, что проработает дольше глючный M$ SQL сервер или даже сто раз вылизанный самодельный СП? См. пункт 3.1. DrKonito2.5) Кто может поддерживать ваш СП? Только специально сертифицированные по вашему СП специалисты и разработчики. Первые и вторые это одни и те же люди? ;) В настоящее время да. DrKonito3) Зрелость 3.1) Хотели бы в 1980 году внедрять Оракыл у себя на предприятии? Когда еще не было РАДа, ОДБЦ и Оракыл падал и портил данные заказчиков:) Другими словами у меня глубокое ощущение, что идеи СП находятся сейчас примерно на той же стадии развития. Все-таки в конечном итоге внедряется не Оракыл, а приложение, написанное на нем, которое точно также может падать и портить данные заказчиков. Вопрос только в квалификации разработчиков. DrKonito3.4) Откуда берётся администратор для вашей системы? Просто покупается на рынке и начинает делать свою работу? Покупается на рынке и учится с нуля? Какой вариант ваш? Наш вариант – покупается на рынке и обучается. Администратора за 400 баксов покупать смысла никакого нет, поэтому процесс не будет столь драматичным, как Вы писали на тему обучения кодера :). Прорезюмирую – я согласен с Вашим выводом о том, что СП – это на настоящий момент незрелая технология. Я отдаю себе отчет в том, что наш СП будет занимать довольно узкую нишу на рынке и не будет настолько универсальным средством, каким является промышленная СУБД. Но это не означает, что надо забить на него и ждать, пока кто-нибудь из больших компаний снизойдет до того, чтобы создать и достаточно продвинуть свой СП в массы. авторДык!!!!!!!!!!!!! Ёпрст!!!! Ну сколько можно. Отмечено крсным болдом то, о чем разговор. Как вы его вызываете то, метод ваш? В приложении - как? Если его на стадии разработки нет - как его можно вызвать? Вас десятую страницу просят показать пример - вы упорно отказываетесь, каждый раз впадая в теорию ООП. Неужели из моего ответа не понятно, что есть этот метод на стадии разработки? Вам пример кода что ли нужен? Хорошо, будет вам пример кода... Вот код для выборки списка для того примера, который я приводил страницой раньше: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
По объекту типа IOrderCollection происходит binding к гриду в форме списка объектов. Метод, вызываемый обработчиком событий формы, по которому изменяется стоимость товара в Order’е Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Только пожалуйста, не говорите опять, что вам ничего не понятно или что я вам лекцию по ООП читаю… Понятнее по-моему уже объяснить трудно. Я вообще не пойму, чего вы от меня добиваетесь на пару с тигрой (или вы одно и то же лицо? :)) Чтобы я вам привел тут документацию к системе, чтобы ее для вас разжевал? И не надо тут про коробку передач издеваться. Какой вопрос – такой и ответ. Вы сами-то можете точно сформулировать, что вам надо? Или сами толком не знаете, что вам нужно? ----------------------------------------------------- PS. Полностью согласен с последним постом от Архитектора. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 02:02 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Архитектор ГУЙ лучше пишется при помощи объектных средств- здесь я с вами полностью согласен. Главное чтобы это были стандартные средства поставщика. В этом суть моего поста- в том, что практически любая нестандартная объектная модель, особенно если она полностью скрывает СтандартнуюОписаннуюВКнижках, очень плохо совместима с дешевыми кодерами. Кодер не очень хорошо понимает и стандартные средства, а тут от него требуют разибраться в чем-то совсем космическом. Про стройность мысли в серверной части я с вами полностью согласен. Но она достижима разными способами. Её (серверной части) объектность к этому отношению не имеет. Веб-сервисы например тоже не слишком объектны :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 08:51 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
VladiCh DrKonito3.5) Расскажите какой вы видите свою систему через 5 лет. Наверное это вообще самый важный вопрос, когда рассуждаешь о зрелости технологии. Остальные вопросы, честно говоря, риторические - ответьте хотя бы на этот :) Если с точки зрения бизнеса все пойдет нормально, то через 5 лет это будет внедряемая своими силами + возможно силами партнеров система + набор типовых решений для построения определенного типа корпоративных приложений. Какого типа – на 5 лет загадывать не буду. Сейчас планируется документооборот, CMS, CRM. Возможно, через 5 лет она будет более специализированной, возможно - наоборот. ОК, кажется я начал понимать что у вас за система. а) Вы собираетесь её продавать и ваш спонсор, судя по всему рассчитывает стать вторым Борисом Нуралиевым :). Он даже готов оплачивать собственный провайдер данных :). Это очень принципиальный момент. Возможно вам действительно не обойтись тогда без СП, а то исходники и правда могут скоммуниздить. Вот только технологические вопросы здесь ни при чем. Это всего-лишь бизнес-модель. б) Система в очень ранней стадии разработки и восновном находится в стадии идей. Как захотите так и будет. Соответственно историями из опыта внедрения и эксплуатации вы врядли поделитесь. в)Смена технологий вас пока не пугает пока, так как система маленькая и вы особо даже не запариваетесь над этим вопросом. Если чего перепишите и клиентов и сервера :) VladiCh Просто у нас разные задачи и соответственно разные результаты. Вы оцениваете общий подход применительно к своим частным задачам и делаете на основании этого общие выводы, хотя эти выводы применимы только к вашим задачам. Мне кажется я всегда достаточно четко говорил, что все мои мнения - это чистое имхо, полученное в результате того чем я занимаюсь - разработкой и поддержкой самописных учетных систем. Не предназначенных на продажу. В условиях, когда ресурсов на упражнения в программизме нет. Впрочем, ваши же слова можно отнести и к вам. С чего вы решили, что СП \объектные прослойки подходят всем? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 09:23 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
авторОн даже готов оплачивать собственный провайдер данных :) В написании ODBC-провайдера нет ничего волшебного и очень-супер-сложного. Продолжайте, господа. Народ с интересом следит за веткой :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 09:54 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
VladiCh >>1.1) построения отчетов Пока что вручную на ASP.NET. Вообще планируем какое-нибудь готовое средство построения отчетов прикрутить, но какое - пока не определились. Кстати интерсно вы банальную счет-фактуру на АСП.НЕТ делали? Или скажем ведомость выдачи З\п (с итогами на каждой странице)? А по поводу внешнего генератора отчетов - вас ждет очередной раунд борьбы - мужайтесь. VladiCh DrKonito1.2) распределенных транзакций Эта проблема решится с планируемым переходом на .NET 2.0, где проще реализуются возможности a-la COM+ Я спрашивал не о том как вы будете делать распр.транзакцию. Кстати до NET 2.0 это судя по всему пришлось бы делать еще один СП с поддержкой КОМ+. Впрочем при ваших ресурсах вы можете напрямую работать с MS DTC :) Меня скорее интересовала как ваша система будет принимать участие в РТ инициированной внешней системой? Хотя вобщем-то до распределенных транзакций еще надо дорасти. VladiCh DrKonito1.3) пакетных заданий Это вы как раз-таки про шедулер? Честно говоря здесь вообще проблемы не вижу. В шедулере меня занимает вопрос о том как вы из батника будете пинать методы объектов вашего СП. Понятно, что способы есть, вопрос в том, что опять надо чего-то городить. А если надо пинать что-нибудь каждую секунду? Будете писать еще один апп-сервер с кэшированным коннектом к основному? VladiChВы думаете, достаточно прогрузки измененной процедуры? А клиента в этом случае менять не надо? Ну если изменения косметические – то наверное не надо. А если меняется структура данных? В 90% случаев достаточно. Клиенты обновляеются только в случае появления нового функционала\исправления ошибок в них и только людьими, которым этот новый функционал нужен. Исправления в бизнес логике как правило вообще выкладываются незаметно для пользователей. VladiCh DrKonito2.2) Аудит системы, мониторинг производительности. В СУБД уже все есть ;) Собственно, тут используются возможности ОС - Event log, Performance counters и т.п. Не вижу никаких проблем в реализации подобных возможностей. Будете свои перфоманс каунтеры писать? Протоколировать каждый логин\логаут? ОК, признаю, в конце концов это вопрос ресурсов.[/quot] VladiCh DrKonito Хотели бы в 1980 году внедрять Оракыл у себя на предприятии? Когда еще не было РАДа, ОДБЦ и Оракыл падал и портил данные заказчиков:) Другими словами у меня глубокое ощущение, что идеи СП находятся сейчас примерно на той же стадии развития. Все-таки в конечном итоге внедряется не Оракыл, а приложение, написанное на нем, которое точно также может падать и портить данные заказчиков. Вопрос только в квалификации разработчиков. В 80м Оракыл еще сам падал, без помощи прикладных программистов. :) Вопрос даже не в оракле, а в том, что при молодости технологии легко можно привязаться к какому нибудь эээ ... Бтриву, а потом долго чесать репу на тему слезания с него. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 09:57 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Урррааа, уррраааа, ответ получен!!!!!!!! :) Правда чуда не случилось - в общем, оказалось то, что и ожидалось, но с другой немного стороны. Собственно, вот что: VladiChКак видно из примера, действие ChangeItemPrice выполняется методом объекта, доступ к которому идет через интерфейс IOrderBase. Метод, из которого выполняется это действие, определен в базовой форме списка заказов/счетов/заявок. От этой формы наследуются конкретные формы списков, в которых эту операцию переопределять или реализовывать заново уже не требуется. Отмечено главное. Так вам все-таки нужно перелопачивать клиента, для того чтобы добавить еще один метод к объекту. Ничего автоматически не делается - руками только, независимо от того, ООП, не ООП - руками вы все делаете. Тогда зачем эта вся шелуха, если вместо добавления каждый раз методов в базовый тип и форму и накручиванием для реализации работы всего этого странной прослойки, можно просто дернуть одну ХП в том месте, где это нужно - неужели это для вас труднее? Или, как я понимаю, вовремя не перестроились на жизнь и работу с СУБД и продолжаете все в стиле клиентского ООП? Не мешало бы конечно посмотреть, что там внутри order.ChangeItemPrice(item.Id, price) - очень интересна дальнейшая реализация. Я удивлен больше, чем ожидалось: если бы вы действительно начитывали список возможных методов в рантайме и потом дергали бы их через что-то типа DoMethod(MethodName, ParamList), то это конечно экзотический был бы вариант, но учитывая вашу приверженность к ООП, этот вариант входил бы в общую концепцию и в итоге представлял бы в принципе неплохое решение для действительно автоматизации системы . Но вы сделали странное решение: вы в любом случае правите руками код на клиенте, сводя на нет все ваше ООП . Ну ГУИ не берем - тут не ООП конечно, а продвинутая система построения списков и м.б. еще чего-то на основе метаданных из БД (правда это есть у многих и к ООП не имеет отношения). Получается, что мне в два раза легче как минимум (не знаю еще, что там внутри метода в базовом классе и на сервере, а то может и в 10 раз): для того, чтобы дернуть метод так сказать объекта, мне не нужно нигде ничего править, кроме как на той форме, где нужен вызов собственно сделать exec StpredProc . Только не говорите, что я ничего не понял и т.п. - я тупо сравниваю количество времени и действий для того, чтобы исполнить какой-либо метод/ХП. ............... Остальное в следующем посте прокомментирую -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 10:36 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Теперь ответ Архитектору. авторРазработка GUI при этом является достаточно трудоемкой задачей, отнимающей много человеко-часов. Это смотря как у вас поставлена сама разработка и как вы - уж простите - используете для этого ООП :) В нашей системе как раз таки клиентскую часть писать нет проблем - есть набор стандартных форм, от которых вы наследуетесь, в самом сложном случае прописываете там 3 (три) хранимых процедуры и контролы/колонки списка. Все. Добавление комплекта форм к какой-то таблице занимает не более получаса времени. А вот как раз вся основная работа проводится на сервере БД. Так что.... Может в вашем королевстве не так что-то? :)) авторПричем практика показывает, что люди, обладающие квалификацией для разработки серверной части, к GUI обычно относятся прохладно, да и вроде бы GUI и есть самый подходящий модуль системы для отдачи "кодерам". Для отдачи "кодерам" - не важно, что будет им отдано, в любом случае, такой подход есть самый короткий путь, чтобы завалить систему. Ну если у вас конечно времени три вагона, то можно и кодерами :) авторИ вот здесь очень хорошо, чтобы сервер предоставлял некий ограничивающий framework разработчикам клиентской стороны. Уж куда более лучший framework может быть, чем сама СУБД? авторПри правильной организации этого framework можно не бояться, что человек испортит данные (логически естественно) на сервере, вызвав какую-нибудь ХП (написанную для внутреннего использования), не очень понимая, что она выполняет. То есть, если кодер - дурак, то он каким-то образом ваш framework обойдет и не сможет вызвать нехороший метод, а ХП он вызовет бед проблем - так чтоли? (подсказка: а про права на ХП не слышали?) Но то, что в процессе изучения для разработки системы кодеру для вызова ХП нужно просто ее вызвать - причем ту, каую сказали свыше - , то в вашем случае он еще должен выучить framework, помимо самого процесса разработки ГУИ. Да, простой путь авторТ.е. разработку КС системы желательно вести след. образом: 1. Несколько квалифицированных человек пишут серверную часть + framework для работы с сервером 2. Для разработки GUI возможно привлечение "кодеров", аутсорсинг и т.п. Но если вы хотите простую и надежную систему, то лучше так: 1. Несколько квалифицированных человек пишут серверную часть и все - с СУБД умеют работать изначально многие "кодеры". Более того, вашу среверную часть могут использовать практически любые программы/системы/и т.д. без дополнительных действий, изучений и т.д. авторТеперь объясню, что я называю framework: В зависимости от сложности и спецификации системы это может быть: 1. Просто WEB service, предоставляющий методы для доступа 2. Некий объектный mapper (обертка) 3. Более продвинутый СП, с кешированием результатов некоторых запросов, мат. вычислениями и т.п. В предложенном мной варианте этого ничего нет - почувствуйте разницу авторВ чем полностью согласен с DrCornito, что скорость "въезжания" в детали системы не зависит от того объектная она или нет. Если человек 3 года писал серверную часть на ХП, придумывал удобную ему систему именования процедур и т.п. - он сам в ней найдет все за секунду и никто не докажет ему, что объектный подход поможет ему в разработке системы - потому что действительно не поможет. А вот это правльно, полностью поддерживаю. авторСам я за объектный подход. В качестве примера можно взять Win32 API и VCL/.Net framework. Можно сделать одинаковый GUI на WinAPI и VCL? Конечно, можно. Но найдите студента, который вам его сделает на WinAPI - их единицы (если вообще есть). За объектный подход в разработке ГУИ - да нет проблем. Но переносить точно так же на БЛ и данные в РСУБД - извините, это разные вещи. FastObjects - вот там.... :)) -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 10:56 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
VladiCh А вы зря смеетесь, и у нас в планах стоит задача написания провайдера данных. OLEDB, ODBC, ADO.NET – это непринципиально. В этом случае автоматически отпадает бОльшая часть проблем, связанных с интеграцией данных. Да не зря - сначала сами придумали себе проблему, потом сами же думаете, как ее самим же решать :) -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 11:00 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
2 VladiCh Все забываю спросить. Сколько у вас сейчас в БД объектов, какие предметные области покрываются системой, каков объем БД и какая нагрузка на нее - сколько клиентов и т.д. -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 11:43 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
tygraУрррааа, уррраааа, ответ получен!!!!!!!! :) Правда чуда не случилось - в общем, оказалось то, что и ожидалось, но с другой немного стороны. Собственно, вот что: VladiChКак видно из примера, действие ChangeItemPrice выполняется методом объекта, доступ к которому идет через интерфейс IOrderBase. Метод, из которого выполняется это действие, определен в базовой форме списка заказов/счетов/заявок. От этой формы наследуются конкретные формы списков, в которых эту операцию переопределять или реализовывать заново уже не требуется. Отмечено главное. Так вам все-таки нужно перелопачивать клиента, для того чтобы добавить еще один метод к объекту. Ничего автоматически не делается - руками только, независимо от того, ООП, не ООП - руками вы все делаете. Работа с метаданными как раз напрямую завязана на ООП. Повторюсь еще раз. Все классы наследуются от базового класса Entity. Для класса Entity определены операции Create, Edit, Delete, ChangePermissions. Соответственно, все эти операции существуют для всех объектов и именно на этом принципе основано то, что мне не надо в общем случае для каждого объекта реализовывать это заново. tygra Тогда зачем эта вся шелуха, если вместо добавления каждый раз методов в базовый тип и форму и накручиванием для реализации работы всего этого странной прослойки, можно просто дернуть одну ХП в том месте, где это нужно - неужели это для вас труднее? Или, как я понимаю, вовремя не перестроились на жизнь и работу с СУБД и продолжаете все в стиле клиентского ООП? Не мешало бы конечно посмотреть, что там внутри order.ChangeItemPrice(item.Id, price) - очень интересна дальнейшая реализация. Неправильно понимаете. Опыта разработки на уровне СУБД у меня как раз побольше будет, чем в разработке GUI. Насчет реализации метода ChangeItemPrice. Класс, к которому идет обращение через интерфейс IOrder, создается динамически и представляет из себя всего-навсего обертку для вызова веб-сервиса и возвращения результатов. С веб-сервисом ситуация аналогичная. Есть системный веб-сервис, через который выполняются общие запросы на выборку и изменение даных. И есть веб-сервисы для каждого класса - они точно также генерируются динамически. То есть при добавлении метода к классу мне нужно: 1. Описать его в метаданных. 2. Описать в интерфейсе. 3. Реализовать в соответствующем классе в промежуточном слое 4. Вызвать с клиента. Первые 2 пункта я также планирую автоматизировать, т.е. сделать автоматическую регистрацию метода в метаданных и динамически генерируемую сборку интерфейсов, используемую на клиенте и среднем слое. Останется собственно 2 пункта, которые всегда присутствуют и у вас. tygra Я удивлен больше, чем ожидалось: если бы вы действительно начитывали список возможных методов в рантайме и потом дергали бы их через что-то типа DoMethod(MethodName, ParamList), то это конечно экзотический был бы вариант, но учитывая вашу приверженность к ООП, этот вариант входил бы в общую концепцию и в итоге представлял бы в принципе неплохое решение для действительно автоматизации системы . Но вы сделали странное решение: вы в любом случае правите руками код на клиенте, сводя на нет все ваше ООП . Ну ГУИ не берем - тут не ООП конечно, а продвинутая система построения списков и м.б. еще чего-то на основе метаданных из БД (правда это есть у многих и к ООП не имеет отношения). Получается, что мне в два раза легче как минимум (не знаю еще, что там внутри метода в базовом классе и на сервере, а то может и в 10 раз): для того, чтобы дернуть метод так сказать объекта, мне не нужно нигде ничего править, кроме как на той форме, где нужен вызов собственно сделать exec StpredProc . Только не говорите, что я ничего не понял и т.п. - я тупо сравниваю количество времени и действий для того, чтобы исполнить какой-либо метод/ХП. Есть возможность читать список методов и вызывать их динамически - но это-то как раз к ООП отношения не имеет, это скорее что-то типа Reflection в .NET. Я про такую возможность писал уже выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 13:52 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Очень сложно - не в смысле понимания конечно, в смысле реализации. Раз вам все-равно приходится все прописывать руками - не вижу никакого выигрыша. Если у вас такой большой опыт в работе с СУБД, то вы давно бы сделали кое чего внутри СУБД по вызовам ХП и спокойно бы работали, вместо того, чтобы городить огромный огород по вызовам методов, их регистрации, вытаскивания, связывания и т.д., причем делать это все на клиенте или в среднем слое. Чем вам не понравилась СУБД и ее возможности + реализация все того, что вы делаете, но более простыми способами в той же СУБД - не знаю. Но когда система переваливает за 500 таблиц становится понятно, что простота - залог здоровья :) Я не к тому, что у кого-то круто, у кого-то нет. Я к тому, что вы себе сами усложняете жизнь. Я не знаю, какая сейчас у вас БД и нагрузка - пока не ответили - но при хороших размерах того и другого тормоза будут отменные, сложность - ужасная, оптимизировать это будет хреново....... В общем, не завидую я вам в дальнейшем. -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 14:05 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
tygraВсе забываю спросить. Сколько у вас сейчас в БД объектов, какие предметные области покрываются системой, каков объем БД и какая нагрузка на нее - сколько клиентов и т.д. Та версия системы, про которую я сейчас пишу, пока находится в разработке . Предыдущая версия описана здесь: Ну что про нее можно сказать. Она собственно была чем-то вроде реализованного прототипа, на которой некоторые идеи обкатывались. Сейчас посмотрел - 147 классов в БД, на уровне кода реализовано 83 класса (содержащих какую-то бизнес-логику). С системой работает порядка 20 пользователей. Объем около 2 Гб. Всего таблиц около 200, чуть меньше. Количество записей в таблице объектов около 400000. То есть база небольшая и используется не очень активно, соответственно и загружена она слабо. tygraЧем вам не понравилась СУБД и ее возможности + реализация все того, что вы делаете, но более простыми способами в той же СУБД - не знаю. Но когда система переваливает за 500 таблиц становится понятно, что простота - залог здоровья :) Да мне нравится СУБД, просто почитайте внимательнее мой ответ и ответ DrKonito - он все правильно написал в принципе, за исключением того, что система уже вышла из стадии идей. Просто промежуточный слой в такой системе использовать практически _обязательно_, по совокупности нескольких причин. То есть для меня вопрос, использовать его или нет вообще не стоял, это было в условиях задачи. Стоял вопрос, как с использованием промежуточного слоя упростить жизнь программисту. И я стараюсь ее максимально упростить, создавая механизмы автоматической синхронизации данных и кода. Чем они хороши - пишутся только один раз. Если бы это была только внутренняя система, да еще и без доступа снаружи, то я бы наверное не стал городить такой огород на указанных задачах - задачи такого объема можно проще решить используя 2 уровня. Просто ее планируется расширять и в будущем продавать. А здесь совершенно другие требования к системе. По поводу производительности - я уже писал, что есть возможности для ее оптимизации вручную. Насчет сложности оптимизации, тормозов и т.п. - ну через годик можно будет к этому разговору вернуться - посмотрим :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 14:36 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Хорошо, вернемся через годик :) -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 14:54 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Съездил на неделю в Норильск - а тут без меня такая дисскуссия развернулась - прямо бои паскалистов и сишников:) Попробую высказать пару мыслей в защиту объектно-ориентированного подхода к построению информационных систем. Все нижесказанное есть выстраданное ИМХО:) 1. ООП в бизнес-приложениях - это модель приложения в понятиях "реального мира", тот самый уровень абстракции, который позволяет работать с информационной системой не только программисту. Если система небольшая, если программист напрямую общается с заказчиком на уровне "вы скажите, че надо - я слабаю), то ООП - не нужное усложнение. Если же у вас существуют такие цепочки, как "заказчик-бизнес аналитик-программисты" или "заказчик-бизнес аналитик--архитектор-программисты", то объектно-ориентированный подход дает огромное преимущество - все (ну, может, кроме заказчика) начинают мыслить на уровне объектов. UML становится языком технических заданий, понятным всем. Появляется формальная процедура внесения изменений в информационную систему. Работа в команде становится более эффективной - архитектор проектирует классы и поручает реализацию конкретных интерфейсов разным программистам. При таком подходе поддерживать и развивать систему становится гораздо проще, плюс гораздо больше шансов, что архитектура информационной системы остаенется "правильной" в течение всего жизненного цикла системы. 2. ООП в бизнес-приложениях никак не связан с наличием сервера приложений. Просто большинство серверов приложений предполагают работу с бизнес-объектами, поэтому они стали синонимом объектно-ориентированного подхода к разработке бизнес-приложений. Более того, объектный подход может быть никак не связан с техническими возможностями среды разработки - возьмите бумажку (или UML-редактор:), перечислите свои БИЗНЕС-объекты, их свойства, методы, связи, workflow - вот вам и описание системы. Используйте это описание на всех этапах разработки и сопровождения, постоянно актуализируйте его, вот вам и объектный подход. Однако гораздо эффективнее, когда объектная модель и код приложения являются одним целым. 3. Повторю, для тех, кто не читал мои посты в начале ветки. То, что мы делаем у себя - создание "классов-оберток" - как раз и позволяет придать объектный вид классическому 2х-слойному бизнес-приложению. Эти классы создаются автоматически из метаданных. Помимо основной роли такие классы-обертки берут на себя ряд дополнительных функций: - автоматическая генерация интерфейса на основе "визуализаций" данного класса (визуализации тоже наследуются, перекрываются и т.п.) - "раннее" оповещение об изменениях - вы узнаете об изменениях в БД по факту, а не по "рефрешу" - свой механизм транзакций - все изменения вначале записываются в некий пул изменений, измененные объекты лочатся, затем по коммиту все изменения проводятся в БД. - свой механизм кеширования данных. На клиента данные качаются "порциями", зависящими от размера кеша. - объекты могут служить источником данных для нормальных визуализационных классов .NET - поддержка разных версий одного класса в одной системе - механизм имперсонификации и своя система разграничения прав - workflow на основе "матрицы состояний" класса - многое другое Сейчас классы-обертки работают на клиенте, или, правильнее сказать, на той стороне, где строится интерфейс. Пока, на этапе рефакторинга нашей информационной системы, основная функция классов - автоматическое построение интерфейса. Бизнес-логика большей частью осталась в хранимых процедурах, частью генерится автоматически на основе табличного описания алгоритмов хоз.операций (проводок). Cложные алгоритмы находятся в хранимых процедурах. При необходимости часть бизнес-логики можно будет перенести в .NET и запускать на некоем сервере приложений, однако пока такой необходимости не стоит. Если кого интересует более подробное описание библиотеки - см. мои посты выше, я приаттачивал файл с описанием. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 17:12 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
авторООП в бизнес-приложениях - это модель приложения в понятиях "реального мира", тот самый уровень абстракции, который позволяет работать с информационной системой не только программисту Неужели чтобы понять вашу систему кому-то кроме программиста, вам нужно ООП? Или ему нужно учить ООП? Или кому? :)) авторЕсли система небольшая, если программист напрямую общается с заказчиком на уровне "вы скажите, че надо - я слабаю), то ООП - не нужное усложнение. Конечно, такой программист ООП то не знает - лабать много ума не надо :)) авторЕсли же у вас существуют такие цепочки, как "заказчик-бизнес аналитик-программисты" или "заказчик-бизнес аналитик--архитектор-программисты", то объектно-ориентированный подход дает огромное преимущество - все (ну, может, кроме заказчика) начинают мыслить на уровне объектов. Вы что, всех этих людей ООПу учите? Прсто насильно или деньги еще берете за это? А кто устраивается аналитиком - экзамены по ООП сдает? авторUML становится языком технических заданий, понятным всем. Появляется формальная процедура внесения изменений в информационную систему. Работа в команде становится более эффективной - архитектор проектирует классы и поручает реализацию конкретных интерфейсов разным программистам. При таком подходе поддерживать и развивать систему становится гораздо проще, плюс гораздо больше шансов, что архитектура информационной системы остаенется "правильной" в течение всего жизненного цикла системы. То есть простым языком, вы почему то без ООП в системе не можете построить процесс разработки? Вы может это, того, не тех виноватых нашли - может других книг почитать, не ООП, а по организации процессов на предприятии? Да, хороша у вас жизнь............. :) авторПомимо основной роли такие классы-обертки берут на себя ряд дополнительных функций: Рассмотрим :) автор- автоматическая генерация интерфейса на основе "визуализаций" данного класса (визуализации тоже наследуются, перекрываются и т.п.) Тут ООП ни при чем - но может получиться даже хуже, чем просто руками. Смотря что подразумевается под автоматическая генерация автор- "раннее" оповещение об изменениях - вы узнаете об изменениях в БД по факту, а не по "рефрешу" При чем тут обертки, ООП? Кому надо - тот и так делает. автор- свой механизм транзакций - все изменения вначале записываются в некий пул изменений, измененные объекты лочатся, затем по коммиту все изменения проводятся в БД. Неужели вы сделали это лучше, чем в MS SQL?!!! Вах! автор- свой механизм кеширования данных. На клиента данные качаются "порциями", зависящими от размера кеша. Зачем? автор- объекты могут служить источником данных для нормальных визуализационных классов .NET Бррррр.. автор- поддержка разных версий одного класса в одной системе Круто - в одной системе по-разному работать с одним объектом! Это уже в достоинство возвели? Я думал, это недостаток - когда логика на клиенте, а клиенты разные (забыли обновить) :) автор- механизм имперсонификации и своя система разграничения прав У кого ж ее нет? ======================= Это так, ответный выстрел. И чем только люди не занимаются, лишь бы время убить да систему посложнее сделать - чтобы никто другой не смог с ней работать, ну и оптимизация еще - через небольшое время все умрет и можно вторую версию делать, опять же работа надолго обеспечена :)) -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 18:11 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Хотя конечно нужно разделять, зачем делается система. Одно дело - для себя, чтоб работало . Другое дело - для дяди, тираж, чтоб настраивалось , а работа уже десятое дело - проблема покупателей. Для дяди в тираж я наверное тоже бы сделал что-нибудь настраиваемое - чтобы потом при продажи быстренько настроить и отвалить. А потом деньги за поддержку, оптимизацию...... Деньги, деньги, деньги за всё....... Но для себя - не, так мне не надо, я уж лучше попроще и поэффективнее, чтобы мне любимому меньше мороки было. Вот такие пироги.... жеваные -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 18:17 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
tygra Неужели чтобы понять вашу систему кому-то кроме программиста, вам нужно ООП? Или ему нужно учить ООП? Или кому? :)) ... Вы что, всех этих людей ООПу учите? Прсто насильно или деньги еще берете за это? А кто устраивается аналитиком - экзамены по ООП сдает? Наверное ООП неправильный термин. Речь идет об объектно-ориентированном подходе. Хорошие бизнес-аналитики и архитекторы им владеют. UML - язык для создания объектных моделей. Его, ИМХО, надо знать наравне с SQL. А учим мы методом "веревки и палки":) tygra То есть простым языком, вы почему то без ООП в системе не можете построить процесс разработки? Вы может это, того, не тех виноватых нашли - может других книг почитать, не ООП, а по организации процессов на предприятии? Да, хороша у вас жизнь............. :) Ну-ка, ну-ка, tygra, поделитесь сокровенными знаниями о процессах разработки. И об организации процессов на предприятиях. И зачем нам отказываться от объектного подхода? Только потому, что вам это не нравиться? tygra автор- автоматическая генерация интерфейса на основе "визуализаций" данного класса (визуализации тоже наследуются, перекрываются и т.п.) Тут ООП ни при чем - но может получиться даже хуже, чем просто руками. Смотря что подразумевается под автоматическая генерация Это почему это ООП ни при чем? Как раз причем - есть визуализационные объекты, обладающие всеми свойствами объектов - наследование, полиморфизм. И инкапсуляция заодно - понятие объекта включает в себя и его визуализации. Кто-то в ветке (не вы ли) ратовал за использование ООП только при создании интерфейса. Ну так мы и используем. Насчет "хуже, чем руками" - никто не запрещает наследовать визуализации и их модифицировать или создавать свои визуализационные классы. tygra автор- "раннее" оповещение об изменениях - вы узнаете об изменениях в БД по факту, а не по "рефрешу" При чем тут обертки, ООП? Кому надо - тот и так делает. Раннее оповещение - это один из аналогов "событий" в объектном понимании и очено хорошо ложится в логику объектного подхода. То есть, если у вас в кеше лежат инстанции объектов, а кто-то их изменил в БД, вы получите оповещения от этих инстанций, а объекты актуализируются. tygra автор- свой механизм транзакций - все изменения вначале записываются в некий пул изменений, измененные объекты лочатся, затем по коммиту все изменения проводятся в БД. Неужели вы сделали это лучше, чем в MS SQL?!!! Вах! SQL транзакции не предполагают "протяженности во времени", они должны быть настолько короткими, насколько возможно. Представьте себе, что вы, открыв форму, посылаете серверу BEGIN TRAN, потом что-то там делаете в БД, а потом при нажатии на OK посылаете COMMIT или при нажатии на CANCEL посылаете ROLLBACK. Не буду объяснять недостатков подобного подхода. У нас есть свой механизм транзакций. Для изменения объектов надо начать такую транзакцию. Упрощенно говоря - при изменении объектов изменения накапливаются, измененные объекты "лочатся" (нашими средствами), при коммите такой транзакции все накопившиеся изменения "накатываются" на SQL сервер, при отмене транзакции - просто объекты возвращаются в состояние "до начала транзакции". До закрытия транзакции есть возможность делать UNDO. tygra автор- свой механизм кеширования данных. На клиента данные качаются "порциями", зависящими от размера кеша. Зачем? Представьте себе, что у вас в таблице 100 млн. записей. Вы хотите работать с этими записями как с коллекцией инстанций объектов. Или (не подумав) создаете Grid и заполняете его записями из этой таблицы, забыв про фильтр. У нас это все возможно, т.к. работа идет через кэш и сервер выдает на клиента только TOP N записей. tygra автор- объекты могут служить источником данных для нормальных визуализационных классов .NET Бррррр.. Не понял? Что вам тут не понравилось? Объекты имлементируют все интерфейсы, которые нужды для работы в качестве источников данных. Что тут такого? tygra автор- поддержка разных версий одного класса в одной системе Круто - в одной системе по-разному работать с одним объектом! Это уже в достоинство возвели? Я думал, это недостаток - когда логика на клиенте, а клиенты разные (забыли обновить) :) Вообще-то это версионность - это свойство всех промышленных информационных систем. Представьте себе, что у системы и у объектов, ее составляющих есть номер версии, и вся история изменений накапливается в системе. Изменения можно распространять на работающей системе, потом надо лишь переключить текущий номер версии - и вуаля:) Там есть еще много фишек, например для коллективной разработки - check in, check out и т.п. tygra автор- механизм имперсонификации и своя система разграничения прав У кого ж ее нет? Завидно?:) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 20:48 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
tygraВ нашей системе как раз таки клиентскую часть писать нет проблем - есть набор стандартных форм, от которых вы наследуетесь, в самом сложном случае прописываете там 3 (три) хранимых процедуры и контролы/колонки списка. Все. Добавление комплекта форм к какой-то таблице занимает не более получаса времени. А вот как раз вся основная работа проводится на сервере БД. Так что.... Может в вашем королевстве не так что-то? :)) Да, не так :) Например, у нас есть формы, отображающие динамически изменяющиеся графики. Здесь на клиентской стороне начинаются потоки, синхронизация и все, что с этим связано. И при неумелом использовании всего этого возникают трудно отыскиваемые проблемы и вообще корявый GUI. И часто люди, хорошо разбирающиеся в такого вида программировании вообще не видели СУБД в глаза, зато отлично знают, как писать ОО программы на С++. tygraДля отдачи "кодерам" - не важно, что будет им отдано, в любом случае, такой подход есть самый короткий путь, чтобы завалить систему. Ну если у вас конечно времени три вагона, то можно и кодерами :) Мы с вами работаем на разных рынках - я на тиражируемых продуктах, вы, скорее всего, создаете продукт для "внутреннего использования". Представьте себе такой случай: начальство радостно объявляет, что уже почти продали новую версию продукта, которая должна выйти через N месяцев. При этом выясняется, что покупатель выставил ряд требований к системе (новых возможностей). Вы делаете дизайн, прикидываете время и выясняется, что ваша команда из 3-х человек, обычно сопровождающая проект, просто физически не укладывается в заданные сроки. Вы идете к начальству - вам в ответ дают возможность привлечь несколько человек с других проектов, которые с СУБД никогда не работали или взять несколько людей с аутсорсинга (об их квалификации вы можете только догадываться по резюме, которое всегда блещет достижениями и громкими фразами). Вот в таких случаях и помогает какая-либо обертка/СП или что-то подобное. Людей, знающих С++/С#/Java найти несложно - это скорее всего любой разработчик в вашей компании. Все обычно умеют пользоваться Code complete в редакторе VS.Net и могут прочитать описание метода и параметров, которые студия показывает когда набираешь код. Людей, работавших с СУБД - в разы меньше. Обучать их работать с Enterprise manager, системе наименования ХП, гда пойти и почитать документацию по описанию ХП и ее параметрам - дольше. И стоят они дороже. Я не говорю, что это хороший способ разработки и так нужно делать - но это конкретный реальный пример зачем может понадобиться набрать "кодеров" на короткий срок. tygraТо есть, если кодер - дурак, то он каким-то образом ваш framework обойдет и не сможет вызвать нехороший метод, а ХП он вызовет бед проблем - так чтоли? (подсказка: а про права на ХП не слышали?) А есть возможность средствами СУБД запретить вызывать ХП напрямую из клиента, но при этом оставить возможность вызвать ее из другой ХП, которая напрямую этим клиентов вызывается ( имеется в виду аналог protected/private метода в ООП)? tygraТо есть простым языком, вы почему то без ООП в системе не можете построить процесс разработки? Вы может это, того, не тех виноватых нашли - может других книг почитать, не ООП, а по организации процессов на предприятии? Да, хороша у вас жизнь............. :) Хотелось бы услышать названия книг, которые рассказывают о том, как построить процесс разработки без ООП (еще лучше если там описываются преимущества над ООП). Наверняка они есть и мне было бы очень интересно их почитать (серьезно). Также был бы благодарен за ссылки на средства проектирования модели данных, включающих также возможность описать взаимодействие сущностей в системе (бизнес логики). Никто не заставляет Вас использовать ООП. Если у Вас уже есть готовая система, которую вы дописываете и сопровождаете - конечно, переводить ее на другой язык, писать обертки - это чистая трата денег. Вы всегда найдете программиста, который напишет GUI на MFC быстрее, чем вы на Delphi, потому что у него уже есть 350 готовых форм, которые он знает наизусть и все повторяющиеся куски обернуты в макросы. При этом он вам будет доказывать, что пользоваться оберткой WinAPI на Pascal с различными багами и ограничениями от Borland нелепо и незачем. Кода у него получается меньше, а все баги он уже исправил. Это, по-вашему, служит причиной, чтобы отказаться от Delphi и всем сесть на MFC? Если вы не видите для себя выгоды в использовании ООП - ради бога, не используйте. Люди здесь рассказывают об используемых технологиях не потому что хотят Вам доказать, что их система круче и быстрее. Просто кто-то нашел удобный для себя способ выражения мыслей, создания модели и обсуждения ее с аналитиками и другими разработчиками. Если вы не представляете/не хотите представлять как можно модель системы выразить в объектах через свойства и методы - это не значит, что остальные тоже этого не могут и не должны делать. Кстати, мне кажется, что наличие на рынке большого количества UML редакторов и case-средств, где и используются принципы ООП, является доказательством того, что у ООП есть применение. И моделируют там не GUI, а как раз объекты системы и бизнес-логику. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2005, 09:07 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
ОК, Дмитрий, кажется я начал чего-то понимать. У вас бизнес-логика изначально была в СУБД. Особенно после того, как вы убедились, что апп-сервера вам производительности не прибавили :). Теперь она "размазана" между СУБД и в данный момент "толстым клиентом". При этом вы присматриваетесь не будет ли красивее "размазать" еще чего-нибудь на выделенный СП? Дмитрий Сорокин То, что мы делаем у себя - создание "классов-оберток" - как раз и позволяет придать объектный вид классическому 2х-слойному бизнес-приложению. Cекьюрити, триггера, транзакции и воркфлоу уже в толстом клиенте? Не слабая оберточка. Это вы называете объектным видом классического двухзвенного приложения? :) Вы пишете очередной ОРМ - называйте вещи своими именами. Вы, кстати, тоже хотите стать Борисом Нуралиевым? Или вы считаете, что потратив ресурсы на создание фирменного ОРМ-а вы дадите конкурентное преимущество своему предприятию? Или что производительность труда вверенных вам подразделений при использовании ОРМ-а возрастет многократно? Вы кстати считали сколько вы уже потратили на ОРМ? В килобаксах? А сколько еще потратите? Лучше бы готовый взяли, чесслово. Аргументы про красивее и правильнее-не приводите. На вкус и цвет сами знаете. Дмитрий Сорокин В принципе ничто не запрещает использовать эти интерфейсные объекты, например, при написании скриптов на каком нибудь vbscript или С# с последующим запуском локально или на некоем дот-нетовском scripting host. Типа - вот вам и сервер приложений... :) А что вам мешает просто вызывать ХП из уже существующего scripting host, а не из "некого dot-netовского" (afaik еще не вышедшего) ? Дмитрий Сорокин Хотя все это ИМХО, и, возможно, мы изобретаем велосипед:) В начале 90-х в каждом уважающем себя отделе АСУ(особенно в тех в которых программистов было много, а работы мало ;) ) было принято писать dbase-совместимую СУБД. С массой преимуществ перед стандартной естественно :) Имхо сейчас та же фигня, только все теперь пишут свой ОРМ. Люди не меняются :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2005, 09:40 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Дмитрий Сорокин Наверное ООП неправильный термин. Речь идет об объектно-ориентированном подходе. Хорошие бизнес-аналитики и архитекторы им владеют. Наверное... Тока в этом топике решь шла о ООП реализации бизнес-логики, а не об ООМ (объектно-ориентированном моделирование), про которое Вы нам тут расказываете. Хороший бизнес-аналитик и архитектор - это тот, у кого спроектированная система спроектирована так, что ее легко понять, внедрять и сопровождать. Ну, и она должна как минимум работать. И из этого совсем не следует, что обязательно должно использоваться ООМ! Дмитрий СорокинНу-ка, ну-ка, tygra, поделитесь сокровенными знаниями о процессах разработки. И об организации процессов на предприятиях. И зачем нам отказываться от объектного подхода? Только потому, что вам это не нравиться? Никто Вас ни от чего не заставляет отказываться. Только не надо продвигать ООМ подход как панацею. Существуют и другие методики проектирования и внедрения приложений. На счет поделиться... Что Вас конкретно интересует?! Дмитрий СорокинSQL транзакции не предполагают "протяженности во времени", они должны быть настолько короткими, насколько возможно. Представьте себе, что вы, открыв форму, посылаете серверу BEGIN TRAN, потом что-то там делаете в БД, а потом при нажатии на OK посылаете COMMIT или при нажатии на CANCEL посылаете ROLLBACK. Не буду объяснять недостатков подобного подхода. Я так думаю, что в каждой системе, есть что-то подобное. Я это называю "блокировками" на уровне бизнес-логики. Только вот опять это все реализовано у меня без каких-либо объектных оберток - что более прозрачно и понятно! Дмитрий СорокинПредставьте себе, что у вас в таблице 100 млн. записей. Вы хотите работать с этими записями как с коллекцией инстанций объектов. Или (не подумав) создаете Grid и заполняете его записями из этой таблицы, забыв про фильтр. У нас это все возможно, т.к. работа идет через кэш и сервер выдает на клиента только TOP N записей. Опять мимо... постраничный Вывод лекго реализуется средствами СУБД без каких-либо "объектных наворотов". Вспоминается реклама Dew... ;) Дмитрий СорокинВообще-то это версионность - это свойство всех промышленных информационных систем. Представьте себе, что у системы и у объектов, ее составляющих есть номер версии, и вся история изменений накапливается в системе. Изменения можно распространять на работающей системе, потом надо лишь переключить текущий номер версии - и вуаля:) Там есть еще много фишек, например для коллективной разработки - check in, check out и т.п. Я Вас умоляю... Для поддержки версионности как Вы крассиво выразились "свойства всех промышленных информационных систем" эта система не обязательно должна быть спроектирована по ООМ и использовать ООП бизнес-логику. АрхитекторПредставьте себе такой случай: начальство радостно объявляет, что уже почти продали новую версию продукта, которая должна выйти через N месяцев. При этом выясняется, что покупатель... Хм... Интересный подход... Прибыльность в угоду качеству... Чтож, такое возможно... АрхитекторА есть возможность средствами СУБД запретить вызывать ХП напрямую из клиента, но при этом оставить возможность вызвать ее из другой ХП, которая напрямую этим клиентов вызывается ( имеется в виду аналог protected/private метода в ООП)? Вы серьезно об этом не знаете или пошутили?! Есть такая возможность. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2005, 10:23 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
DrKonitoОК, Дмитрий, кажется я начал чего-то понимать. У вас бизнес-логика изначально была в СУБД. Особенно после того, как вы убедились, что апп-сервера вам производительности не прибавили :). Теперь она "размазана" между СУБД и в данный момент "толстым клиентом". При этом вы присматриваетесь не будет ли красивее "размазать" еще чего-нибудь на выделенный СП? Клиент у нас совсем тоненький... Насчет сервера приложений - таких целей не ставится. Пока нам хорошо живется на сервере БД. А объекты-обертки - это лишь интерфейс между тонким клиентом и сервером БД. DrKonito Дмитрий Сорокин То, что мы делаем у себя - создание "классов-оберток" - как раз и позволяет придать объектный вид классическому 2х-слойному бизнес-приложению. Cекьюрити, триггера, транзакции и воркфлоу уже в толстом клиенте? Не слабая оберточка. Это вы называете объектным видом классического двухзвенного приложения? :) Вы пишете очередной ОРМ - называйте вещи своими именами. Все не так ужасно. 1. Секьюрити - действительно проверяется на клиенте. На сервере БД у всех одни права (имперсонификация). Но естественно вся информация о правах хранится в БД, а на клиенте лишь проверяются права доступа пользователя к свойствам и методам объекта. 2. Триггера лежат на сервере:) На клиенте - никакой бизнес-логики. 3. Транзакции - я бы скорее назвал их пакетами изменений - действительно открываются на клиенте. Но это очень легкая и логичная система. 4. Воркфлоу - отрабатывается на клиенте. А где же ему еще отрабатываться? Но все алгоритмы лежат в метаданных на сервере. На самом деле тут все очень логично - классам-оберткам передан ряд утилитарных функций, которые легко вписываются в объектную модель. DrKonito Вы, кстати, тоже хотите стать Борисом Нуралиевым? Или вы считаете, что потратив ресурсы на создание фирменного ОРМ-а вы дадите конкурентное преимущество своему предприятию? Или что производительность труда вверенных вам подразделений при использовании ОРМ-а возрастет многократно? Вы кстати считали сколько вы уже потратили на ОРМ? В килобаксах? А сколько еще потратите? Лучше бы готовый взяли, чесслово. Аргументы про красивее и правильнее-не приводите. На вкус и цвет сами знаете. А как бы вы предложили дальше поддерживать развивать систему, установленную на 30 заводах (около 3000 рабочих мест, суммарно - почти 1 ТБ накопленных данных), живущую уже 10 лет, постоянно дописываемую, с чистой клиент-серверной архитектурой (тонкий клиент), с миллионами строчек кода, тысячами таблиц и хранимых процедур, с модулями написаннами и на Delphi (от 3.0 до 5.0) и на Access (от 2.0 до 2000) и на VB и на С# и на Excel? Где каждый программист норовил написать собственный ОРМ или на крайний случай хотя бы бы свою библиотеку? С моей точки зрения подобная "объектизация" - единственный вариант рефакторинга сложной системы, имеющий шанс на успех. При таком подходе нет необходимости переписывать все заново - в теории надо лишь описать имеющиеся бизнес-объекты и бизнес-превила в метаданных и получить работающую систему (а заодно и бизнес-модель системы) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2005, 10:29 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
АрхитекторИ часто люди, хорошо разбирающиеся в такого вида программировании вообще не видели СУБД в глаза, зато отлично знают, как писать ОО программы на С++. Я уж молчал, но за меня сказали Я в своей жизни много видел писателей звеньев, своих драйверов доступа к СУБД, гридов, и прочего ... и всегда и везде это были Сишники, сто процентно уверенные, что легче написать самому, чем разбираться с чужим ... особенно с непонятным каким то SQL. У нас в дочерней конторе тоже такие есть, причем на очень крупном проекте - свои классы, свой драйвер доступа к Oracle, свой грид на его базе, даже свой аналитический отчетник - уххх, без слез смотреть нельзя, как народ умудряется все свое основное время вместо того, чтобы проектировать бизнес-логику с багами и доработками в своих "движках" сражается. За год, что они у нас работают, можно сказать они почти на 50% сделали таки чего то иногда работающее. Мы же с февраля успели на связке ASA-PB-FR накатать, отработать и запустить в эксплуатацию 2 полноценных немаленьких проекта (один как распределенный на базе оффлайн репликации с кол-вом узлов), основанных на базе нашей платформы, представляющей из себя схему таблиц и ХП в БД, классы и формы в PB и COM-сервер на базе FR. Причем их сопровождение занимает минимум времени, а дальнейшее развитие нашей платформы в новых проектах элементарно портируется на существующие проекты через систему контроля версий скриптов БД, распостранение базовых иерархических библиотек PB для клиентских частей и новых версий COM-сервера отчетника. АрхитекторМы с вами работаем на разных рынках - я на тиражируемых продуктах, вы, скорее всего, создаете продукт для "внутреннего использования". Я работаю на рынке тиражируемых продуктов и никакого неудобства неощущаю. И отсутствие или плавающее ТЗ является обычной нормой. К примеру последний проект под моим руководством как раз писался на крупный холдинг, в котором специалисты не просто не имели ТЗ, но и вообще даже сами не знали, как делать правильно (задача была портировать и адаптировать определенную область учета и финансирования с международных стандартов, не имеющую пока аналогов и опыта в РФ). Фактически этот проект был впервую очередь не сколько учетным, сколько инструментом для проведений исследований различных моделей работы и учета на предприятиях клиента, которых ко всему прочему был не один десяток, располагались они далеко не в Москве и в лучшем случае доступ к интернет осуществлялся по 64к. За 3 месяца этот инструмент был реализован, с возможностью аналитикам рисовать на деревьях различные схемы учета движения финансов, вешать различные правила заполнения документов и мониторинга финансовых потоков (правила расширяемые, представлены как SQL-батчи, вешаются на ноды с возможностью их наследования дочерними нодами и выполняются в БД), вешать различные схемы учета на разные предприятия и в разных учетных периодах, а так же вести централизованное управление, администрирование и апгрейт всех РСУБД удаленных узлов, вплоть до удаленного выполнения SQL-скриптов на указанных узлах, с контролем состояния их выполнения. Было бы очень забавно посмотреть, как за такое время, можно было бы такую же функциональность, да еще и работающую, на принципах ООП сделать. АрхитекторЛюдей, работавших с СУБД - в разы меньше. Обучать их работать с Enterprise manager, системе наименования ХП, гда пойти и почитать документацию по описанию ХП и ее параметрам - дольше. И стоят они дороже. Странно, не знал, что есть еще кодеры, не умеющие писать SELECT * FROM Table/StoredProc(). Не путайте проектировщика БД и кодера, от которого требуется знание стандартного ANSI SQL. Никто кодеру и не позволит писать сложные запросы или же тяжелые ХП - даже если он и напишет, все это будет дано на приемку и тестирование проектировщику БД. АрхитекторЯ не говорю, что это хороший способ разработки и так нужно делать - но это конкретный реальный пример зачем может понадобиться набрать "кодеров" на короткий срок. Ну это тогда к индусам - тут можно сколько угодно кодеров за короткий срок набрать, которые очень быстро на клавишы по макетам жать умеют. Вот только чем больше кодер "творит" кода, тем сложнее его контролировать и тестировать, тем больше ошибок в нем. Логика по моему понятная. АрхитекторА есть возможность средствами СУБД запретить вызывать ХП напрямую из клиента, но при этом оставить возможность вызвать ее из другой ХП, которая напрямую этим клиентов вызывается ( имеется в виду аналог protected/private метода в ООП)? Не знание элементарных основ РСУБД не дает права рассуждать о недостатках РСУБД и преимуществах ООП, не правда ли ? Забавно, что о недостатках ООП обычно начинают рассказывать, сделав (или еще чаще не сделав) реально работающие проекты, когда эйфория от легкости проектирования на ООП схемы данных малость проходит и настают тяжелые будни расширения функциональности проекта, отловки багов в самописных движках, прикручивания стандартных отчетников, борьбой с проседанием РСУБД и собственного приложения на больших нагрузках и прочих, прочих радостей жизни, коими не обделены все разработчики своих ООП расширений на базе РСУБД. АрхитекторЕсли вы не видите для себя выгоды в использовании ООП - ради бога, не используйте. Люди здесь рассказывают об используемых технологиях не потому что хотят Вам доказать, что их система круче и быстрее. Просто кто-то нашел удобный для себя способ выражения мыслей, создания модели и обсуждения ее с аналитиками и другими разработчиками. Если вы не представляете/не хотите представлять как можно модель системы выразить в объектах через свойства и методы - это не значит, что остальные тоже этого не могут и не должны делать. Полностью согласен, каждая технология имеет права на жизнь. Но с одним условием - нечего тогда рассказывать, что ООП выгодней, чем классическое приложение клиент-сервер, особенно когда 90% из рассказывающих это, на моей практике, как минимум сами не делали больших рабочих проектов на этой связке и не могут похвастаться глубокими познаниями какого либо РСУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2005, 10:48 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Коллеги, можно ли вернуться и ответам на исходный вопрос. Если кого-то не интересуют многозвенки, как их строить - а все задачи на сервер данных - флаг им в руки. Меня же интересует именно вопрос многозвенок, серверов приложений и распределенных вычислений. Можно ли продолжить в этом направлении? С уважением, Владимир. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2005, 12:04 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Если мы хотим обрабатывать данные, поступающие с компьютеризованного промышленного оборудования, то дополнительно звено просто необходимо, это OPC-сервер. Здесь мы столкнемся и с распределенностью вычислений, и с вопросами сохранения производительности(время реакции), да и с базами данных тоже. Ну, а поскольку оборудования может быть много и оно рассредоточено, то без звеньев никуда. Считаю,что нужно просто решать конкретную задачу,максимально просто и надежно. Но в данном случае без доп.звеньев обойтись проблематично. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2005, 12:18 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
"ВМоисеев" <nospam@sql.ru> wrote in message news:1978363@sql.ru... Коллеги, можно ли вернуться и ответам на исходный вопрос. Если кого-то не интересуют многозвенки, как их строить - а все задачи на сервер данных - флаг им в руки. Меня же интересует именно вопрос многозвенок, серверов приложений и распределенных вычислений. Можно ли продолжить в этом направлении? С уважением, Владимир. Тема Ответить ================================ а исходный вопрос был не "многозвенка" т.е. не ..................... Если мы хотим обрабатывать данные, поступающие с компьютеризованного промышленного оборудования, то дополнительно звено просто необходимо, это OPC-сервер ......................... а "Создание сервера приложений" т.е. вынос логики работы системы (а не функции транспортировки или конвертации) с сервера БД или клиента в отдельное звено/сервер Posted via ActualForum NNTP Server 1.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2005, 13:11 |
|
|
start [/forum/topic.php?fid=33&msg=33329723&tid=1548944]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
106ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 280ms |
total: | 483ms |
0 / 0 |