|
|
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Old Nick, а мне просто познавательно, из скольки строк кода состоит ваше ядро(как понял из постов, ваялось на дельфях:)). И второй вопрос, насколько ваша система защищена от чужеродных атак(черный хакинг)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2007, 23:11 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
просто приходилось иметь дело с такими базами 1с например (ой не к добру будет помянут) как вы думаете зачем у них есть такое понятие как регистр? Не к добру.. :) Регистры в 1С (говорю только о v77) - следствие отсутсвия SQL-движка. На DBF приходится держать промежуточные итоги, ибо очень долго перелопачивать каждый раз полные таблицы DBF. Даже без дополнительных извращений с индексами регистр 1С можно заменить на таблицу актуальных итогов и вьюху по документам - работать будет в разы быстрее, чем РассчитатьРегистрыНа(НачДата)... при этом исчезает необходимость "проведения" как переписывание информации из таблиц документа в таблицы регистра и необходимость пересчета итогов при "открытии периода". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 05:02 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
bug_scorobey Old NickНу ребята, ну вы чего такие трудные? Ну нахрена я непрограммисту это подсовывать буду? Это именно для программистов. Это аналог Дельфи с палитрой компонент, только для клиент-сервера. Инструмент имеет набор базовых классов и позволяет расширять палитру. А каждый класс это совокупность структур, процедур в базе и форм на клиенте. 1.еще раз у вас не все так хорошо как кажется ибо плодится неимоверная куча табиц (мне так каца ) если нет тогда действительно интересно 2. отсутствует контроль целосности данных 3.раз плодится куча таблиц то автоматом снеижается производительность но тем не менее при правильном разруливании ситуации продукт интересн и нужен он как и 1с для конфигурирования (заточку ) быструюу под БП предприятия постарайтесь ответит по 3 пунктам Отвечаю 1. Таблицы плодятся так же как при O/R маппинге. Это тот же маппинг, только на сервере. Опишу конкретнее Базовый класс Object - это таблица TObject и вьюха на ней VObject Таблица Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Вьюха Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. на вьюхе висят instead of триггера, которые и пишут в таблицы. Доступа у пользователей к таблицам нет, только к вьюхам Если мы создаём класс наследник базового (а мы всегда его наследуем от базового, потому что как в паскале, всё наследуется от базового), то создаётся ещё одна таблица, в которой находятся атрибуты класса наследника, например класс Menu, наследуется от Object Код: plaintext 1. 2. 3. 4. 5. У меню есть наименование, которой хранится в поле TObject.Name и код - TObject.Ext Появлются поля Пользователь, Действие, Объект. Поле пользователь определяет, кто будет видеть это меню, объект и действие думаю объяснять не надо. Так вот, процедурой compile создается таблица TMenu Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Если дополнительных атрибутов нет, то таблица с одним единственным полем OID int, потом объясню зачем пустую таблицу создавать Вьюха Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Если у класса Menu будут наследники, то они тоже попадут в эту вьюху. К тому же выборка начинается с таблицы TMenu, в которой записей будет меньше чем в родительской, значит выборка будет быстрее, если для класса без атрибутов не создавать таблицу, то выборка будет сложнее, так как просто ограничить полем класс не удастся, наследники не попадут. Если у класса будет подтаблица (многострочная часть в 1С), то это ещё одна таблица, в которой первым полем будет OID int, оно же будет первым полем в кластерном ключе. Не буду спорить о том много ли это таблиц, для меня ответ очевиден и выработан он опытом. 2. Контроль целостности данных осуществляется специальными хранимыми процедурами, которые создаются автоматически по метаданным. И поскольку удаление объектов возможно только через вьюхи, то механизм не обойти. Работает надёжно и рукается вразумительно. Можно даже по-русски. 3. Производительность зависит на 95% от архитектуры, а никак не от количества таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 17:33 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
Codenamed Автору топика могу посоветовать посмотреть на тулзы для генерации кода, типа CodeSmith. Для генерирования хранимых процедур и кода, добавляющего метаданные - самое то. Код: plaintext Да вроде как и не зачем. Всё уже сделал руками. И таблицы создаются и вьюхи и триггеры и процедуры и даже описание форм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 17:37 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
FasterHarder Код: plaintext Old Nick, а мне просто познавательно, из скольки строк кода состоит ваше ядро(как понял из постов, ваялось на дельфях:)). И второй вопрос, насколько ваша система защищена от чужеродных атак(черный хакинг)? Насчёт строчек кода - считать не буду, но немного. Перечислю компоненты TDBOManager - гвоздь программы TDBClass - описывает класс базы данных на клиенте TDBOAction - описывает действие объекта базы данных (метод объекта БД) TDBObject - экземпляр класса TDBODataSet - работает с набором данных, отсоединённый датасет, структуру вытаскивает из метаданных, например в property TableName пишем Menu и он находит описание структуры и хранимые процедуры для редактирования TDBObjectField - наследник TField представляет собой ссылку на объект БД, может инициализировать TDBObject по ссылке Теперь контролы: TDBOEdit - панель для редактирования одной записи TDBODataSet, используется в основном в шапке формы редактирования объекта. Хотя ещё и для задания параметров для печати или поиска. как TObjectInspector, только симпатичнее, использует TLabel, TDBEdit, TDBCheckBox, TDBDateEdit и т.д. TDBOGrid - что делает понятно, кроме этого ещё показывает поля типа TDBObjectField и умеет их обрабатывать TDBOTree - дерево объектов БД TDBOForm - невизуальная компонента для формитрования автоформы. Помимо компонент есть главная форма, иерархия базовых форм и несколько кастомных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 17:50 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
авторНе буду спорить о том много ли это таблиц.... Кстати, согласен. Собс-но речь о то и идет, что бы скрыть некую сложность, которую руками трудно сделать а головой удержать. Но в целом - ИМХО полумеры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 18:20 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
bug_scorobey да вопрос не однозначный Тогда зачем выдавать такое спорное утверждение без указаний конкретики? Вот потому и "гы" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 18:55 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
Являюсь ведущим разработчиком/идеологом сходного фреймворка. Притом создавшим фирму и продающем решения на нем. Что-же, действительно программисты не любят работать в чужой среде, это сперва, но как талько выясняется что он позволяет уменьшить время на разработку, охотно втягиваются. Наш отличается тем что он представляет собой базовый набор классов для IDE, также с ней интегрируется, т.е. добавляются мастера и доп.меню в среде. Основой для создания форм документов являются базовые классы, хотя их использование не обязательно. Для кастомизации интегрировали скриптовый язык, хотя я на это смотрел сквозь пальцы, но как в итоге оказалось зря. Некоторые программисты делали на нем весьма интересные вещи. Генератор сущностей БД ограничили слепком базы и переносом его на другой сервер, где надо проапгрейдить базу. Безопасность рулится с помощью объединенной системы безопасности, т.е. привязка идет к ролям безопасности БД, права на таблицы и т.п. задаются стандартными средствами. Идеологию "все на ХП или вью" не применяем, делаем как можно проще(в рамках допустимого и безопасности). Последним определяющим решением было забить на универсальность и применимость ко всем задачам в сторону основной проблемно-ориентированной области. Получился фреймворк для среды в котором удобно реализовывать определенный круг задач. Поставляем его вместе с исходниками, деньги берем только за сопровождение/внедрение. Мое мнение таково: объектно-ориентированность фреймворка обычно недостаточно хороша, чтобы заменить среду. Но для определенного круга задач функционала может и хватить. Тут вообщем все зависит от отрасли. Какие прикладные решения, кстати, созданы на базе вашего ФВ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 19:29 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
Зря забили на объектность системы. Именно с неё у меня всё и началось. Как оказалось главное правильно определить базовый набор классов, а дальше как по маслу. Мною на данном ядре сделан документооборот, простенький пока, развивается. До меня делали оперативный учёт, довольно мощный с распределённой базой в шести городах, с поддержкой ОЛАП, но без метаданных, прототип моей системы. Еще один человек на ядре, которое вместе начинали сделал для ВМФ учебную базу - тренажёр. Там правда база постольку поскольку, больше на графику упор. Но это как раз и доказывает универсальность ядра. Я даже придумать не могу задачу, для которой ядро не подошло бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 20:53 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
Причём для всех вышеперечисленных задач базовый набор классов один и тот же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 20:55 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
Old NickЗря забили на объектность системы. Именно с неё у меня всё и началось. Как оказалось главное правильно определить базовый набор классов, а дальше как по маслу.Мы не забили. Есть базовые классы документа, справочника, журнала и т.п. Все это бесспорно хорошо, но мало. Поддержка ОЛАП тоже имеется, хотя к серьезным плюсам я ее не отношу. Я это говорю для сравнения. Т.е. мы позиционируем свою платформу как основу для создания приложений в своей отраслевой нише, т.е. наш набор сервисов позволяет написать любую учетную систему на их базе, но так как разработчикам наша(ваша и десяток аналогичных уже проскакивавших по этому форуму) нафиг не нужна, а клиентам вообще пофигу как сделана ваша программа, я думаю есть смысл сделать на прикладной уклон. Так вы все-таки конкретизируйте, что кроме документооборота(кстати распишите и его) сделано на вашей платформе? Каковы объемы, кол-во пользователей и т.п. П.С.Как пример платформы приведу Искра, сравните свою с ней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 01:59 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
Old Nick, а вы пробовали тестить производительность и масштабируемость системы, построенной на базе вашего ядра? Это в целом. В частности же, как себя показала система обеспечения контроля целостности по сравнению со стандартными механизмами СУБД? Я вижу несколько моментов, которые отрицательно могут сказаться на сабж. 1. Кластерные индексы повсеместно. В системах документооборота, ориентированных на частые запись/редактирование будут тормозить, достигнув какого-то предела. Или мне просто так показалось после ваших примеров. 2. instead of триггера на вьюхах. 3. create view VMenu with view_metadata с множеством одновременных джойнов на TObject. Если подобные view используются повсеместно (или часто, или выбирают много данных, или не дай бог все вместе), то с ростом объема базы будут существвенные тормоза. Ведь найдется мало задач, которые позволяют заменять вашим подходом проблемы производительности. Кстати, вам как автору, есть за что покритиковать собственное творение? Какие минусы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 17:26 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
Расскажите о языке запросов к объектам хранения; например для загрузки/отображения значений коллекций объектов по заданным условиям (если таковой у Вас есть). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2007, 22:22 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
Для любого класса сформирована вьюха, где перечислены все его поля, плюс для каждого объектного поля добавлены его имя и тип. Поэтому список выбирается обычным селектом и принимает его компонента TDBODataSet, в этой компоненте этот список хранится в виде обычного датасета. Единственное отличие это поле типа TDBObjectField, это класс наследник TField, которые является fkCalculated и содержит в себе ссылки на три поля, описывающие объектную ссылку. OIDField, NameField и ClassField. То есть. Ни одна объектная ссылка не инициализирует объект целиком, пока к ней не обратишься. У компоненты TDBObjectField есть свойство DBObject: TDBObject, оно и предназначено для того чтобы инициализировать объект, получить его методы, его контекстное меню, его формы и т.д. Только при обращении к этому свойству из базы вытягиваются остальные атрибуты объекта, если они нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2007, 10:34 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
Информация к размышлению. Так у меня выглядит код разработки класса AUser, это базовый класс, от которого наследуется Пользователь и Роль. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2007, 12:03 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
авторНашел одного человека, владелец софтверной фирмы. Уже год договариваемся. Нутром чует, что ему от этого польза будет, да всё равно боится. Он не боится. Он опасается, потому как авторЯ лучше буду голодать, но не подарю - психология упертого кодера, либо другого неадеквата. Сколько встречал ребят с интересными разработками - каждый считает свою систему круче всех вместе взятых. А то, что продукт еще нужно продать клиенту (причем не в убыток) - мозгов почему-то не хватает. Никто не будет пахать с утра до ночи за умозрительные бенефиты. Не только вы "пашете" (как это ни странно ;) ). Продавать и суппортить клиента - это тоже тяжелый труд. Бизнес, который расчитывает на долгую жизнь, руководствуется несколько другими стимулами. Вопрос в том, стоит ли вам это объяснять - набивайте шишки сами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2007, 15:53 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
Гы... Продавать надо не эту хрень, она и в подарок никому не нужна. Продавать надо проекты, на ней сделанные, экономя время и деньги на разработке, и получая через это конкурентное преимущество. Или идти продаваться самому в софтверную контору, которая пишет на заказ, архитектором с опытом. Тогда можете внедрить то, что у вас есть, или повторить путь разработки на той платформе, на которой работодатель работает. Ну не тянет это на полноценное средство разработки, которое можно продать. И, как было отмечено выше, все это еще сопровождать надо, на вопросы клиентов отвечать днем и ночью и пр. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2007, 21:00 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
CodenamedГы... Продавать надо не эту хрень, она и в подарок никому не нужна. Продавать надо проекты, на ней сделанные, экономя время и деньги на разработке, и получая через это конкурентное преимущество. Или идти продаваться самому в софтверную контору, которая пишет на заказ, архитектором с опытом. Тогда можете внедрить то, что у вас есть, или повторить путь разработки на той платформе, на которой работодатель работает. Ну не тянет это на полноценное средство разработки, которое можно продать. И, как было отмечено выше, все это еще сопровождать надо, на вопросы клиентов отвечать днем и ночью и пр.Именно это я и говорил. Только создавая такую контору мы знали на что шли и упор делали сразу на проекты, а не систему. Утверждение, что это не полноценная среда тоже верно. Ну не поверю я что эта программа дотянет до возможностей Дельфи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2007, 15:48 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
Old NickДля любого класса сформирована вьюха, где перечислены все его поля, плюс для каждого объектного поля добавлены его имя и тип. Поэтому список выбирается обычным селектом и принимает его компонента TDBODataSet, в этой компоненте этот список хранится в виде обычного датасета. Единственное отличие это поле типа TDBObjectField, это класс наследник TField, которые является fkCalculated и содержит в себе ссылки на три поля, описывающие объектную ссылку. OIDField, NameField и ClassField. То есть. Ни одна объектная ссылка не инициализирует объект целиком, пока к ней не обратишься. У компоненты TDBObjectField есть свойство DBObject: TDBObject, оно и предназначено для того чтобы инициализировать объект, получить его методы, его контекстное меню, его формы и т.д. Только при обращении к этому свойству из базы вытягиваются остальные атрибуты объекта, если они нужны. 1. Выходт, любимый режим моих юзеров, под названием "хочу скроллить очень длинные и широкие списки", здесь не очень приветствуется? 2. Не очень тут объектное ядро, если формирование коллекций выполняется обычным селектом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2007, 00:50 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
Работа с БД сегодня самый архаичный и отсталый аспект информационных технологий,имхо. Давно пора программам работать с массивами данных на более интеллектуальном прикладном уровне. Сегодняшний уровень напоминает мне бухгалтерскую программу, работающую с диском через контроллер конкретного винчестера используя чтение/запись по абсолютным секторам этого диска. друзья зовут меня Красавчег Сёка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2007, 01:04 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
А со словом " свершилось ", поосторожнее, оно настраивает на революцию! друзья зовут меня Красавчег Сёка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2007, 01:08 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
Сиоко АсахараДавно пора программам работать с массивами данных на более интеллектуальном прикладном уровне. А что такое "массив данных" в вашем понимании и как с ним можно работать "на более интеллектуальном прикладном уровне" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2007, 09:47 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
Добавлю свои пять копеек. Являюсь видущим програмером, который сопровождает объектный фреймворк. Идеология очень похожа на то, что описано выше. Могу сказать на своем опыте, для малых и средних задач фреймворки такого типа подходят. Для крупных ну мягко говоря не приемлимы, поскольку накладные расходы возрастают в сотни раз. И мнимая простота оборачивается кашмаром в разработке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2007, 11:28 |
|
||
|
Люди, свершилось я создал объектное ядро 2
|
|||
|---|---|---|---|
|
#18+
MumytrollЯвляюсь в и дущим програ м ером ... тынц Хто здесь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2007, 11:51 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34781872&tid=1544163]: |
0ms |
get settings: |
4ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
148ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 418ms |

| 0 / 0 |
