Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Спешу поделиться своей радостью :-) Пишу на Дельфи и МССкуль На сервере класс представлен таблицей и четырьмя процедурами Open, Create, Save, Delete имя хранимой процедуры состоит из наименования класса и вышеперечисленного, например, DBOClient_Open На клиенте написал компонент, TDBObject, имеет методы: Retrieve - вытаскивает все атрибуты объекта, то есть все поля всех таблиц, принадлежащих классу. Работает так: есть специальная процедура, которая по параметру @Class вытаскивает все процедуры с окончанием Open и началом имени класса, начиная от базового до текущего. Затем получив список процедур. открываем их все по идентификатору объекта @OID Можно получить любой атрибут, написав так DBObject['Name'], можно изменить значения. Далее есть метод Save Он работает аналогично, вытаскиваются все процедуры сохранения объекта, названия параметров соответствуют названиям полей процедур Open, заполняются автоматически. и вызывается ExecProc Для подчиненных таблиц объекта все очень похоже: Названия процедур формируются так DBOMeasure_Rates_Open и DBOMeasure_Rates_Save. Имеется компонент унаследованный от хранимой процедуры, который кешированно позволяет менять данные, а при сохранении для каждой записи вызывает процедуру Save, заполняя параметры значениями из полей датасета. К подчиненной таблице можно обратиться так: DBObject['Rates'] В форме все выглядит так: У формы есть методы Init и Save В методе Init пишем begin inherited; edtMeasure.OID := DBObject['MeasureOID']; dbgRates.DataSet := DBObject['Rates']; end; В методе Save: begin inherited; DBObject['MeasureOID'] := edtMeasure.OID; //Rates назад присваивать не надо так как это датасет и данные меняются прямо в нем. end; в базовой форме после вызова метода Save, вызывается DBObject.Save; Для подчиненных таблиц у меня используется грид. Если постараться и написать DBAware контролы для атрибутов объекта, то можно будет форму на лету формировать. Так что вся разработка останется только на сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2004, 02:32 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
кто во што :-) ну, ну... рад за тебя :-) смотри 1с не сделай. не по функциональности а по производительности :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2004, 02:57 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Думаю в периоды начинаний в программировании все подходили к этму вопросу, но он оставался нерешенным, а для такой вещи, как формирование форм на лету, можно поставить отдельный сервер с минимальным временем откоика(mysql к примеру), и останется оптимизировать код клиента для формирования форм. А для тех кто над такими вещами посмеивается, думается, что у самих не получилось, теперь и посмеиваются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2004, 10:08 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Такое ощущение, что каждый день по нескольку таких систем пишется :-) Просмотров много, а ответов всего два. alex_k 1С по производительности может получится, если люди начнут логику писать на клиенте. Я сделал компонент только для того чтобы на форме его удобно было использовать (вытащить объект, изменить, сохранить). Кроме того этот комонент можно будет превратить в COM-объект. И тогда пишите клиента на чем хотите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2004, 12:18 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
если интересно, попробуй покопать типы данных в юконе, эта информация может быть полезна. кроме того, почему бы не воспользоваться какой-нить объектной базой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2004, 12:34 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
AAron Работать с реляционными данными гораздо удобнее в реляционной базе. И работать быстрее будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2004, 12:40 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Собираюсь в дальнейшем переписать на дотНет. И базу использовать Юкон ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2004, 12:45 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
А нигде не было написано, что данне реляционные. Скорее можно было бы ожидать объектные данные (ведь происходит сохранение объектов). Кроме того, если один из атрибутов объекта представляет собой объект, его тоже нужно сохранять как объект. Ну и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2004, 13:50 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
База нужна ведь не только для того чтобы хранить объекты. Хранить их естественно гораздо удобнее в объектной базе, но вот обрабатывать списки данных эффективно можно только в реляционной, поэтому в базе у меня все реляционно, а на клиенте объектно. Самая эффективная связка. Может конечно разработчику и не очень легко будет в этом разбираться, но пусть тогда, те кто этого не может, катяться куда подальше. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2004, 14:14 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
автор но пусть тогда, те кто этого не может А потом рождаются такие фразы "А CBoss его знает". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2004, 09:56 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Советую воспользоваться поиском по форуму. Ключевое слово "междумордие". Там есть куча мнений по подобному вопросу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2004, 17:56 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
to Old Nick Такое ощущение, что каждый день по нескольку таких систем пишется :-) Просмотров много, а ответов всего два. ___________________________ Чтобы паства возрадовалась, нужно чтобы каждый что-то с этого поимел. Так что: Постановка задачи - идея, план работ - конкретика, прототип - описание, полученные результаты - сравнение с существующими решениями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2004, 20:12 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Что оно хоть делает-то, это объектное ядро? Ежели станете объяснять, то пожалуйста, по-простому, на пальцах. Что здесь объект (они ведь тоже разные бывают), куда мы хотим его засунуть, как это делается (только не надо названий методов и переменных... все равно здесь это никто не поймет) ну и тд, и тп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2004, 20:58 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Попробую немного описать: Есть метод Retrieve(OID: Integer), который и вытаскивает все все данные. Вызывать его можно хоть где и хоть когда. Но в данный момент он вызывается из контекстного меню, и затем открывается форма. самое интересное, можно сделать так: var dbo: TDBObject; begin dbo := TDBObject.Create('DBObject'); --Абстрактный класс dbo.Retrieve(155); // Допустим это OID объекта класса документ DBOOrder в таком случает откроется только его наименование и FolderOID, что и нужно для открытия контекстного меню. Объект в этом случае будет ReadOnly. var dbo: TDBObject; begin dbo := TDBObject.Create('DBObject'); try dbo.Retrieve(155); // Допустим это OID объекта класса документ dbo.AssignPopup(FPopupMenu); finally dbo.Free; end; end; А форма открывается так: procedure TDBOMenuItem.Click; var dbo := TDBObject; begin dbo := TDBObject.Create(DBClass); dbo.Retrieve(OID); dbo.Execute(Method); // Формы в системе зарегистрированы для всех public методов, таких как Просмотр, Редактировать, Создать новый, Переместить, Удалить и т.д. Для наследников можно добавлять новые и перекрывать имеющиеся методы. В итого Execute по классу и методу находит нужный класс формы и создает экземпляр. Затем передается себя в свойство DBObject: TDBObject и вызывает метод Init; end; Объект удаляется по закрытию формы. Кроме того у объекта есть еще и private методы (Формы - это public). То есть: DBObject['Name'] := 'П%'; DBObject.StoredProc('Find').Open; if DBObject.StoredProc('Find').RecordCount = 1 then DBObject.Retrieve(DBObject.StoredProc('Find')['OID']); if DBObject.StoredProc('Find').RecordCount > 1 then DBObject.Execute('Find'); //Открывается форма со списком найденных объектов для выбора //конкретного (Это уже public) if DBObject.StoredProc('Find').RecordCount = 0 then ShowMessage('По вашему запросы объекты не найдены'); Так что задача программиста просто писать новые классы на серваке и регистрировать новые формы, например новый класс (Создадим клиента, унаследованного от базового класса DBObject. У базового класса есть наименование, там мы будем хранить ФИО, но нам нужен еще адрес): exec RegisterClass 'DBOClient', 'DBObject' create table Clients ( OID int not null, Address varchar(255), primary key clustered ( OID ) ) go create procedure DBOClient_Open @OID int as select * from Clients where OID = @OID go create procedure DBOClient_Create @OID int, @Address varchar(255) as insert Clients select @OID, @Address go create procedure DBOClient_Save @OID int, @Address varchar(255) as update Clients set Address = @Address where OID = @OID go create procedure DBOClient_Delete @OID int as delete Clients where OID = @OID go Вот и все. Все остальное знает система. Нужно только новую форму зарегистрировать, т.к. в базовой у нас нет поля для адреса: TfrmDBOClientEdit = class(TfrmDBObjectEdit) edtAddress: TEdit; public procedure Init; override; procedure Save; override; end; implementation procedure TfrmDBOClientEdit.Init; begin inherited; edtAddress.Text := DBObject['Address']; end; procedure TfrmDBOClientEdit.Save; begin inherited; DBObject['Address'] := edtAddress.Text; end; регистрируем форму в юнит-файле RegClasses процедурой RegisterClass('TfrmDBOClientEdit') Теперь можно создавать объекты класса DBOClient, нажав кнопку создать и выбрав класс. Или редактировать, щелкнув правой кнопкой на объекте в эксплорере (Это спец форма для списка объектов) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2004, 12:29 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
guest Постановка задачи - идея, минимизировать разработку приложений и исключить ошибки. план работ - конкретика, прототип - описание, полученные результаты - сравнение с существующими решениями Существующие решения либо имеют ограничения по функционалу (1С) либо низкую скорость работы (1С:) В моем ядре максимально используется реляционный механизм, при этом программист описывает сущности используя наследование, при этом сильное облегечение в разработке т.к. Не нужно повторяться с описанием одинаковых действий. Можно наращивать функционал никак не ущемляя имеющийся. Также нет ограничений по интерфейсу. Пишите формы какие хотите, наследуйте только от BaseForm или от форм базовых классов задача программиста регистрировать новые сущности и новые формы, не заботясь о том как они вызываются, как к ним идет обращение. Этим занимается ядро ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2004, 13:19 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Я так понял: Объект: Данные хранятся на сервере в базе (создаем руками), Методы на сервере в ХП (создаем руками), Создаем руками программный объект, который как-то связан с конкретными ХП. далее при обращении к методам объекта вызываются ХП этого объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2004, 15:52 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Guest Я так понял: Объект: Данные хранятся на сервере в базе (создаем руками), Методы на сервере в ХП (создаем руками), Создаем руками программный объект, который как-то связан с конкретными ХП. далее при обращении к методам объекта вызываются ХП этого объекта. Почти все правильно. На клиенте объект создавать не надо. Компонент по указанному классу полностью инкапсулирует в себе все данные сервера для заданного класса и идентификатора объекта. Можно провести аналогию с компонентом, например, TADOTable. Указываешь TableName и все поля вытаскиваются. Мой компонент отличается от TADOTable также как Class отличается от record (struct) (добавилось наследование и методы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2004, 16:00 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Если не в лм, посмотрите типизированные таблицы и их методы в DB2 или ORACLE. Похоже это уже сделано более качественно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2004, 16:11 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Там наследования нет. Я уже давно все проштудировал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2004, 16:39 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
наследования или полиморфизма? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2004, 17:12 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
да ни того, ни другого толком нет. В Оракле например, если создать тип объект унаследованный, то создать таблицу по нему нельзя. Как это называется. Нахрена тогда наследование? Уж лучше на джаве тогда писать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2004, 17:14 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Я сам толком в этом не разбирался, но проде все эти объектные расширения работать должны. Что точно помню, так это в ДБ2 нельзя методы объектов перегружать... Да и пока что небыло необходимости заниматься объектной моделью. Реляционная вполне устраивала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2004, 18:39 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Меня реляционная модель тоже вполне устраивает. Главное в программировании вообще и в БД и ООП - это нормализация данных. Если каждая сущность лежит в своей таблице или классе то все очень легко решается. Но реляционной модели не хватает наследования, хотя его можно легко держать в голове. Но для этого нужно быть опытным программистом. Моей целью было избавить прикладного разработчика от реализации связей. Любой хорошо знающий ООП, сможет быстро разобраться в моей системе и быстро начать решать прикладные задачи, причем любые. Сейчас пишу производство. Хотелось бы описать систему очень подробно, но не люблю я это писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2004, 19:06 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Хотелось бы описать систему очень подробно, но не люблю я это писать. _____________________________ Ну а посмотреть (пощупать) на это объектное ядро как нибудь можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2004, 21:28 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Guest Где живешь? Если в СПБ, то нет проблем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2004, 22:25 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Где живешь? Если в СПБ, то нет проблем ___________________________ До столиц "только самолетом можно долететь" (песня) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2004, 15:00 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Сейчас не стану выкладывать. Допишу прикладное приложение, потом уже обкатанное ядро выложу на просмотр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2004, 15:28 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
В таких "объектных" расширениях (интерфейсах) есть по крайней мере две проблемы: 1) Обращение к SQL серверу возвращает таблицу, значит для выборки всех полей объекта необходимо многократно обращаться к серверу. 2) Применяется (однопользовательский\локальные данные) подход, (многопользовательский\удаленные данные) имеет большие накладные расходы, и работать с ним нужно по другому - (а) более экономно к запросам, (б) данные на сервере могут меняться другими пользователями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2004, 13:46 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
В таких "объектных" расширениях (интерфейсах) есть по крайней мере две проблемы: 3) И главное - вопрос масштабирования таких систем - для каких систем это праедназначено ? - явно не для малых, где простые таблицы проще, - для больших систем - сложность приведет к потере контроля над обменом с сервером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2004, 18:41 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Наверняка подобная идея посещала 99% разработчиков баз данных. Однако в поцессе ее реализации выясняется, что подобная схема годится только для работы с таблица-справочниками, создание которых по моим прикидкам занимает не более 1 процента времени разработки. Ну и стоит ли огород городить? Написание 3 хп на выборку, обновление | вставку и удаление; и одной формы для выборки-обновления-вставки занимает минут 15-20. А для создания сложных выборок по соединения нескольких таблиц такая схема абсолютно бесполезна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2004, 23:37 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Привет, а как в вашей объектной системе реализованы вложенные объекты? (например: приходная накладная имеет ссылку на контрагента...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2004, 04:33 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
>1) Обращение к SQL серверу возвращает таблицу, значит для выборки всех >полей объекта необходимо многократно обращаться к серверу. Это если нужно многократно обращаться к серверу. >2) Применяется (однопользовательский\локальные данные) подход, >(многопользовательский\удаленные данные) имеет большие накладные >расходы, и работать с ним нужно по другому - (а) более экономно к >запросам, (б) данные на сервере могут меняться другими пользователями. Моя система сделана на основе системы Онтарио. Я ее расширил, хотя и некоторые вещи переписал. Но существенного изменения нет, просто несколько автоматизировал разработку. Так вот 1. Количество объектов 500 000 записей 2. Количество прав объектов 2 000 000 записей 3. Количество записей в регистре проводок. 8 000 000 4. Таблиц всего 300 штук. Классов чуть больше 100. Процедур 3000 штук. 5. Количество пользователей ~ 50. Это на одной базе. А все баз 6 штук в разных регионах страны. Репликация по каналу интернет идет каждые 2 минуты. Моя система в худшем случае понизит производительность на 20% из-за вытаскивания метаданных перед данными. >А для создания сложных выборок по соединения нескольких таблиц такая >схема абсолютно бесполезна. Сложные выборки и простые выборки делаются только на реляционном языке, поэтому нет никаких ограничений и сложностей. Для примера приведу код вытаскивания вложенного датасета для документа. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Объекты на клиенте, представлены в виде прокси, т.е. только то что нужно для их идентификации. Это наименование, чтобы показывать в контролах, класс чтобы знать какие метаданные вытаскивать и идентификатор (понятно зачем). >Привет, а как в вашей объектной системе реализованы вложенные объекты? >(например: приходная накладная имеет ссылку на контрагента...) Выше привел пример датасета (многострочная часть документа). Чтобы открыть объект учета для просмотра, пишем: var dbo: TDBObject; begin dbo := TDBObject.Create(DBObject.DataSet['Things'].Field['ThingClass'].AsString); dbo.Retrieve(DBObject.DataSet['Things'].Field['ThingOID'].AsInteger); dbo.Execute('View'); end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2004, 11:34 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Набросал доку по своей системе. Кому интересно присылайте мыло, отвечу всем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2004, 19:25 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Подход хороший, а главное рабочий. Мы его почти 10 лет используем с MS SQL 6.0 http://www.ivn.newmail.ru/ultima3.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2004, 00:04 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Знаю я Ультиму :-) Ваши траблы я повторять не стал. Привет Сергею Тарасову. Я его систему развиваю. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2004, 00:46 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Оригинально и красиво решил проблему ссылочной целостности в своей системе. Раньше на каждое поле, являющееся ссылкой на объект, нужно было писать процедуру типа DBODoc_D_DBOState, которую вызывал специальный механизм при удалении объекта, это было очень неудобно, так как нельзя было забывать писать для каждого такого поля процедуру. Да и само написание тоже минус, т.к. приводит к затратам времени. Сделал все через метаданные. При регистрации класса в базе добавляется пользовательский тип основанный на int и имеющий название аналогичное классу, например DBODoc, теперь скрипт создания таблицы документов выглядит так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. теперь при удалении объекта "Состояние документа" можно по метаданным найти все таблицы где есть поля этого класса и его наследников, проверить есть ли в этих полях ссылка на удаляемый объект и если есть, то по типу поля OID взять описание класса и ругнуться что в данном объекте есть ссылка на удаляемый объект и удаление отменяется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 16:12 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
мне интересно. если возможно, вышли на del_nero at pisem.net ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 14:09 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Еще кое-что на тему на сайте dbobjects.boom.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 14:43 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Выложил исходники на сайте http://dbobjects.boom.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2004, 18:43 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
2 Old Nick >В Оракле например, если создать тип объект унаследованный, то создать таблицу по нему > нельзя. Как это называется. Нахрена тогда наследование? Уж лучше на джаве тогда писать в Oracle c 9.2 нормальное наследование и отличный полиморфизм. И таблицу можно по унаследованному объекту создавать и методы наследуются и прекрасно работают. Более того, имеет место реализация расширения и сужения объектных типов. И т.д. и т.п. Только множественного наследования нет, но это и к лучшему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 01:19 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Ну кое-какие ограничения, т.е. "невозможности" в работе с объектными типами Oracle 9i остаются: http://www.sql.ru/forum/actualsearch.aspx?search=%EA%EE%ED%F1%F2%F0%F3%EA%F2%EE%F0&a=Denis+Popov&ma=1&bid=3&dt=-1&s=1&so=1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 11:17 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Ущербный какой-то этот Оракл. Я знал про объекты в нем, вернее про то как они там реализованы, поэтому и не стал его использовать. Лучше взять чистую реляционную СУБД и сделать объект на MIDDLE WARE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 12:06 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old Nick Чем лучше то? Тем что огромное количество ресурсов тратится на перемещение данных между БД и app server'ом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 14:32 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Это большая ошибка, когда проектируют так что данными манипулирует AppServer. Он должен предоставлять интерфейс клиенту и через него манипулировать методами. А данные вытаскивать только в том случае, если их клиент запрашивает для отображения или изменения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 15:08 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
2 Old Nick решил посмотреть: описания не скачиваются, а что скачивается -не распаковывается поэтому, если не лень, поясните еще раз на пальцах: как я понял: Есть конструктор объектов, которые хранятся на Сервере Клиент на Дельфи : создаем TDBObject, связываем с хранилищем на Сервере и имеем форму для редактирования данных и нарисуйте схему, все-таки коммерческий продукт:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 20:01 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
и что в итоге? Hibernate? которому пофиг какая база, и для которого есть Middlegen чтобы из существующей структуры сделать XML файлы с описательными метаданными, с кешированием и работой в кластере, плюс практически продакшн стандарт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2004, 00:35 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old Nick Пока это только слова. А хотелось бы более предметно. Например, есть класс MyClass с атрибутами Attr1,.. AtrN и операциями. Что в данном случае будет представлять ваш DBObject? Я так понимаю что-то типа такого Код: plaintext 1. 2. 3. 4. Операций я так понимаю не будет? Или они будут сделаны через какой-то контейнер для TStoredProc?Ну и почему такую конструкцию легче держать на клиенте чем на сервере (для Oracle >=9.2). Ведь по-крайней мере вашей БД не всегда можно будет воспользоваться напрямую (в РБД нет полисорфизма)! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2004, 10:07 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Люди, вы заложники своих стереотипов. Данными манипулировать должны только хранимые процедуры или SQL. А компонент на среднем звене должен представлять собой обертку вокруг разрозненного набора таблиц и процедур, чтобы превратить все это в целостную логическую единицу, представляющую собой сущность, которая может не только иметь данные и операции, но интерфейс для работы с ними. Мой компонент управляет хранимыми процедурами (серверная часть) и формами (клиентская часть). Сейчас я делаю подробное описание, как с помощью моего ядра сделать прикладное приложение. Это упрощенная клиентская база. Когда будет готово сообщу. Увидите как все просто. P.S. Я не понимаю зачем в некоторых архитектурах вытаскивают на среднее или клиентское звено таблицу, пересчитывают в ней какие-то данные пусть даже красиво с помощью классов сущностей и потом отправляют обратно на сервер. В какой роли тогда выступает сервер, в роли хранилища? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2004, 12:26 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Я перенес сайт на dbobjects.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2004, 12:28 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old Nick Данными манипулировать должны только хранимые процедуры или SQL. Я это не утверждал и не опровергал. Мои стереотипы говорят мне, что операции класса логично разделить на две группы - те что эффективно реализовать на сервере и те что на клиент :) А компонент на среднем звене должен представлять собой обертку вокруг разрозненного набора таблиц и процедур, чтобы превратить все это в целостную логическую единицу, представляющую собой сущность, которая может не только иметь данные и операции, но интерфейс для работы с ними. На мой взгляд эта фраза и отражает суть. Т.е. ваше "ядро" призвано объединить разрозненную информацию об объекте (т.е. его методы, некоторые связи и еще какую-то метаинформацию) в то с чем проще работать (даже не проще - а "целостнее" что-ли) Ничего неправильного в этом нет (imho это правильно) - другой вопрос, что и под объектно-ориентированным обычно понимается нечто другое - в частности, как я понял, ваша "целостная логическая единица" не обладает состоянием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2004, 12:38 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Компонент имеет публичные методы - это формы, приватные методы - это хранимые процедуры и атрибуты - это поля и таблицы. И по уникальному идентификатору может вытащить все поля и все таблицы для просмотра или редактирования. И если у какого-то объекта есть объектный атрибут определенного класса и данный объект вызывает его метод (например, накладная имеет атрибут вещь, у которого вызывает метод взять текущую цену), то в этот атрибут можно подставить ссылку на любой наследник этого класса (например, наследники вещи - это товар, услуга) и если у наследника перекрыт метод определения текущей цены, то будет вызван перекрытый метод. И для этого используется специальный механизм. А методом является обычная хранимая процедура. И все эти механизмы используются неявно, разработчик может и не подозревать о их наличии, хотя лучше это понимать :-) Вот вам и полиморфизм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2004, 13:05 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Решил поднять тему, так как кое что изменилось за последнее время. В данный момент совсем нет времени заниматься системой. Все остановилось на полушаге от готовности. 1. Почти что есть автоформы, достаточно посидеть один-два дня и все будет готово, но взять эти два дня негде. 2. Последнее время была реализована система разделения прав. 3.Была переписана система папок для хранения объектов, теперь объект может находится не в одной, как раньше а в нескольких папках, хоть во всех. 4.Была реализована система поиска объектов на основе метаданных. Еще хотелось бы реализовать: 1. Систему скриптования объектов (и классов в том числе) 2. Класс таблица - для создания и изменения таблиц через интерфейс с учетом версионности и при наличии данных в таблице. 3. Создать класс процедура - для создания и модификации хранимых процедур тоде через интерфейс системы и тоже с учетом версионности. 4. Класс проект, через который определять версионность предыдущих объектов. Может найдется человек, готовый вложить во все это деньги, чтобы привести систему к товарному виду. На сайте, который упоминался выше находится устаревшая информация, поэтому обращайтейсь по емайлу, указанному в профиле. Тем не менее система уже в данный момент позволяет заметно облегчить разработку прикладных задач в ОО-стиле. Мною реализована на моем же ядре мини-СРМ система для одной конторы, которая торгует рекламной продукцией, что позволило отладить фреймворк, исправить некоторые ошибки, как баги, таки и концептуальные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2005, 10:48 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Ну и как в ней лучше реализовать, так сказать аналоги, объектов 1С: 1. Константа ( в т.ч. периодическая) 2. Справочник (с иерархией и без, возможно с периодическими реквизитами, возможно подчиненный) 3. Документ (желательно с табличной частью, лучше несколькими) 4. Регистр (оборотов, остатков) 5. Бухгалтеркиие итоги ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2005, 12:47 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Да никаких проблем. В вашем распоряжении вся мощь сервера MSSQL2000 К одному объекту можно привязать неограниченное количество таблиц. По созданию процедур ограничений тоже никаких. Пример создания вышеперечисленных сущностей. 1. Константа Определяем сущность - например, настройки. Для интерфейса таблиц создавать не надо. Наименование будет в таблице Objects, наследуем от класса DBObject. Для хранения констант заводим таблички Constant_Names ( OID int, ID int identity, Constant varchar(32), Name varchar(128), primary key clustered ( OID, ID ) ) Constant_Values ( ID, Date, Value varchar(255) ) создаем 4 процедуры для подтаблички объекта. В результате в интерфейсе видим объект класса DBOSettings с наименование "Настройки" Открываем его для просмотра/редактирования, видим в шапке наименование и ниже на закладке грид с константами, которые можно править, причем значения будут хранить историю. И все это можно использовать в других объектах. 2. Справочник уже есть с иерархией, причем множественной, если от справочника нужно только наименование и идентификатор, то достаточно зарегистрировать новый класс, можно прямо через интерфейс. Если необходимы еще поля, создаем таблицу по аналогии выше. таблица может быть связана как один-к-одному, тогда доп.атрибуты будут в шапке формы либо как многие-к-одному, тогда это будет грид в закладке. Закладок можно создавать сколь угодно много, в пределах разумного. 3. По документу тоже самое. 4. И т.д. и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2005, 13:19 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
> 2. Последнее время была реализована система разделения прав. и > 3.Была переписана система папок для хранения объектов, теперь объект может > находится не в одной, как раньше а в нескольких папках, хоть во всех. Подробнее (на уровне структуры) можно (если есть время)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2005, 13:28 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Система прав представляет собой матрицу Object, Method, User Под методом подразумевается форма. Формы бывают всякие, какие зарегистриешь такие и будут. В разрезе атрибутов не делал, не вижу необходимости. Проще отдельными формами контролировать. Каждый отдельный пользователь имеет логин для доступа со своими правами. Все пользователи имеют доступ на выполнение только хранимых процедур. Адимнистратор имеет полный доступ. Объект - это запись в таблице Objects, папка наследуется от объекта и имеет доп. таблицу Folder_Objects ( OID, ObjectOID ), соответсвенно в любую папку можно поместить сколько угодно объектов. Есть еще таблица FolderTree, в которой хранится развернутая иерархия папок. По ней можно быстро определить имеет ли отношение к папке объект. То есть хранится запись принадлежности объекта папке, ее родителя, родителя ее родителя и так до верху. Это позволяет не делать обходы деревьев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2005, 14:10 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Смущает то, что система, похоже, упрощает только проектирование клиентской части приложения. Что же касается серверной части - тут всё, наоборот, становится только хуже. 1) Для каждого нового класса приходится писать методы создания, удаления, редактирования. Вроде, так, или я не прав? 2) Основная писанина в нормально спроектированном приложении происходит на сервере. Вот и вопрос - эта самая объектность на сервере как-то видна? Или просто заключается в неком наборе соглашений по именованию ХП? До сих пор здесь были приведены только примеры работы с объектами из клиентской части. Всё, что на сервере - использует обычные инсёрты, апдейты и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2005, 14:08 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old Nick Спешу поделиться своей радостью Что еще за ядро? Ядро чего собственно? Что оно будет делать? OQL запускать и их выполнять? Или вызывать какие-то проги? В последнем случае это не ядро, а какая-то библиотека или компонент каких много. А ядро то, что будет реально проги выполнять - ядро СУБД. Кроме того, наверняка в Юконе есть поддержка пользовтельских объектов. Т.е. оно и есть объектное ядро. Концепция не ясна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2005, 17:59 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Так_забежал_простоСмущает то, что система, похоже, упрощает только проектирование клиентской части приложения. Что же касается серверной части - тут всё, наоборот, становится только хуже. 1) Для каждого нового класса приходится писать методы создания, удаления, редактирования. Вроде, так, или я не прав? 2) Основная писанина в нормально спроектированном приложении происходит на сервере. Вот и вопрос - эта самая объектность на сервере как-то видна? Или просто заключается в неком наборе соглашений по именованию ХП? До сих пор здесь были приведены только примеры работы с объектами из клиентской части. Всё, что на сервере - использует обычные инсёрты, апдейты и т.д. Для меня никогда не было проблемой писать серверный код, но всегда доставало при этом на каждый чих описывать клиентские изменения/дополнения. К тому же если нет стандартного способа доступа клиента к серверу, то отслеживать какие-то ограничения затруднительно. Кто-то с клиента через ХП работает, а кто-то напрямую. Ядро эту часть берет на себя. Здесь даже формы создавать не нужно, хотя это и не закрыто специально. Объектность на сервере именно в виде различных соглашений. Это правила создания таблиц, процедур, правила их наименования и использования. Чтобы получить истинную объектность с инкапсуляцией, нужно создавать ООЯ с компилятором, который переводил бы ОО-код в T-SQL, это не сложно, но на это нужно время и деньги. Да и смысла в этом сейчас уже нет, так как есть Cache. Для создания простых процедур типа select/insert/update/delete делаю генератор, но далеко не всегда у сущностей эти методы простые, так что от необходимости писать серверный код Вас это не избавит. Для реализации ОО на сервере есть такие вещи как таблица иерархии классов, в который нужно новый класс зарегистрировать. Это дает возможность среди практически одинаковых объектов, находящихся в одном наборе таблиц, но имеющих разную природу отсекать лишние. Допустим построить отчет по объектам только этого класса и его наследников. Кроме того это дает полиморфизм. Допустим, описываем класс документ (абстрактный) и в нем метод ИзменитьСтатус. В этом методе пишем динамический вызов хранимой процедуры конкретного класса определив его по идентификатору, являющемуся аналогом This/Me/Self. А процедуру ИзменитьСтатус дергает какой-то другой механизм, ничего не знающий о наследниках документа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2005, 07:18 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
2OldNick Не так много дельных разработок - зато трепачей развелось... Поддерживаю ! если использовать только готовое - какие мы нахрен программисты ! SQL-писатели.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2005, 10:16 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Сейчас я работаю с похожей системой. Это полноценная ЕРП система с сервером MSSQL2000 и клиентом на С++. Пишем только на T-SQL. Недостатки на мой взгляд отсутствие полноценного наследования, хотя в какой-то мере оно есть. И нет полиморфизма, как раз из-за отсутствия типизации. Но тем не менее эта система стоит почти на всех пивзаводах бывшего СССР. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2005, 10:46 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old NickОбъектность на сервере именно в виде различных соглашений. Это правила создания таблиц, процедур, правила их наименования и использования. Чтобы получить истинную объектность с инкапсуляцией, нужно создавать ООЯ с компилятором, который переводил бы ОО-код в T-SQL, это не сложно, но на это нужно время и деньги. Да и смысла в этом сейчас уже нет, так как есть Cache. Если нет смысла - тогда зачем вообще Ваше объектное ядро? Перечислите Ваши цели и задачи. И что конкретно упростилось с появлением этого ядра. При этом соглашения об именовании ядром я бы не считал - это, скорее, инструкция по проектированию системы в объектных терминах, а ядро и инструкция - вещи разные. Все вызовы методов из клиента в этом "ядре", по-моему, можно заменить на прямые вызовы соотв. процедур - ничего не изменится. Old NickДля создания простых процедур типа select/insert/update/delete делаю генератор, но далеко не всегда у сущностей эти методы простые, так что от необходимости писать серверный код Вас это не избавит. Вот этот самый генератор - уже больше похож на часть (малую) настоящего объектного ядра. Old NickКроме того это дает полиморфизм. Допустим, описываем класс документ (абстрактный) и в нем метод ИзменитьСтатус. В этом методе пишем динамический вызов хранимой процедуры конкретного класса определив его по идентификатору, являющемуся аналогом This/Me/Self. А процедуру ИзменитьСтатус дергает какой-то другой механизм, ничего не знающий о наследниках документа. Нет. Это не полиморфизм. Опять-таки, это инструкция по реализации полиморфизма. Вы в дельфях каждый раз описываете такой метод, забабахиваете в него begin if ClassName = 'class1' then class1(Self).DoSmth ... ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2005, 22:51 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Так_забежал_просто Если нет смысла - тогда зачем вообще Ваше объектное ядро? Перечислите Ваши цели и задачи. И что конкретно упростилось с появлением этого ядра. При этом соглашения об именовании ядром я бы не считал - это, скорее, инструкция по проектированию системы в объектных терминах, а ядро и инструкция - вещи разные. Все вызовы методов из клиента в этом "ядре", по-моему, можно заменить на прямые вызовы соотв. процедур - ничего не изменится. Цель - облегчить разработку интерфейса. Так_забежал_простоНет. Это не полиморфизм. Опять-таки, это инструкция по реализации полиморфизма. Вы в дельфях каждый раз описываете такой метод, забабахиваете в него begin if ClassName = 'class1' then class1(Self).DoSmth ... ? Это можно легко сделать с помощью макроса. Я имею ввиду прекомпилятор для T-SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2005, 23:58 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old NickЦель - облегчить разработку интерфейса. Да, можно немного упростить, согласен. Но совсем чуть-чуть - только разве карточки просмотра и редактирования объекта. Да и то нужны метаданные - какие поля пользователь видит, какие - нет. Old NickЭто можно легко сделать с помощью макроса. Я имею ввиду прекомпилятор для T-SQL Ну да, можно. Тогда это станет некой незамысловатой разновидностью объектного ядра ;) А вообще, есть у меня хороший знакомый, который почти один написал ядро с автоматической генерацией таблиц по метаданным в виде xml, сделал почти 3-звенку, т.е. передаёт на клиент описания интерфейса, сделал нормальный полиморфизм с наследованием... Так что есть куда расти :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 09:47 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
У меня тоже есть знакомые, которые аналогичные вещи сделали. 1. NEXUS. Автоформы, все на T-SQL в ОО стиле 2. Ontario. Все в ОО стиле без метаданных 3. A2. Полностью на метаданных, полноценное ОО, но без клиента 4. MonolitSQL. Собственная среда разработки. Неполноценное наследование, отсутствие полиморфизма. Все эти системы имеют инстансы в организациях. И вполне успешно работают. Я пытаюсь вобрать все самое лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 14:10 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
а ссылки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 14:21 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Вообще приветствую подобные системы (есть в некоторых организациях), позволяющие разделить (объединить) проектирование базы с кодированием и облегчающие жизнь разработчику. Например... "Словарная система" совместно c "DelphiScript"... Один у них недостаток - ставят разработчика в более узкие рамки и позволяют легко менять его в случае нужды.... и соотвестственно зарплата у разработчика падает.. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 14:49 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 15:00 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Долго думал. Так и не понял, как соотносятся пункты http://dbobjects.narod.ruАрхитектура системы двухуровневая. Вся логика приложения находится на сервере и http://dbobjects.narod.ruкомпонент TDBObject <...> полностью инкапсулирует в себе объект базы данных, предоставляет доступом к атрибутам и методам, а также управляет формами объекта, виртуальными методами и разграничением прав доступа в разрезе пользователя создавшего объект TDBObject находится на клиенте. Так? И управляет разграничением прав доступа. Так? А если я зайду в базу через свой клиент - никакой TDBObject больше не будет ограничивать мой доступ. Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 15:19 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Если зайти через кверик например, то доступ будет только к хранимым процедурам. А они внутри проверяют есть ли у Вас право на выполнение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:35 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old NickДля создания простых процедур типа select/insert/update/delete делаю генератор, но далеко не всегда у сущностей эти методы простые, так что от необходимости писать серверный код Вас это не избавит. Old NickЕсли зайти через кверик например, то доступ будет только к хранимым процедурам. А они внутри проверяют есть ли у Вас право на выполнение Ответьте пожалуйста на несколько вопросов. Генератор тривиальных процедур пока еще не готов? Правильно ли я понимаю, что проверка прав доступа реализуется вручную, основываясь на метаданных вашего ядра? Есть ли причина, по которой вы решили не реализовывать разграничение доступа, предоставляемое сервером? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 20:34 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
1. Генератор процедур не готов, так как я сейчас доделываю более нужные вещи. Хотя генератор я однажды уже делал и с серверным кодом и с клиентским, где-то валяется, но он не имеет ценности пока не сделаю единую среду разработки. 2. Не понял, что значит вручную? Есть механизм назначения прав, ядро используя этот механизм определяет, что давать пользователю, а что нет. Прикладному программисту ничего для этого делать не нужно. 3. Причина есть. Это невозможность дать ограничение на доступ к записи. У меня же каждый объект является записью, соответственно на каждую запись (объект) можно дать право на различные действия различным пользователям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 10:14 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Ранее было сказано, что ядро нужно только для упрощения проектирования интерфейса. Я лично не думаю, что такое ядро сильно упростило бы клиентский код, т.к. вызовы "методов" легко заменяются на прямые вызовы соответствующих ХП, но это личное дело каждого. Теперь оказывается, что ядро также должно проверять права доступа. Автоматически. На сервере. При этом генератор даже простейших ХП не готов. Как??? Как ядро автоматически будет проверять права, если все ХП пишет прикладной программист? А права на их вызов есть у всех? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 10:45 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Система не имеет абсолютной защиты. Разграничение прав выполняет клиент, проверяет какие формы можно показывать пользователю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 11:44 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old NickСистема не имеет абсолютной защиты. Разграничение прав выполняет клиент, проверяет какие формы можно показывать пользователю.Как это коррелирует с Old NickЕсли зайти через кверик например, то доступ будет только к хранимым процедурам. А они внутри проверяют есть ли у Вас право на выполнение? Именно поэтому у меня и возникли вопросы. Old Nick2. Не понял, что значит вручную? Есть механизм назначения прав, ядро используя этот механизм определяет, что давать пользователю, а что нет. Прикладному программисту ничего для этого делать не нужно.Вручную, это значит, что разработчик ХП должен правильно обратиться к метаданным вашего ядра (написать, как минимум, соответствующий вызов процедуры) и обработать результат, например сгенерировать ошибку. BTW, а механизм назначения прав на запись что из себя представляет? Администратор должен явным образом раздавать права пользователю/группе/ветви иерархии пользователей? Ядро поддерживает настройку политики умолчаний, хотя бы в виде флага (все, что явно не разрешено запрещено/все, что явно не запрещено - разрешено)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 12:51 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Процедуры базового класса имеют проверки, в остальных я это не вставляю, хотя по идее и при желании в каждой ХП можно вызывать CheckAccess Да, именно администратор раздает права на выполнение методов объекта. Методами являются те, что вызываются с клиента. Запрещено все что не разрешено администратором ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 13:20 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old NickПроцедуры базового класса имеют проверки, в остальных я это не вставляю, хотя по идее и при желании в каждой ХП можно вызывать CheckAccess Понятно, спасибо. Прошу прощения за назойливость, но все-таки... Old NickДа, именно администратор раздает права на выполнение методов объекта. Методами являются те, что вызываются с клиента. Запрещено все что не разрешено администраторомВот этот ответ сам по себе никаких вопросов не вызывает. Но вот вместе с предыдущим ответом Old NickУ меня же каждый объект является записью, соответственно на каждую запись (объект) можно дать право на различные действия различным пользователям. получается, что две различных записи в таблице, в общем случае, являются не экземплярами класса (объекта), а разными классами (объектами), которые имеют различные методы. Это так? Как со всем этим хозяйством управляется администратор? Или, может быть, вы имеете ввиду, что в зависимости от значений атрибутов записи процедура CheckAccess (перекрытый метод базового класса?) определяет доступность для того или иного пользователя соответствующих методов? И еще одно... Old NickМетодами являются те, что вызываются с клиента.А те, что не вызываются с клиента - общедоступны? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2005, 17:20 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
У каждого объекта есть метод(форма) назначения прав доступа, смотри приложение Общедоступны, но при желании в каждый можно вставить CheckAccess ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2005, 11:33 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
CheckAccess работает просто. Он шарит по таблице-матрице прав и определяет доступ на выполнение метода для пользователя над объектом найдя запись в этой таблице. Так что метод не полиморфный. -------------------- Не учи отца и баста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2005, 11:36 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Привет всем! Это опять я с новостями. На днях все-таки сделал своей системе автоформы. Опишу что это из себя представляет: В системе создал такие классы: 1. Форма 2. Набор данных Класс набор данных имеет подтаблицу - список атрибутов. Для грида - это колонки, а для одной записи - это список ДБаварных контролов. Класс форма имеет две подтаблицы - список контролов (то бишь панели, пейджконтролы, табы и в принципе можно любые дельфовые контролы указать с указанием иерархии и размеров расположения). И вторая подтаблица - список наборов данных с привязкой к контролу формы (к панели, например). На клиенте это представлено компонентами, расположенными на базовой форме. Так что для наследника класса создавать новую форму не нужно, новые датасеты и контролы создадутся в рантайме. При этом осуществляется проверка на наличие этих контролов и компонент на форме. Это дает возможность для нестандартных форм создавать наследников и вставлять контролы и датасеты по собственному усмотрению, дабы наделать всяких выкрутасов. Сейчас идет этап тестирования, затем сделаю скрипт базы и выложу все это вместе с ехешником клиента в инет. Спасибо за внимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 13:38 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
2: Old Nick По опыту разработки подобных приложений, есть очень много подводных камней: 1) Реализация настройкой выбора полей из српавочников при заполнении форм 2) Генератор процедур (задача была решена только написание своего макро-языка) 3) Наследование документов (вообщем полностью реализовать не смог) 4) Поддержка перечней документов в документах (многоуровневый master-detail) Но на мой взгляд идея правильная ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2005, 12:44 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
По первому вопросу не понял, поясните, плз По второму: Я писал генераторы для своей системы, даже 2, один скульный, один дельфевый, но пока не использую, причем сделал за несколько часов. Смысл в том что генератор дает шаблон, который можно подправить или сразу скомпилить. По третьему: В прототипе моей системы была сделана довольно успешная иерархия типов документов. Проблем не было. В моей системе кроме иерархии классов еще есть иерархия форм, которая может несоответствовать классовой. Так что полная свобода творчества. По четвертому: Вот с этим не понятно тоже, поясните, плз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2005, 17:26 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
1) Реализация настройкой выбора полей из справочников при заполнении форм Как ни странно столкнулся с тем что это одна из самых сложных задач интерфейса. Например есть счет, нужно выбрать партнера и его расчетный счет. Есть на форме поля: код партнера наименование партнера банк РС И две кнопки, по первой необходимо с возможностью поиска/фильтрации выбрать партнера (возможно с предварительно установленной фильтрацией например только по Юр. лицам), и заполнить поля код/наименование. А по второй из расчетных счетов привязанных к выбранному партнеру выбрать нужный и заполнить поля ID_счета/Банк/Номер счета. При смене партнера очистить поля ID_счета/Банк/Номер счета. Вообщем задача не очень сложная если писать скрипт на клиенте, но если реализовать это все настройками для автоматической отработки нажатий кнопок, то получается достаточно разлапистая структура. 4) Поддержка перечней документов в документах (многоуровневый master-detail) Тот же счет, пользователь вносит шапку с датами, и хочет сразу набить перечень позиций счета, а в перечне позиций есть перечень привязок позиции к реальным операциям. Сразу возникает вопрос в какой момент получать идентификаторы записей, и пр. Тоже задача решаемая с помощью кода но достаточно сложно решаемая с помощью настройки, а как я понимаю основная задача любой ядерной надстройки, это максимально отказаться от прямого программирования клиентской части и максимально настраивать документы. Для ускорения разработки, администрирования, обновления и сопровождения. Old NickЯ писал генераторы для своей системы, даже 2, один скульный, один дельфевый, но пока не использую, причем сделал за несколько часов. У нас например исходя из настройки и шаблона на макро-языке генерятся достаточно сложные процедуры, включающие в себя проверки, расчеты остатков, проводки... так что при сохранении процедуры получить сообщение об ошибке в 8154 строке очень даже можно было... правда в данном случае это конечно перебор ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2005, 13:19 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
По первому вопросу: Для ссылок на объекты у меня используется объектный контрол. Он внутри себя хранит идентификатор объекта, в текстовом поле показывает наименование объекта, а на кнопочке значок, соответствующий классу объекта. При описании атрибута указываем минимальный базовый класс для выбора объектов, в данном случае это юр. лицо. После выбора клиента, выбираем счет. Для атрибута можно указать не только минимальный базовый класс, но и папку, в которой лежат объекты, в данном случае папкой будет сам клиент. По второму вопросу: Все что делается у меня на форме просиходит только на клиенте, никаких идентификаторов записей еще нет. И только во время сохранения в открытой транзакции берутся идентификаторы. Так что проблем пока не испытывал. А вообще очень дельные замечания. Именно они определяют правильно ли спроектирована система. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2005, 14:38 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old NickА вообще очень дельные замечания. Именно они определяют правильно ли спроектирована система. :-) Несколько лет потратил на решение подобных задач правда PB - Sybase/MS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2005, 15:18 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old NickСистема прав представляет собой матрицу Object, Method, User Под методом подразумевается форма. Формы бывают всякие, какие Кстати по поводу допусков, как показал опыт всяких внедрений, для большого количества пользователей структура Object-Method-User неудобна, лучше Object-Method-Role-User. У нас около 1000 методов (к которым можно дать допуска) и расстановка галочек 5 ролей на 1000 методов это уже утомительное занятие, а на 40 пользователей.... ;( А вот для маленьких систем я в свое время разрабатывал иерархическую систему допусков, когда у пользователей есть уровень безопасности и у методов есть уровень безопасности (вообщем у документов тоже есть уровень безопасности) и пользователь видит метода с уровнем безопасности <= своего. Закладки в таб-ах, меню, документы в списках тоже зависят от уровня безопасности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2005, 15:38 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
На самом деле у меня в данной матрице атрибут класса DBOAUser - абстрактный пользователь, от него наследуется группа пользователей, пользователь и еще планирую сделать класс роль, хотя пока и не понадобился. Поэтому каждому конкретному пользователю можно назначать права, но зачастую это делается группами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2005, 15:52 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Теперь совсем не понятно зачем нужно это ядро. В Оракле, к примеру, объеты БД типа юзер есть, и роли есть, и тщательный контроль доступа есть. И вроде получается, что ядро тока ухудшит ситуацию для этих задач - лишнее звено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2005, 18:53 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
А в Оракле можно раздавать права записям? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 11:31 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old NickА в Оракле можно раздавать права записям?можно. и уже давно. по крайней мере с версии 8.1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 11:47 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old Nick А в Оракле можно раздавать права записям? Там это и называется "Тщательный контроль доступа". Я его упомянул в пред посте. Но это детали. Мне до конца главное не ясно. Что могут давать подобные ядра? Ведь если бы они что давали, то их бы лабали софтверные фирмы. А они вместо этого занимаются генраторами приложений, библиотеками классов, в том числе и для задач приложений БД и проч. Кроме того, не доконца понял что из себя представляет ядро. Почему оно ядро, а не просто тулз какой-то? Ну пусть еще какая-то библиотека классов. Его цель дальнейшая автоматизация разработки? Вы про детали уже говорите, а с концепцией не все ясно. Мне интересно, потому что и у нас на фирме один проггер завел разговор про ядро, и про его роль в качестве успешности проектов. Т.е. типа два высокооплачиваемых будут сидеть на этом ядре, а другие тока к ним обращаться и вставлять проект, что тем им выплюнут из ядра. Но поскольку идеи с ядрами были всегда, а широкого применения не нашли, мне пока не верится в пользу. Наоборот. Када надо что-то будет, они просто скажут: "на это наше ядро не расчитано. Давайте бабки, тех задание". А парни из соседней фирмы просто налабают тоже в среде без всяких заморочек. А может и лучше, так как ядро, скорее всего, наложит ограничения на решения. В общем сомневаюсь я. Вместо этого я им гру, чтобы лучше какой-нибуть полезный компонент склепали. Опасаюсь, что нач-ву втюхают это. Баьки получат, а лучше не станет. Мне бы аргументов в ту и обратную сторону подсобрать бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 13:36 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
vadiminfoМне до конца главное не ясно. Что могут давать подобные ядра? Они реализуют уровни kernel и system ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 15:13 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
А причем здесь кернел и систем? Ведь там систем - это СУБД, а кернел - это Ось. Я так понял, что это ядро где-то между СУБД и сераерным приложением и (или) клиентским. А реалным ядром ИС считалоась вроде БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 20:10 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
vadiminfoА причем здесь кернел и систем? Ведь там систем - это СУБД, а кернел - это Ось. Я так понял, что это ядро где-то между СУБД и сераерным приложением и (или) клиентским. А реалным ядром ИС считалоась вроде БД. Нет, эта схема не включает платформу реализации/развертывания для ИС. kernel и system - уровни логики самой системы. Если ваш проект небольшой и одноразовый, то забудьте про схему. Если планируется, например, делать несколько интегрированных приложений, то придется так или иначе реализовать такую схему. Если у вас нет спецов для проектирования, но много времени, то возможно даже эволюционным путем: общие компоненты, библиотеки, функционал, будучи реализованным ad hoc в приложении, "спускаются" из application на system и kernel. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2005, 13:53 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
vadiminfoА причем здесь кернел и систем? Ведь там систем - это СУБД, а кернел - это Ось. Я так понял, что это ядро где-то между СУБД и сераерным приложением и (или) клиентским. А реалным ядром ИС считалоась вроде БД. Не буду спорить на счет терминов, но типичным представителем ядра может служить 1С ;) программирование бизнес логики идет внутри. А само ядро предоставляет функции по работе с бизнес объектами. vadiminfoНо поскольку идеи с ядрами были всегда, а широкого применения не нашли, мне пока не верится в пользу. Пример 1С, SAP, Axapta и множества более мелких и менее известных контор и приложений по моему свидетельствует об обратном. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2005, 15:19 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Templar kernel и system - уровни логики самой системы. общие компоненты, библиотеки, функционал, будучи реализованным ad hoc в приложении, "спускаются" из application на system и kernel. Estets А само ядро предоставляет функции по работе с бизнес объектами. Но что это за архитектура? Многозвенка? А system и kernel похожа на контейнер в EJB? У Оракла в JDeveloper есть тоже, по-моему, своя трехзвенка, с таким уровнем. Но, возможно, в отличии от EJB он не интерпрайзного масштаба. (EJB и CORBA в JDeveloper тоже присутствуют). Где можно прочитать про подобные концепции? Чтобы понять архитектуру всей системы и роль этих system и kernel в ней? Потому что все еще кажется, что это application пусть и серверный. Ваш рисунок тока порождает новые вопросы. Особенно хочется понять где это находится по отношению к СУБД. То что оно ниже application следует из Вашего прежнего поста. Но не ясно почему оно не application. Ведь все архитектуры ИС сводятся тока к БД->СУБД->application. Где application может состоять из серврных и клиентских. Но вроде больше ничего там никогда не видел. Estets Пример 1С, SAP, Axapta и множества более мелких и менее известных контор и приложений по моему свидетельствует об обратном. Про 1С я думал, что это готовая ИС для определенных ПО, состоящая из нескольких модулей. Имеет свой генератор форм, отчетов и какой-то язык для настройки. Т.е. я думал, что это все те же средства разработки приложений, только более узкого плана, ориентированые на ИС 1С. Не считал это ядром. Возможно, термин ядро - нуждается в уточнении? А где можно почитать концепции SAP? Он какой-то совсем загадочный, если не обращать внимание на все те же СУБД. Я думал его преимущество в том, что это готовая ИС для многих ПО и остается ее тока настроить с помощью каких то их генераторов приложений и всего того инструментария, тока тоже заточенного под эти ИС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 00:51 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
vadiminfoПро 1С я думал, что это готовая ИС для определенных ПО, состоящая из нескольких модулей. Имеет свой генератор форм, отчетов и какой-то язык для настройки. Т.е. я думал, что это все те же средства разработки приложений, только более узкого плана, ориентированые на ИС 1С. Не считал это ядром. Возможно, термин ядро - нуждается в уточнении? А где можно почитать концепции SAP? Он какой-то совсем загадочный, если не обращать внимание на все те же СУБД. Я думал его преимущество в том, что это готовая ИС для многих ПО и остается ее тока настроить с помощью каких то их генераторов приложений и всего того инструментария, тока тоже заточенного под эти ИС.Таких "готовых" систем сегодня практически не существует. Любая современная система состоит из некоторого ядра (движка, интерпретатора, термины разные), имеющего некоторые средства написания программного кода (в R/3 это АВАР, в 1С свой внутренний язык, в системе ФЛАГМАН Salute) и набора написанных с помощью этих средств прикладных функций, объединенных в конфигурацию (в терминах 1С), настройку. Вендор поставляет разумеется какой-то набор готовых конфигураций, плюс их делают независимые разработчики плюс конечные пользователи собственными силами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 10:02 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
vadiminfoНо что это за архитектура? Многозвенка? А system и kernel похожа на контейнер в EJB? Программная архитектура здесь ортогонально. Может быть и многозвенная, а может быть и монолит из одного *.ехе. Да, сервер EJB реализует уровни kernel и system. Вопрос в том, в какой мере реализует. Достаточно ли этой реализации по отношению к требованиям ваших applications. Например, не придется ли реализовывать свою систему безопасности. Если ваша система документно-ориентированная, то system должен давать сервис базовый для всех документов, чего в универсальном сервере приложений быть не может по определению. Значит - опять реализовывать и т.д. Особенно хочется понять где это находится по отношению к СУБД. То что оно ниже application следует из Вашего прежнего поста. Она вне схемы, справа. Это просто еще один data storage layer, который вам не нужно реализовывать, поскольку в 99% используется готовая СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 12:19 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Видел ли автор: 1. ОРмэппинги Hibernate/Cayenee/JDO/EntityEJB? 2. Системы кэширования JSC/TreeCache/SwarmCache/OSCache? 3. АППСервера Weblogic/JBoss/Websphere с встроенной системой декларативной безопасности? 4. Системы биндинга для Swing/Winforms (JSF/Tapestry для HTTP)? сомнительно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 15:09 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Системы маппирования изучал издавна. Не устраивают. во-первых с данными удобнее работать реляционно, во-вторых маппинг не дает преимуществ при построении клиента Системы кеширования слышу первый раз Аппсервера для веба мне не интересны, занимаюсь только винформами Системы биндинга тоже слышу впервые ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 16:43 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Old NickСистемы маппирования изучал издавна. Не устраивают. во-первых с данными удобнее работать реляционно А как это интересно применение маппинга сказывается на возможность реляционной работы с данными? Те же самые хранимые процедуры это маппинг методов объектов, а уж в ХП можно творить всё что угодно уже на SQL. Old Nickво-вторых маппинг не дает преимуществ при построении клиента А что тогда даёт? Те же автоформы замечательно строятся и при использовании классических объектов. Но автоформы не панацея, на одних них далеко не уедешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 08:37 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Вот я и творю все в ХП :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 10:04 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Ну так и я также всё обработку творю в ХП, только у меня маппинг объектов есть и проблем с ним нет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 10:58 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Я как то без маппинга обхожусь и без классов на клиенте. Все-таки писать только ХП меньше времени уходит, чем и ХП и классы, а если еще и формы не делать, то в три раза меньше времени. Хотя больше всего времени занимают именно ХП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 13:51 |
|
||
|
Люди, свершилось. Я сделал объектное ядро
|
|||
|---|---|---|---|
|
#18+
Ну на вкус и цвет как говорится... Просто если на клиенте делать без классов, то получаем какой то тонко-толстый клиент :-) Тонкий потому что применяются автоформы для динамического формирования интерфеса, а толстый т.к. есть довольно не простое ядро, которое собственно и формирует интерфейс, обеспечивает взаимодействие с пользователем и т.д. Причём это ядро должно обеспечивать все это для нетипизированных объектов с динамической заранее неизвестной структурой. Т.е. программа используется как этакий специфический браузер для бизнес объектов. В веб клиентах для контроля вводимых пользователем данных есть JavaScript, а как у Вас в автоформах проверяются вводимые пользователем данные? Или вся проверка только на сервере? При использовании классов и обычном маппинге, часть проверок и зашивается в клиентский код класса и никаких проблем. В принципе вся разница в направлении маппинга. У Вас реляционная модель маппируется в объектную. Есть преимущества, но есть и недостатки (например отсутствие строгой типизации на клиенте). В большинстве случаев объектная модель маппируется в реляционную, потому как работать на ООП языке с реальными объектами удобнее чем с их эммуляцией. Правда требуются дополнительные телодвижения для написания ХП, если маппинг идёт через них. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 14:41 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1545838]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
129ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 480ms |

| 0 / 0 |
