powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Люди, свершилось. Я сделал объектное ядро
105 сообщений из 105, показаны все 5 страниц
Люди, свершилось. Я сделал объектное ядро
    #32463008
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спешу поделиться своей радостью :-)
Пишу на Дельфи и МССкуль

На сервере класс представлен таблицей и четырьмя процедурами
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 контролы для атрибутов объекта, то можно будет форму на лету формировать. Так что вся разработка останется только на сервере.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32463013
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто во што :-)
ну, ну... рад за тебя :-)
смотри 1с не сделай. не по функциональности а по производительности :-)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32463262
Фотография brahew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю в периоды начинаний в программировании все подходили к этму вопросу, но он оставался нерешенным, а для такой вещи, как формирование форм на лету, можно поставить отдельный сервер с минимальным временем откоика(mysql к примеру), и останется оптимизировать код клиента для формирования форм.
А для тех кто над такими вещами посмеивается, думается, что у самих не получилось, теперь и посмеиваются
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32463619
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое ощущение, что каждый день по нескольку таких систем пишется :-)
Просмотров много, а ответов всего два.

alex_k

1С по производительности может получится, если люди начнут логику писать на клиенте. Я сделал компонент только для того чтобы на форме его удобно было использовать (вытащить объект, изменить, сохранить).

Кроме того этот комонент можно будет превратить в COM-объект.
И тогда пишите клиента на чем хотите.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32463660
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если интересно, попробуй покопать типы данных в юконе, эта информация может быть полезна.

кроме того, почему бы не воспользоваться какой-нить объектной базой?
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32463677
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AAron

Работать с реляционными данными гораздо удобнее в реляционной базе. И работать быстрее будет
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32463692
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собираюсь в дальнейшем переписать на дотНет. И базу использовать Юкон
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32463841
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нигде не было написано, что данне реляционные. Скорее можно было бы ожидать объектные данные (ведь происходит сохранение объектов). Кроме того, если один из атрибутов объекта представляет собой объект, его тоже нужно сохранять как объект. Ну и т.д.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32463920
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
База нужна ведь не только для того чтобы хранить объекты. Хранить их естественно гораздо удобнее в объектной базе, но вот обрабатывать списки данных эффективно можно только в реляционной, поэтому в базе у меня все реляционно, а на клиенте объектно. Самая эффективная связка.

Может конечно разработчику и не очень легко будет в этом разбираться, но пусть тогда, те кто этого не может, катяться куда подальше. :-)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32464928
Фотография Quark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор но пусть тогда, те кто этого не может
А потом рождаются такие фразы "А CBoss его знает".
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32466020
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Советую воспользоваться поиском по форуму. Ключевое слово "междумордие". Там есть куча мнений по подобному вопросу.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32466196
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Old Nick
Такое ощущение, что каждый день по нескольку таких систем пишется :-)
Просмотров много, а ответов всего два.
___________________________
Чтобы паства возрадовалась, нужно чтобы каждый что-то с этого поимел.

Так что:

Постановка задачи - идея,
план работ - конкретика,
прототип - описание,
полученные результаты - сравнение с существующими решениями
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32466208
Что оно хоть делает-то, это объектное ядро? Ежели станете объяснять, то пожалуйста, по-простому, на пальцах. Что здесь объект (они ведь тоже разные бывают), куда мы хотим его засунуть, как это делается (только не надо названий методов и переменных... все равно здесь это никто не поймет) ну и тд, и тп.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32466937
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробую немного описать:

Есть метод 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, нажав кнопку создать и выбрав класс. Или редактировать, щелкнув правой кнопкой на объекте в эксплорере (Это спец форма для списка объектов)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32467048
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest

Постановка задачи - идея,

минимизировать разработку приложений и исключить ошибки.

план работ - конкретика,
прототип - описание,
полученные результаты - сравнение с существующими решениями

Существующие решения либо имеют ограничения по функционалу (1С)
либо низкую скорость работы (1С:)

В моем ядре максимально используется реляционный механизм, при этом программист описывает сущности используя наследование, при этом сильное облегечение в разработке т.к. Не нужно повторяться с описанием одинаковых действий. Можно наращивать функционал никак не ущемляя имеющийся.

Также нет ограничений по интерфейсу. Пишите формы какие хотите, наследуйте только от BaseForm или от форм базовых классов

задача программиста регистрировать новые сущности и новые формы, не заботясь о том как они вызываются, как к ним идет обращение. Этим занимается ядро
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32467322
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял:

Объект:
Данные хранятся на сервере в базе (создаем руками),
Методы на сервере в ХП (создаем руками),

Создаем руками программный объект, который как-то связан с конкретными ХП.

далее при обращении к методам объекта вызываются ХП этого объекта.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32467338
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest Я так понял:

Объект:
Данные хранятся на сервере в базе (создаем руками),
Методы на сервере в ХП (создаем руками),

Создаем руками программный объект, который как-то связан с конкретными ХП.

далее при обращении к методам объекта вызываются ХП этого объекта.

Почти все правильно. На клиенте объект создавать не надо. Компонент по указанному классу полностью инкапсулирует в себе все данные сервера для заданного класса и идентификатора объекта.

Можно провести аналогию с компонентом, например, TADOTable. Указываешь TableName и все поля вытаскиваются. Мой компонент отличается от TADOTable также как Class отличается от record (struct) (добавилось наследование и методы)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32467360
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не в лм, посмотрите типизированные таблицы и их методы
в DB2 или ORACLE. Похоже это уже сделано более качественно.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32467437
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там наследования нет. Я уже давно все проштудировал
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32467508
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наследования или полиморфизма?
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32467518
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да ни того, ни другого толком нет. В Оракле например, если создать тип объект унаследованный, то создать таблицу по нему нельзя. Как это называется. Нахрена тогда наследование? Уж лучше на джаве тогда писать
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32467674
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сам толком в этом не разбирался, но проде все эти объектные расширения работать должны. Что точно помню, так это в ДБ2 нельзя методы объектов перегружать...
Да и пока что небыло необходимости заниматься объектной моделью. Реляционная вполне устраивала.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32467712
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня реляционная модель тоже вполне устраивает. Главное в программировании вообще и в БД и ООП - это нормализация данных. Если каждая сущность лежит в своей таблице или классе то все очень легко решается. Но реляционной модели не хватает наследования, хотя его можно легко держать в голове. Но для этого нужно быть опытным программистом.

Моей целью было избавить прикладного разработчика от реализации связей. Любой хорошо знающий ООП, сможет быстро разобраться в моей системе и быстро начать решать прикладные задачи, причем любые. Сейчас пишу производство. Хотелось бы описать систему очень подробно, но не люблю я это писать.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32467798
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотелось бы описать систему очень подробно, но не люблю я это писать.
_____________________________
Ну а посмотреть (пощупать) на это объектное ядро как нибудь можно?
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32467816
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest

Где живешь? Если в СПБ, то нет проблем
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32467987
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где живешь? Если в СПБ, то нет проблем
___________________________
До столиц "только самолетом можно долететь" (песня)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32467995
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас не стану выкладывать. Допишу прикладное приложение, потом уже обкатанное ядро выложу на просмотр.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32468204
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таких "объектных" расширениях (интерфейсах) есть по крайней мере две проблемы:

1) Обращение к SQL серверу возвращает таблицу, значит для выборки всех полей объекта необходимо многократно обращаться к серверу.

2) Применяется (однопользовательский\локальные данные) подход, (многопользовательский\удаленные данные) имеет большие накладные расходы, и работать с ним нужно по другому - (а) более экономно к запросам, (б) данные на сервере могут меняться другими пользователями.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32468298
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таких "объектных" расширениях (интерфейсах) есть по крайней мере две проблемы:

3) И главное - вопрос масштабирования таких систем - для каких систем это праедназначено ?
- явно не для малых, где простые таблицы проще,
- для больших систем - сложность приведет к потере контроля над обменом с сервером.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32468385
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Наверняка подобная идея посещала 99% разработчиков баз данных. Однако в поцессе ее реализации выясняется, что подобная схема годится только для работы с таблица-справочниками, создание которых по моим прикидкам занимает не более 1 процента времени разработки. Ну и стоит ли огород городить? Написание 3 хп на выборку, обновление | вставку и удаление; и одной формы для выборки-обновления-вставки занимает минут 15-20.

А для создания сложных выборок по соединения нескольких таблиц такая схема абсолютно бесполезна.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32468421
guest_____
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, а как в вашей объектной системе реализованы вложенные объекты?
(например: приходная накладная имеет ссылку на контрагента...)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32468737
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>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.
create procedure DBODoc_Things_Open
  @OID int
as
  select t.ThingOID,
         ThingName = o.Name,
         ThingClass = o.Class,
         t.MeasureOID,
         MeasureName = o1.Name,
         MeasureClass = o1.Class,
         t.Quantity
    from Doc_Things t
           inner join
         Objects o
           on o.OID = t.ThingOID
           inner join
         Objects o1
           on o1.OID = t.MeasureOID
     where
       t.OID = @OID
go


Объекты на клиенте, представлены в виде прокси, т.е. только то что нужно для их идентификации. Это наименование, чтобы показывать в контролах, класс чтобы знать какие метаданные вытаскивать и идентификатор (понятно зачем).

>Привет, а как в вашей объектной системе реализованы вложенные объекты?
>(например: приходная накладная имеет ссылку на контрагента...)

Выше привел пример датасета (многострочная часть документа).
Чтобы открыть объект учета для просмотра, пишем:

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;
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32495853
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Набросал доку по своей системе. Кому интересно присылайте мыло, отвечу всем.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32495943
Владимир Иванов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подход хороший, а главное рабочий. Мы его почти 10 лет используем с MS SQL 6.0
http://www.ivn.newmail.ru/ultima3.htm
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32495950
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знаю я Ультиму :-)
Ваши траблы я повторять не стал.
Привет Сергею Тарасову.
Я его систему развиваю. :-)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32535029
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оригинально и красиво решил проблему ссылочной целостности в своей системе.

Раньше на каждое поле, являющееся ссылкой на объект, нужно было писать процедуру типа

DBODoc_D_DBOState,

которую вызывал специальный механизм при удалении объекта, это было очень неудобно, так как нельзя было забывать писать для каждого такого поля процедуру. Да и само написание тоже минус, т.к. приводит к затратам времени.

Сделал все через метаданные.
При регистрации класса в базе добавляется пользовательский тип основанный на int и имеющий название аналогичное классу, например DBODoc, теперь скрипт создания таблицы документов выглядит так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create table Docs
(
  OID         DBODoc,      -- ссылка на объект владелец
 
  StateOID  DBOState    -- объектное поле (состояние документа)
 
)
go

теперь при удалении объекта "Состояние документа" можно по метаданным найти все таблицы где есть поля этого класса и его наследников, проверить есть ли в этих полях ссылка на удаляемый объект и если есть, то по типу поля OID взять описание класса и ругнуться что в данном объекте есть ссылка на удаляемый объект и удаление отменяется.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32536749
d'n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
d'n
Гость
мне интересно. если возможно, вышли на del_nero at pisem.net
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32536852
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще кое-что на тему на сайте

dbobjects.boom.ru
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32543492
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выложил исходники на сайте

http://dbobjects.boom.ru
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32545642
Фотография u_gray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Old Nick
>В Оракле например, если создать тип объект унаследованный, то создать таблицу по нему > нельзя. Как это называется. Нахрена тогда наследование? Уж лучше на джаве тогда писать

в Oracle c 9.2 нормальное наследование и отличный полиморфизм. И таблицу можно по унаследованному объекту создавать и методы наследуются и прекрасно работают. Более того, имеет место реализация расширения и сужения объектных типов. И т.д. и т.п.
Только множественного наследования нет, но это и к лучшему.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32546122
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну кое-какие ограничения, т.е. "невозможности" в работе с объектными типами 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
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32546269
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ущербный какой-то этот Оракл. Я знал про объекты в нем, вернее про то как они там реализованы, поэтому и не стал его использовать. Лучше взять чистую реляционную СУБД и сделать объект на MIDDLE WARE.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32546707
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old Nick

Чем лучше то? Тем что огромное количество ресурсов тратится на перемещение данных между БД и app server'ом?
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32546838
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это большая ошибка, когда проектируют так что данными манипулирует AppServer. Он должен предоставлять интерфейс клиенту и через него манипулировать методами. А данные вытаскивать только в том случае, если их клиент запрашивает для отображения или изменения.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32547538
SergueiF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Old Nick

решил посмотреть: описания не скачиваются, а что скачивается -не распаковывается

поэтому, если не лень, поясните еще раз на пальцах:

как я понял:

Есть конструктор объектов, которые хранятся на Сервере

Клиент на Дельфи : создаем TDBObject, связываем с хранилищем на Сервере и имеем форму для редактирования данных

и нарисуйте схему, все-таки коммерческий продукт:)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32564568
Vladimir Kr.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и что в итоге?

Hibernate?
которому пофиг какая база,
и для которого есть Middlegen чтобы из существующей структуры сделать
XML файлы с описательными метаданными,
с кешированием и работой в кластере,
плюс практически продакшн стандарт
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32564797
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old Nick

Пока это только слова. А хотелось бы более предметно. Например, есть класс MyClass с атрибутами Attr1,.. AtrN и операциями. Что в данном случае будет представлять ваш DBObject? Я так понимаю что-то типа такого

Код: plaintext
1.
2.
3.
4.
class MyClass
{
TDataSet DataSets[ 1 ];
}

Операций я так понимаю не будет? Или они будут сделаны через какой-то контейнер для TStoredProc?Ну и почему такую конструкцию легче держать на клиенте чем на сервере (для Oracle >=9.2). Ведь по-крайней мере вашей БД не всегда можно будет воспользоваться напрямую (в РБД нет полисорфизма)!
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32565122
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди, вы заложники своих стереотипов. Данными манипулировать должны только хранимые процедуры или SQL. А компонент на среднем звене должен представлять собой обертку вокруг разрозненного набора таблиц и процедур, чтобы превратить все это в целостную логическую единицу, представляющую собой сущность, которая может не только иметь данные и операции, но интерфейс для работы с ними.
Мой компонент управляет хранимыми процедурами (серверная часть) и формами (клиентская часть).
Сейчас я делаю подробное описание, как с помощью моего ядра сделать прикладное приложение. Это упрощенная клиентская база. Когда будет готово сообщу. Увидите как все просто.

P.S. Я не понимаю зачем в некоторых архитектурах вытаскивают на среднее или клиентское звено таблицу, пересчитывают в ней какие-то данные пусть даже красиво с помощью классов сущностей и потом отправляют обратно на сервер. В какой роли тогда выступает сервер, в роли хранилища?
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32565127
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я перенес сайт на dbobjects.narod.ru
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32565162
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old Nick

Данными манипулировать должны только хранимые процедуры или SQL.

Я это не утверждал и не опровергал. Мои стереотипы говорят мне, что операции класса логично разделить на две группы - те что эффективно реализовать на сервере и те что на клиент :)

А компонент на среднем звене должен представлять собой обертку вокруг разрозненного набора таблиц и процедур, чтобы превратить все это в целостную логическую единицу, представляющую собой сущность, которая может не только иметь данные и операции, но интерфейс для работы с ними.

На мой взгляд эта фраза и отражает суть. Т.е. ваше "ядро" призвано объединить разрозненную информацию об объекте (т.е. его методы, некоторые связи и еще какую-то метаинформацию) в то с чем проще работать (даже не проще - а "целостнее" что-ли) Ничего неправильного в этом нет (imho это правильно) - другой вопрос, что и под объектно-ориентированным обычно понимается нечто другое - в частности, как я понял, ваша "целостная логическая единица" не обладает состоянием.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32565228
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компонент имеет публичные методы - это формы, приватные методы - это хранимые процедуры и атрибуты - это поля и таблицы. И по уникальному идентификатору может вытащить все поля и все таблицы для просмотра или редактирования.
И если у какого-то объекта есть объектный атрибут определенного класса и данный объект вызывает его метод (например, накладная имеет атрибут вещь, у которого вызывает метод взять текущую цену), то в этот атрибут можно подставить ссылку на любой наследник этого класса (например, наследники вещи - это товар, услуга) и если у наследника перекрыт метод определения текущей цены, то будет вызван перекрытый метод. И для этого используется специальный механизм. А методом является обычная хранимая процедура.
И все эти механизмы используются неявно, разработчик может и не подозревать о их наличии, хотя лучше это понимать :-)

Вот вам и полиморфизм.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33017558
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил поднять тему, так как кое что изменилось за последнее время.

В данный момент совсем нет времени заниматься системой.
Все остановилось на полушаге от готовности.

1. Почти что есть автоформы, достаточно посидеть один-два дня и все будет готово, но взять эти два дня негде.

2. Последнее время была реализована система разделения прав.

3.Была переписана система папок для хранения объектов, теперь объект может находится не в одной, как раньше а в нескольких папках, хоть во всех.

4.Была реализована система поиска объектов на основе метаданных.

Еще хотелось бы реализовать:
1. Систему скриптования объектов (и классов в том числе)

2. Класс таблица - для создания и изменения таблиц через интерфейс с учетом версионности и при наличии данных в таблице.

3. Создать класс процедура - для создания и модификации хранимых процедур тоде через интерфейс системы и тоже с учетом версионности.

4. Класс проект, через который определять версионность предыдущих объектов.

Может найдется человек, готовый вложить во все это деньги, чтобы привести систему к товарному виду. На сайте, который упоминался выше находится устаревшая информация, поэтому обращайтейсь по емайлу, указанному в профиле.

Тем не менее система уже в данный момент позволяет заметно облегчить разработку прикладных задач в ОО-стиле. Мною реализована на моем же ядре мини-СРМ система для одной конторы, которая торгует рекламной продукцией, что позволило отладить фреймворк, исправить некоторые ошибки, как баги, таки и концептуальные.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33017931
Наф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и как в ней лучше реализовать, так сказать аналоги, объектов 1С:
1. Константа ( в т.ч. периодическая)
2. Справочник (с иерархией и без, возможно с периодическими реквизитами, возможно подчиненный)
3. Документ (желательно с табличной частью, лучше несколькими)
4. Регистр (оборотов, остатков)
5. Бухгалтеркиие итоги
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33018037
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да никаких проблем. В вашем распоряжении вся мощь сервера 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. И т.д. и т.п.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33018070
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> 2. Последнее время была реализована система разделения прав.

и

> 3.Была переписана система папок для хранения объектов, теперь объект может
> находится не в одной, как раньше а в нескольких папках, хоть во всех.

Подробнее (на уровне структуры) можно (если есть время)?
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33018198
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Система прав представляет собой матрицу Object, Method, User
Под методом подразумевается форма. Формы бывают всякие, какие зарегистриешь такие и будут. В разрезе атрибутов не делал, не вижу необходимости. Проще отдельными формами контролировать.

Каждый отдельный пользователь имеет логин для доступа со своими правами.
Все пользователи имеют доступ на выполнение только хранимых процедур. Адимнистратор имеет полный доступ.

Объект - это запись в таблице Objects, папка наследуется от объекта и имеет доп. таблицу Folder_Objects ( OID, ObjectOID ), соответсвенно в любую папку можно поместить сколько угодно объектов. Есть еще таблица FolderTree, в которой хранится развернутая иерархия папок. По ней можно быстро определить имеет ли отношение к папке объект. То есть хранится запись принадлежности объекта папке, ее родителя, родителя ее родителя и так до верху. Это позволяет не делать обходы деревьев.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33019906
Так_забежал_просто
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смущает то, что система, похоже, упрощает только проектирование клиентской части приложения. Что же касается серверной части - тут всё, наоборот, становится только хуже.
1) Для каждого нового класса приходится писать методы создания, удаления, редактирования. Вроде, так, или я не прав?
2) Основная писанина в нормально спроектированном приложении происходит на сервере. Вот и вопрос - эта самая объектность на сервере как-то видна? Или просто заключается в неком наборе соглашений по именованию ХП? До сих пор здесь были приведены только примеры работы с объектами из клиентской части. Всё, что на сервере - использует обычные инсёрты, апдейты и т.д.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33019984
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old Nick
Спешу поделиться своей радостью

Что еще за ядро? Ядро чего собственно? Что оно будет делать? OQL запускать и их выполнять? Или вызывать какие-то проги? В последнем случае это не ядро, а какая-то библиотека или компонент каких много. А ядро то, что будет реально проги выполнять - ядро СУБД. Кроме того, наверняка в Юконе есть поддержка пользовтельских объектов. Т.е. оно и есть объектное ядро.
Концепция не ясна.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33020234
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так_забежал_простоСмущает то, что система, похоже, упрощает только проектирование клиентской части приложения. Что же касается серверной части - тут всё, наоборот, становится только хуже.
1) Для каждого нового класса приходится писать методы создания, удаления, редактирования. Вроде, так, или я не прав?
2) Основная писанина в нормально спроектированном приложении происходит на сервере. Вот и вопрос - эта самая объектность на сервере как-то видна? Или просто заключается в неком наборе соглашений по именованию ХП? До сих пор здесь были приведены только примеры работы с объектами из клиентской части. Всё, что на сервере - использует обычные инсёрты, апдейты и т.д.

Для меня никогда не было проблемой писать серверный код, но всегда доставало при этом на каждый чих описывать клиентские изменения/дополнения. К тому же если нет стандартного способа доступа клиента к серверу, то отслеживать какие-то ограничения затруднительно.
Кто-то с клиента через ХП работает, а кто-то напрямую. Ядро эту часть берет на себя. Здесь даже формы создавать не нужно, хотя это и не закрыто специально.

Объектность на сервере именно в виде различных соглашений. Это правила создания таблиц, процедур, правила их наименования и использования. Чтобы получить истинную объектность с инкапсуляцией, нужно создавать ООЯ с компилятором, который переводил бы ОО-код в T-SQL, это не сложно, но на это нужно время и деньги. Да и смысла в этом сейчас уже нет, так как есть Cache.

Для создания простых процедур типа select/insert/update/delete делаю генератор, но далеко не всегда у сущностей эти методы простые, так что
от необходимости писать серверный код Вас это не избавит.

Для реализации ОО на сервере есть такие вещи как таблица иерархии классов, в который нужно новый класс зарегистрировать. Это дает возможность среди практически одинаковых объектов, находящихся в одном наборе таблиц, но имеющих разную природу отсекать лишние. Допустим построить отчет по объектам только этого класса и его наследников.

Кроме того это дает полиморфизм. Допустим, описываем класс документ (абстрактный) и в нем метод ИзменитьСтатус. В этом методе пишем динамический вызов хранимой процедуры конкретного класса определив его по идентификатору, являющемуся аналогом This/Me/Self. А процедуру ИзменитьСтатус дергает какой-то другой механизм, ничего не знающий о наследниках документа.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33020414
MX-ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2OldNick

Не так много дельных разработок - зато трепачей развелось...

Поддерживаю !

если использовать только готовое - какие мы нахрен программисты !
SQL-писатели..
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33020507
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас я работаю с похожей системой. Это полноценная ЕРП система с сервером MSSQL2000 и клиентом на С++. Пишем только на T-SQL.
Недостатки на мой взгляд отсутствие полноценного наследования, хотя в какой-то мере оно есть. И нет полиморфизма, как раз из-за отсутствия типизации. Но тем не менее эта система стоит почти на всех пивзаводах бывшего СССР.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33022113
Так_забежал_просто
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickОбъектность на сервере именно в виде различных соглашений. Это правила создания таблиц, процедур, правила их наименования и использования. Чтобы получить истинную объектность с инкапсуляцией, нужно создавать ООЯ с компилятором, который переводил бы ОО-код в T-SQL, это не сложно, но на это нужно время и деньги. Да и смысла в этом сейчас уже нет, так как есть Cache.
Если нет смысла - тогда зачем вообще Ваше объектное ядро? Перечислите Ваши цели и задачи. И что конкретно упростилось с появлением этого ядра. При этом соглашения об именовании ядром я бы не считал - это, скорее, инструкция по проектированию системы в объектных терминах, а ядро и инструкция - вещи разные. Все вызовы методов из клиента в этом "ядре", по-моему, можно заменить на прямые вызовы соотв. процедур - ничего не изменится.
Old NickДля создания простых процедур типа select/insert/update/delete делаю генератор, но далеко не всегда у сущностей эти методы простые, так что от необходимости писать серверный код Вас это не избавит.
Вот этот самый генератор - уже больше похож на часть (малую) настоящего объектного ядра.
Old NickКроме того это дает полиморфизм. Допустим, описываем класс документ (абстрактный) и в нем метод ИзменитьСтатус. В этом методе пишем динамический вызов хранимой процедуры конкретного класса определив его по идентификатору, являющемуся аналогом This/Me/Self. А процедуру ИзменитьСтатус дергает какой-то другой механизм, ничего не знающий о наследниках документа.
Нет. Это не полиморфизм. Опять-таки, это инструкция по реализации полиморфизма. Вы в дельфях каждый раз описываете такой метод, забабахиваете в него begin if ClassName = 'class1' then class1(Self).DoSmth ... ?
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33022148
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так_забежал_просто
Если нет смысла - тогда зачем вообще Ваше объектное ядро? Перечислите Ваши цели и задачи. И что конкретно упростилось с появлением этого ядра. При этом соглашения об именовании ядром я бы не считал - это, скорее, инструкция по проектированию системы в объектных терминах, а ядро и инструкция - вещи разные. Все вызовы методов из клиента в этом "ядре", по-моему, можно заменить на прямые вызовы соотв. процедур - ничего не изменится.

Цель - облегчить разработку интерфейса.

Так_забежал_простоНет. Это не полиморфизм. Опять-таки, это инструкция по реализации полиморфизма. Вы в дельфях каждый раз описываете такой метод, забабахиваете в него begin if ClassName = 'class1' then class1(Self).DoSmth ... ?

Это можно легко сделать с помощью макроса. Я имею ввиду прекомпилятор для T-SQL
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33022420
Так_забежал_просто
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickЦель - облегчить разработку интерфейса.
Да, можно немного упростить, согласен. Но совсем чуть-чуть - только разве карточки просмотра и редактирования объекта. Да и то нужны метаданные - какие поля пользователь видит, какие - нет.
Old NickЭто можно легко сделать с помощью макроса. Я имею ввиду прекомпилятор для T-SQL
Ну да, можно. Тогда это станет некой незамысловатой разновидностью объектного ядра ;) А вообще, есть у меня хороший знакомый, который почти один написал ядро с автоматической генерацией таблиц по метаданным в виде xml, сделал почти 3-звенку, т.е. передаёт на клиент описания интерфейса, сделал нормальный полиморфизм с наследованием... Так что есть куда расти :)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33023161
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня тоже есть знакомые, которые аналогичные вещи сделали.

1. NEXUS. Автоформы, все на T-SQL в ОО стиле

2. Ontario. Все в ОО стиле без метаданных

3. A2. Полностью на метаданных, полноценное ОО, но без клиента

4. MonolitSQL. Собственная среда разработки. Неполноценное наследование, отсутствие полиморфизма.

Все эти системы имеют инстансы в организациях. И вполне успешно работают.

Я пытаюсь вобрать все самое лучше.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33023194
Фотография 4d_monster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ссылки?
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33023320
Guest___00
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще приветствую подобные системы (есть в некоторых организациях), позволяющие разделить (объединить) проектирование базы с кодированием и облегчающие жизнь разработчику. Например... "Словарная система" совместно c "DelphiScript"... Один у них недостаток - ставят разработчика в более узкие рамки и позволяют легко менять его в случае нужды.... и соотвестственно зарплата у разработчика падает.. ;)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33023374
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь есть устаревшее описание. Но клиент почти не изменился.

http://dbobjects.narod.ru
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33025527
Так_забежал_просто
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Долго думал. Так и не понял, как соотносятся пункты
http://dbobjects.narod.ruАрхитектура системы двухуровневая. Вся логика приложения находится на сервере
и
http://dbobjects.narod.ruкомпонент TDBObject <...> полностью инкапсулирует в себе объект базы данных, предоставляет доступом к атрибутам и методам, а также управляет формами объекта, виртуальными методами и разграничением прав доступа в разрезе пользователя создавшего объект
TDBObject находится на клиенте. Так? И управляет разграничением прав доступа. Так? А если я зайду в базу через свой клиент - никакой TDBObject больше не будет ограничивать мой доступ. Так?
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33025756
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если зайти через кверик например, то доступ будет только к хранимым процедурам. А они внутри проверяют есть ли у Вас право на выполнение
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33028928
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickДля создания простых процедур типа select/insert/update/delete делаю генератор, но далеко не всегда у сущностей эти методы простые, так что
от необходимости писать серверный код Вас это не избавит.
Old NickЕсли зайти через кверик например, то доступ будет только к хранимым процедурам. А они внутри проверяют есть ли у Вас право на выполнение
Ответьте пожалуйста на несколько вопросов.
Генератор тривиальных процедур пока еще не готов? Правильно ли я понимаю, что проверка прав доступа реализуется вручную, основываясь на метаданных вашего ядра?
Есть ли причина, по которой вы решили не реализовывать разграничение доступа, предоставляемое сервером?

Спасибо.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33029287
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Генератор процедур не готов, так как я сейчас доделываю более нужные вещи.
Хотя генератор я однажды уже делал и с серверным кодом и с клиентским, где-то валяется, но он не имеет ценности пока не сделаю единую среду разработки.

2. Не понял, что значит вручную? Есть механизм назначения прав, ядро используя этот механизм определяет, что давать пользователю, а что нет.
Прикладному программисту ничего для этого делать не нужно.

3. Причина есть. Это невозможность дать ограничение на доступ к записи. У меня же каждый объект является записью, соответственно на каждую запись (объект) можно дать право на различные действия различным пользователям.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33029364
Так_забежал_просто
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ранее было сказано, что ядро нужно только для упрощения проектирования интерфейса. Я лично не думаю, что такое ядро сильно упростило бы клиентский код, т.к. вызовы "методов" легко заменяются на прямые вызовы соответствующих ХП, но это личное дело каждого.
Теперь оказывается, что ядро также должно проверять права доступа. Автоматически. На сервере. При этом генератор даже простейших ХП не готов. Как??? Как ядро автоматически будет проверять права, если все ХП пишет прикладной программист? А права на их вызов есть у всех?
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33029556
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Система не имеет абсолютной защиты. Разграничение прав выполняет клиент, проверяет какие формы можно показывать пользователю.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33029800
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickСистема не имеет абсолютной защиты. Разграничение прав выполняет клиент, проверяет какие формы можно показывать пользователю.Как это коррелирует с
Old NickЕсли зайти через кверик например, то доступ будет только к хранимым процедурам. А они внутри проверяют есть ли у Вас право на выполнение?
Именно поэтому у меня и возникли вопросы.

Old Nick2. Не понял, что значит вручную? Есть механизм назначения прав, ядро используя этот механизм определяет, что давать пользователю, а что нет.
Прикладному программисту ничего для этого делать не нужно.Вручную, это значит, что разработчик ХП должен правильно обратиться к метаданным вашего ядра (написать, как минимум, соответствующий вызов процедуры) и обработать результат, например сгенерировать ошибку.
BTW, а механизм назначения прав на запись что из себя представляет? Администратор должен явным образом раздавать права пользователю/группе/ветви иерархии пользователей? Ядро поддерживает настройку политики умолчаний, хотя бы в виде флага (все, что явно не разрешено запрещено/все, что явно не запрещено - разрешено)?
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33029910
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Процедуры базового класса имеют проверки, в остальных я это не вставляю, хотя по идее и при желании в каждой ХП можно вызывать CheckAccess

Да, именно администратор раздает права на выполнение методов объекта. Методами являются те, что вызываются с клиента. Запрещено все что не разрешено администратором
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33032256
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickПроцедуры базового класса имеют проверки, в остальных я это не вставляю, хотя по идее и при желании в каждой ХП можно вызывать CheckAccess Понятно, спасибо.

Прошу прощения за назойливость, но все-таки...
Old NickДа, именно администратор раздает права на выполнение методов объекта. Методами являются те, что вызываются с клиента. Запрещено все что не разрешено администраторомВот этот ответ сам по себе никаких вопросов не вызывает. Но вот вместе с предыдущим ответом
Old NickУ меня же каждый объект является записью, соответственно на каждую запись (объект) можно дать право на различные действия различным пользователям.
получается, что две различных записи в таблице, в общем случае, являются не экземплярами класса (объекта), а разными классами (объектами), которые имеют различные методы. Это так? Как со всем этим хозяйством управляется администратор?
Или, может быть, вы имеете ввиду, что в зависимости от значений атрибутов записи процедура CheckAccess (перекрытый метод базового класса?) определяет доступность для того или иного пользователя соответствующих методов?
И еще одно... Old NickМетодами являются те, что вызываются с клиента.А те, что не вызываются с клиента - общедоступны?

Спасибо.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33032880
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У каждого объекта есть метод(форма) назначения прав доступа, смотри приложение

Общедоступны, но при желании в каждый можно вставить CheckAccess
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33032891
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CheckAccess работает просто.
Он шарит по таблице-матрице прав и определяет доступ на выполнение метода для пользователя над объектом найдя запись в этой таблице.

Так что метод не полиморфный.

--------------------
Не учи отца и баста!
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33074546
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем! Это опять я с новостями.

На днях все-таки сделал своей системе автоформы.
Опишу что это из себя представляет:

В системе создал такие классы:
1. Форма
2. Набор данных

Класс набор данных имеет подтаблицу - список атрибутов. Для грида - это колонки, а для одной записи - это список ДБаварных контролов.

Класс форма имеет две подтаблицы - список контролов (то бишь панели, пейджконтролы, табы и в принципе можно любые дельфовые контролы указать с указанием иерархии и размеров расположения). И вторая подтаблица - список наборов данных с привязкой к контролу формы (к панели, например).

На клиенте это представлено компонентами, расположенными на базовой форме. Так что для наследника класса создавать новую форму не нужно, новые датасеты и контролы создадутся в рантайме. При этом осуществляется проверка на наличие этих контролов и компонент на форме. Это дает возможность для нестандартных форм создавать наследников и вставлять контролы и датасеты по собственному усмотрению, дабы наделать всяких выкрутасов.

Сейчас идет этап тестирования, затем сделаю скрипт базы и выложу все это вместе с ехешником клиента в инет.

Спасибо за внимание.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33076799
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2: Old Nick

По опыту разработки подобных приложений, есть очень много подводных камней:

1) Реализация настройкой выбора полей из српавочников при заполнении форм
2) Генератор процедур (задача была решена только написание своего макро-языка)
3) Наследование документов (вообщем полностью реализовать не смог)
4) Поддержка перечней документов в документах (многоуровневый master-detail)

Но на мой взгляд идея правильная ;)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33077828
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По первому вопросу не понял, поясните, плз

По второму:
Я писал генераторы для своей системы, даже 2, один скульный, один дельфевый, но пока не использую, причем сделал за несколько часов.
Смысл в том что генератор дает шаблон, который можно подправить или сразу скомпилить.

По третьему:
В прототипе моей системы была сделана довольно успешная иерархия типов документов. Проблем не было. В моей системе кроме иерархии классов еще есть иерархия форм, которая может несоответствовать классовой. Так что полная свобода творчества.

По четвертому:
Вот с этим не понятно тоже, поясните, плз
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33078952
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Реализация настройкой выбора полей из справочников при заполнении форм
Как ни странно столкнулся с тем что это одна из самых сложных задач интерфейса.
Например есть счет, нужно выбрать партнера и его расчетный счет.
Есть на форме поля:
код партнера
наименование партнера
банк
РС

И две кнопки, по первой необходимо с возможностью поиска/фильтрации выбрать партнера (возможно с предварительно установленной фильтрацией например только по Юр. лицам), и заполнить поля код/наименование. А по второй из расчетных счетов привязанных к выбранному партнеру выбрать нужный и заполнить поля ID_счета/Банк/Номер счета. При смене партнера очистить поля ID_счета/Банк/Номер счета.

Вообщем задача не очень сложная если писать скрипт на клиенте, но если реализовать это все настройками для автоматической отработки нажатий кнопок, то получается достаточно разлапистая структура.

4) Поддержка перечней документов в документах (многоуровневый master-detail)

Тот же счет, пользователь вносит шапку с датами, и хочет сразу набить перечень позиций счета, а в перечне позиций есть перечень привязок позиции к реальным операциям. Сразу возникает вопрос в какой момент получать идентификаторы записей, и пр.

Тоже задача решаемая с помощью кода но достаточно сложно решаемая с помощью настройки, а как я понимаю основная задача любой ядерной надстройки, это максимально отказаться от прямого программирования клиентской части и максимально настраивать документы. Для ускорения разработки, администрирования, обновления и сопровождения.

Old NickЯ писал генераторы для своей системы, даже 2, один скульный, один дельфевый, но пока не использую, причем сделал за несколько часов.
У нас например исходя из настройки и шаблона на макро-языке генерятся достаточно сложные процедуры, включающие в себя проверки, расчеты остатков, проводки... так что при сохранении процедуры получить сообщение об ошибке в 8154 строке очень даже можно было... правда в данном случае это конечно перебор ;)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33080201
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По первому вопросу:

Для ссылок на объекты у меня используется объектный контрол. Он внутри себя хранит идентификатор объекта, в текстовом поле показывает наименование объекта, а на кнопочке значок, соответствующий классу объекта.

При описании атрибута указываем минимальный базовый класс для выбора объектов, в данном случае это юр. лицо. После выбора клиента, выбираем счет. Для атрибута можно указать не только минимальный базовый класс, но и папку, в которой лежат объекты, в данном случае папкой будет сам клиент.

По второму вопросу:

Все что делается у меня на форме просиходит только на клиенте, никаких идентификаторов записей еще нет. И только во время сохранения в открытой транзакции берутся идентификаторы. Так что проблем пока не испытывал.

А вообще очень дельные замечания. Именно они определяют правильно ли спроектирована система. :-)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33080304
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickА вообще очень дельные замечания. Именно они определяют правильно ли спроектирована система. :-)

Несколько лет потратил на решение подобных задач правда PB - Sybase/MS.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33080345
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickСистема прав представляет собой матрицу Object, Method, User
Под методом подразумевается форма. Формы бывают всякие, какие

Кстати по поводу допусков, как показал опыт всяких внедрений, для большого количества пользователей структура Object-Method-User неудобна, лучше
Object-Method-Role-User. У нас около 1000 методов (к которым можно дать допуска) и расстановка галочек 5 ролей на 1000 методов это уже утомительное занятие, а на 40 пользователей.... ;(

А вот для маленьких систем я в свое время разрабатывал иерархическую систему допусков, когда у пользователей есть уровень безопасности и у методов есть уровень безопасности (вообщем у документов тоже есть уровень безопасности) и пользователь видит метода с уровнем безопасности <= своего. Закладки в таб-ах, меню, документы в списках тоже зависят от уровня безопасности.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33080385
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле у меня в данной матрице атрибут класса DBOAUser - абстрактный пользователь, от него наследуется группа пользователей, пользователь и еще планирую сделать класс роль, хотя пока и не понадобился.

Поэтому каждому конкретному пользователю можно назначать права, но зачастую это делается группами.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33080818
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь совсем не понятно зачем нужно это ядро. В Оракле, к примеру, объеты БД типа юзер есть, и роли есть, и тщательный контроль доступа есть. И вроде получается, что ядро тока ухудшит ситуацию для этих задач - лишнее звено.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33081613
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в Оракле можно раздавать права записям?
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33081656
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickА в Оракле можно раздавать права записям?можно. и уже давно. по крайней мере с версии 8.1.5
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33082069
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old Nick
А в Оракле можно раздавать права записям?

Там это и называется "Тщательный контроль доступа". Я его упомянул в пред посте.
Но это детали. Мне до конца главное не ясно. Что могут давать подобные ядра?
Ведь если бы они что давали, то их бы лабали софтверные фирмы. А они вместо этого занимаются генраторами приложений, библиотеками классов, в том числе и для задач приложений БД и проч.
Кроме того, не доконца понял что из себя представляет ядро. Почему оно ядро, а не просто тулз какой-то? Ну пусть еще какая-то библиотека классов. Его цель дальнейшая автоматизация разработки?
Вы про детали уже говорите, а с концепцией не все ясно.
Мне интересно, потому что и у нас на фирме один проггер завел разговор про ядро, и про его роль в качестве успешности проектов. Т.е. типа два высокооплачиваемых будут сидеть на этом ядре, а другие тока к ним обращаться и вставлять проект, что тем им выплюнут из ядра.
Но поскольку идеи с ядрами были всегда, а широкого применения не нашли, мне пока не верится в пользу. Наоборот. Када надо что-то будет, они просто скажут: "на это наше ядро не расчитано. Давайте бабки, тех задание". А парни из соседней фирмы просто налабают тоже в среде без всяких заморочек. А может и лучше, так как ядро, скорее всего, наложит ограничения на решения. В общем сомневаюсь я.
Вместо этого я им гру, чтобы лучше какой-нибуть полезный компонент склепали.
Опасаюсь, что нач-ву втюхают это. Баьки получат, а лучше не станет. Мне бы аргументов в ту и обратную сторону подсобрать бы.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33082328
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoМне до конца главное не ясно. Что могут давать подобные ядра?
Они реализуют уровни kernel и system
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33082915
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А причем здесь кернел и систем? Ведь там систем - это СУБД, а кернел - это Ось. Я так понял, что это ядро где-то между СУБД и сераерным приложением и (или) клиентским. А реалным ядром ИС считалоась вроде БД.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33083519
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoА причем здесь кернел и систем? Ведь там систем - это СУБД, а кернел - это Ось. Я так понял, что это ядро где-то между СУБД и сераерным приложением и (или) клиентским. А реалным ядром ИС считалоась вроде БД.
Нет, эта схема не включает платформу реализации/развертывания для ИС.
kernel и system - уровни логики самой системы.
Если ваш проект небольшой и одноразовый, то забудьте про схему.
Если планируется, например, делать несколько интегрированных приложений, то придется так или иначе реализовать такую схему. Если у вас нет спецов для проектирования, но много времени, то возможно даже эволюционным путем: общие компоненты, библиотеки, функционал, будучи реализованным ad hoc в приложении, "спускаются" из application на system и kernel.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33083704
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoА причем здесь кернел и систем? Ведь там систем - это СУБД, а кернел - это Ось. Я так понял, что это ядро где-то между СУБД и сераерным приложением и (или) клиентским. А реалным ядром ИС считалоась вроде БД.
Не буду спорить на счет терминов, но типичным представителем ядра может служить 1С ;) программирование бизнес логики идет внутри. А само ядро предоставляет функции по работе с бизнес объектами.

vadiminfoНо поскольку идеи с ядрами были всегда, а широкого применения не нашли, мне пока не верится в пользу.
Пример 1С, SAP, Axapta и множества более мелких и менее известных контор и приложений по моему свидетельствует об обратном.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33084284
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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? Он какой-то совсем загадочный, если не обращать внимание на все те же СУБД. Я думал его преимущество в том, что это готовая ИС для многих ПО и остается ее тока настроить с помощью каких то их генераторов приложений и всего того инструментария, тока тоже заточенного под эти ИС.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33084499
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoПро 1С я думал, что это готовая ИС для определенных ПО, состоящая из нескольких модулей. Имеет свой генератор форм, отчетов и какой-то язык для настройки. Т.е. я думал, что это все те же средства разработки приложений, только более узкого плана, ориентированые на ИС 1С. Не считал это ядром.
Возможно, термин ядро - нуждается в уточнении?

А где можно почитать концепции SAP? Он какой-то совсем загадочный, если не обращать внимание на все те же СУБД. Я думал его преимущество в том, что это готовая ИС для многих ПО и остается ее тока настроить с помощью каких то их генераторов приложений и всего того инструментария, тока тоже заточенного под эти ИС.Таких "готовых" систем сегодня практически не существует. Любая современная система состоит из некоторого ядра (движка, интерпретатора, термины разные), имеющего некоторые средства написания программного кода (в R/3 это АВАР, в 1С свой внутренний язык, в системе ФЛАГМАН Salute) и набора написанных с помощью этих средств прикладных функций, объединенных в конфигурацию (в терминах 1С), настройку. Вендор поставляет разумеется какой-то набор готовых конфигураций, плюс их делают независимые разработчики плюс конечные пользователи собственными силами.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33084900
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoНо что это за архитектура? Многозвенка?
А system и kernel похожа на контейнер в EJB?
Программная архитектура здесь ортогонально. Может быть и многозвенная, а может быть и монолит из одного *.ехе.
Да, сервер EJB реализует уровни kernel и system.
Вопрос в том, в какой мере реализует. Достаточно ли этой реализации по отношению к требованиям ваших applications. Например, не придется ли реализовывать свою систему безопасности. Если ваша система документно-ориентированная, то system должен давать сервис базовый для всех документов, чего в универсальном сервере приложений быть не может по определению. Значит - опять реализовывать и т.д.

Особенно хочется понять где это находится по отношению к СУБД. То что оно ниже application следует из Вашего прежнего поста.
Она вне схемы, справа. Это просто еще один data storage layer, который вам не нужно реализовывать, поскольку в 99% используется готовая СУБД.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33085355
dimonana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видел ли автор:

1. ОРмэппинги Hibernate/Cayenee/JDO/EntityEJB?
2. Системы кэширования JSC/TreeCache/SwarmCache/OSCache?
3. АППСервера Weblogic/JBoss/Websphere с встроенной системой декларативной безопасности?
4. Системы биндинга для Swing/Winforms (JSF/Tapestry для HTTP)?

сомнительно
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33085712
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Системы маппирования изучал издавна. Не устраивают.
во-первых с данными удобнее работать реляционно, во-вторых маппинг не дает преимуществ при построении клиента

Системы кеширования слышу первый раз

Аппсервера для веба мне не интересны, занимаюсь только винформами

Системы биндинга тоже слышу впервые
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33098664
KSLcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickСистемы маппирования изучал издавна. Не устраивают.
во-первых с данными удобнее работать реляционно


А как это интересно применение маппинга сказывается на возможность реляционной работы с данными? Те же самые хранимые процедуры это маппинг методов объектов, а уж в ХП можно творить всё что угодно уже на SQL.

Old Nickво-вторых маппинг не дает преимуществ при построении клиента


А что тогда даёт?
Те же автоформы замечательно строятся и при использовании классических объектов. Но автоформы не панацея, на одних них далеко не уедешь.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33098850
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот я и творю все в ХП :-)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33099042
KSLcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так и я также всё обработку творю в ХП, только у меня маппинг объектов есть и проблем с ним нет :)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33099707
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я как то без маппинга обхожусь и без классов на клиенте.
Все-таки писать только ХП меньше времени уходит, чем и ХП и классы, а если еще и формы не делать, то в три раза меньше времени.

Хотя больше всего времени занимают именно ХП.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #33099899
KSLcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну на вкус и цвет как говорится...

Просто если на клиенте делать без классов, то получаем какой то тонко-толстый клиент :-) Тонкий потому что применяются автоформы для динамического формирования интерфеса, а толстый т.к. есть довольно не простое ядро, которое собственно и формирует интерфейс, обеспечивает взаимодействие с пользователем и т.д. Причём это ядро должно обеспечивать все это для нетипизированных объектов с динамической заранее неизвестной структурой. Т.е. программа используется как этакий специфический браузер для бизнес объектов. В веб клиентах для контроля вводимых пользователем данных есть JavaScript, а как у Вас в автоформах проверяются вводимые пользователем данные? Или вся проверка только на сервере?
При использовании классов и обычном маппинге, часть проверок и зашивается в клиентский код класса и никаких проблем.

В принципе вся разница в направлении маппинга. У Вас реляционная модель маппируется в объектную. Есть преимущества, но есть и недостатки (например отсутствие строгой типизации на клиенте). В большинстве случаев объектная модель маппируется в реляционную, потому как работать на ООП языке с реальными объектами удобнее чем с их эммуляцией. Правда требуются дополнительные телодвижения для написания ХП, если маппинг идёт через них.
...
Рейтинг: 0 / 0
105 сообщений из 105, показаны все 5 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Люди, свершилось. Я сделал объектное ядро
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]