powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Базовый класс для бизнес-сущностей
84 сообщений из 84, показаны все 4 страниц
Базовый класс для бизнес-сущностей
    #39703149
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, использовал в своих программах бизнес-сущности, типа
Код: c#
1.
2.
3.
4.
TPerson = class
FID:Integer;
….
property ID:Integer read FID write FID;



В итоге поняв, что это ни что иное как DataSet, сделал:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
type
  TField = record
    FName: string;
    FValue: Variant;
  end;

type
  TBase = class
  private
    FFields: TList<TField>;
    function GetField(const AName: string): Variant;
    procedure SetField(const AName: string; const AValue: Variant);
  protected
  public
    property Fields[const ANames: string]: Variant read GetField write SetField; default;
    constructor Create(ANames: array of string);
    destructor Destroy;

  end;

implementation

{ TBase }

constructor TBase.Create(ANames: array of string);
var
  AField: TField;
  I: Integer;
begin
  FFields := TList<TField>.Create;
  for I := Low(ANames) to High(ANames) do
  begin
    AField.FName := ANames[I];
    AField.FValue := null;
    FFields.Add(AField);
  end;
end;

function TBase.GetField(const AName: string): Variant;
var
  I: Integer;
begin
  Result := null;
  for I := 0 to FFields.Count - 1 do
    if FFields[I].FName = AName then
      Result := FFields[I].FValue;
end;

procedure TBase.SetField(const AName: string; const AValue: Variant);
var
  I: Integer;
  TempRec: TField;
begin
  for I := 0 to FFields.Count - 1 do
    if FFields[I].FName = AName then
    begin
      TempRec := FFields[I];   // способ 1
      TempRec.FValue := AValue;
      FFields[I] := TempRec;
    end;
end;

end.



Вопрос - как мне в моем коде применить Dictionary? Я с ними не сильно знаком, по смыслу можно объявив наверное
Код: c#
1.
FDictionaryList = Dictionary<String, TField>



Например как с помощью них реализовать поиск по имени?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703152
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какую задачу вы пытаетесь решить? Чем не устроил вариант
wsnet
Код: pascal
1.
2.
3.
4.
TPerson = class
FID:Integer;
….
property ID:Integer read FID write FID;

???
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703153
jmp_original
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wsnetНапример как с помощью них реализовать поиск по имени?
contains key ?

А вообще жесть, конечно. Бизнес-сущности...
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703156
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,
Да слишком много этих классов, это же неудобно каждый раз описывать ...
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703157
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jmp_original,
На примере моем как-то можете показать?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703158
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetДа слишком много этих классов, это же неудобно каждый раз описывать ...

Во-первых, их не больше, чем бизнес-сущностей.
Во-вторых, каждый раз описывать и не надо, есть наследование.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703159
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jmp_original,
А почему не TryGetValue?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703161
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Я их не наследую, слишком они разные эти сущности, общего ничего нет у них, как быть тогда?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703164
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetЯ их не наследую, слишком они разные эти сущности, общего ничего нет у них, как быть тогда?

Тогда надо проводить анализ глубже, ибо общего у них как минимум ID.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703170
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это называется шаблоном Active Record .

Если внутри будет буфер с полным списком объектов (например, по ID), то остальной поиск делается через обычные циклы for item in itemsList. И возвращает обычный список со ссылками TList<Object> (Т.е. меняя их меняется и "база").
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703173
jmp_original
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wsnetjmp_original,
А почему не TryGetValue?
Не знаю. У тебя надо спросить.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703174
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi, можно на моем примере показать ActiveRecord ?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703176
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Но неужели мой подход плох ? Он не имеет право на жизнь ?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703181
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi, скажи в моем коде чтобы ты дополнил, полагаю может какие-то проверки?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703184
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet,

варианты чего? Если нужен поиск, то делается банальный цикл по всем записям с проверкой по нужному полю. Если нужны данные по ID, то через TryGetValue (если там где-то внутри будет храниться Dictionary).
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703190
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi,

Тот же Dictionary сделать полем моего класса TBase ? А где его создавать в конструкторе TBase?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703196
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetНо неужели мой подход плох ? Он не имеет право на жизнь ?

Имеет, почему нет. Забавное извращение.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703201
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Почему извращение ?)
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703202
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet,

для чего он нужен? Обычно, когда что-то сложное -- весь код для работы с базой вообще в отдельном объекте/объектах хранят, чтобы не перемешивать бизнес-логику с логикой работы с базой. Т.е. типа TPerson и TPersonsTable(TBaseTable). И вот уже в TBaseTable можно и Dictionary применить для подгрузки туда данных из базы, и всё остальное типа обновления/удаления (TBaseTable.Update(ARecord: TBase)).
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703203
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi, я в этом подходе не очень понимаю, как реализовать механизм блокировки записей, ведь если мы загрузим весь набор в класс personstable, а затем по ID подгрузим из этого списка нужную запись, то нет никакой вероятности что на момент получения записи по ID список personstable не измениться и мы получим грязную запись ?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703206
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetJaDi, я в этом подходе не очень понимаю, как реализовать механизм блокировки записей, ведь если мы загрузим весь набор в класс personstable, а затем по ID подгрузим из этого списка нужную запись, то нет никакой вероятности что на момент получения записи по ID список personstable не измениться и мы получим грязную запись ?
Используй механизм транзакций. Запусти транзакцию с уровнем изоляции "repeatable read", и в ее контексте формируй клиентский набор данных.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703208
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetПочему извращение ?)

1) Потому что TDataset уже есть и твоему велосипеду ещё до него расти и расти;
2) В процессе этого роста ты откроешь для себя забавные возможности автоформирования UI
(которые в TDataset тоже уже есть);
3) Кодировать придётся на порядок больше, чем в тривиальном первом способе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703210
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetJaDi, я в этом подходе не очень понимаю, как реализовать механизм блокировки записей, ведь если мы загрузим весь набор в класс personstable, а затем по ID подгрузим из этого списка нужную запись, то нет никакой вероятности что на момент получения записи по ID список personstable не измениться и мы получим грязную запись ?
Списки на стороне клиента. Это НЕ реальные данные с базой, а фактически их слепок на какой-то момент времени (чисто для удобства, чтобы по каждому чиху не лазить в базу). Контроль целостности реализуется миллионом способов, начиная от базы данных (блочить таблицу или запись в самой базе при начале редактирования, такое позволяет тот же оракл) и заканчивая самим приложением (хранить сведения о последних изменениях в базе, после их обновлять на клиенте, если что-то меняется).

Например, мне нравится такое решение:
- в базе у объектов есть время последнего изменения;
- при начале редактирования все данные по объекту подгружаются на форму;
- после чего пользователь их изменяет;
- при сохранении происходит проверка текущих данных в базе;
- если их дата изменилась, то пользователь видит предупреждение об изменении и предложении подумать, действительно ли он хочет переписать их своими, тем самым затерев чужие изменения.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703213
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Котовасия, а Read Commited не хватит ?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703216
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetКотовасия, а Read Commited не хватит ?
Ну, если ты уверен, что в поцессе формировпния клиентского датасета никто другой не закоммитит изменения - хватит.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703217
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi, а можете коротенький пример кода как у вас это реализовано ?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703218
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КотовасияwsnetКотовасия, а Read Commited не хватит ?
Ну, если ты уверен, что в поцессе формировпния клиентского датасета никто другой не закоммитит изменения - хватит.
Жадачи могут быть разными. Представь, что ты для формирования отчеты часть данных загрузил позавчера, а часть - сегодня. Наверное, такое допустимо в период новогодних праздников, когда никто больше не работает.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703224
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet,

неа, нельзя коротенько... Если на словах: подгружается объект, передается на форму, на форме данные из объекта грузятся в контролы, пользователь редактирует, при сохранении данные из контролов сохраняются в объект, проверяется корректность, подгружается текущая версия объекта и проверяется, были ли изменени, сохраняется объект в базу. Форма закрывается.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703299
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi, а если за это время были изменения? Пользователь видит изменения или просто ему уведомление мол данные были изменены ?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703353
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetJaDi, а если за это время были изменения? Пользователь видит изменения или просто ему уведомление мол данные были изменены ?
В это время стоит таймер, который проверяет изменения и подгружает их в открытые журналы/справочники, если что-то поменялось (например, оставил программу на пол дня, а потом решил поработать). В карточках для редактирования ничего не подгружается, только предупреждение -- данные на момент открытия. Кроме того для важных данных есть еще всплывающие уведомления пользователей, мол их задача или заказ был изменен, кликните сюда для перехода.

Короче, стандартный функционал, который есть во многих CRM/ERP.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703369
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wsnetJaDi, а если за это время были изменения? Пользователь видит изменения или просто ему уведомление мол данные были изменены ?
Вообще, часто ничего такого и не нужно. Ну, прикинь, тётя Маша редактировала полдня документ, а потом, при попытке нажать "Сохранить" вдруг узнала, что дядя Петя что-то поменял раньше нее. И что ей делать - принять к сведению, идти ругаться с Петром или забить на свою работу? Пустой гемор на ровном месте.
...
При создании документа ничего не нужно делать, ибо документ существует только на клиенте, никто его не сможет испортить.
При редактировании - скорее всего, документ принадлежит его создателю, то есть - "кто создал, тот и правит", то есть, все кто не лень не смогут влезть. Т.обр., вопрос чисто организационный, и "проблемы" нет.

А если нужно все же дать возможность что-то менять нескольким юзерам - тут варианты разные. Например:
1. "Кто последний нажал Сохранить - тот и прав". Совершенно ничего страшного в этом нет, главное - предупредить людей об этом.
2. Автоматически выставляется флажок "документ редактируется Марией Ивановной", все остальные могут только смотреть. Если МарьИванна ушла на обед и не вернулась (а работать с документом нужно"), флажок можно сбросить (с регистрацией сего непотребства в логе, если очень хочется). Флажок может сбросить либо админ, либо кто-нибудь из группы юзеров, допущенных до редактирования документа.
3. и т.п.

Мы и так, и сяк, и эдак делали. Никакой разницы с т.зр. эксплуатации, но чаще всего "вариант 1". Если документ - сложная структура, то, возможно, "вариант 2": юзеру проще принять, что документ в его монопольном доступе.

Юзеры - они народ терпеливый. Что им подсунешь, то они и съедят.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703410
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД__, Jadi спасибо, что делитель опытом!

чччД__, если я реализовать хочу второй вариант - то кто первый открыл документ для правки - того и тапки?
То есть нужно хранить с документом поле статус и ФИО редактора формы?
А ежели я хочу реализовать права работы с документом - то понадобится реализовать еще и группу для редактирования?

А как организовать группу - это лучше делать на уровне СУБД или на клиентском уровне?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703411
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну не буквально я имею ввиду ФИО редактора формы, а его ID конечно же!
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703421
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД__2. Автоматически выставляется флажок "документ редактируется Марией Ивановной", все остальные могут только смотреть. Если МарьИванна ушла на обед и не вернулась (а работать с документом нужно"), флажок можно сбросить (с регистрацией сего непотребства в логе, если очень хочется). Флажок может сбросить либо админ, либо кто-нибудь из группы юзеров, допущенных до редактирования документа.
Идея мне нравится, только, ИМХО, лучше сделать что если документ не правится в течении X минут (выбирается админом системы), то сохраняется в черновик и статус "редактируется" сбрасывается сам. А при открытии черновика проверяется, были ли изменения исходного документа, и если были то открывается и новая версия и черновик в отдельном окне, с возможностью переноса выбранных изменений в основной документ.
Да, так сложнее, зато удобнее пользователю НМВ :)
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703425
Фотография roschinspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу файловую базу данных. Объясните, что такое файлы
Программерский фольклор


wsnet... пример кода как у вас это реализовано ?
Позвольте вмешаться...
wsnet, судя по вопросам опыт в Delphi у Вас не большой. По этой причине сильно рекомендую, сосредоточится на изучении стандартных подходов с использованием TDataModule-TDataSet-TDataSource и не придумывать свой неповторимый стиль (пока во всяком случае). Всегда найдется задача которую лучше решить иными способами, но для 90% случаев стандартный подход вполне годен. Кроме того это сильно упрощает жизнь последователям, которые будут поддерживать и развивать Ваш код (людей, которые знают про TDataSet много, а про вашу объектную модель бизнес сущностный знает ровно 1).
Кроме того вопросы общего характера, типа как бы мне организовать архитектуру заранее обречены на флуд и холивары, т. к. чтобы дать более мене вменяемый ответ нужно очень хорошо разбираться в предметной области, организации вашей компании и прочей куче вещей о которой ни кто не знает. В результате все будут заниматься домыслами и выдавать рекомендации на основе своего личного опыта/задачи/конторы. То, что для одного будет вполне верно и очевидно, для другого буде абсолютным бредом.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703506
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetКоллеги, использовал в своих программах бизнес-сущности, типа
Код: c#
1.
2.
3.
4.
TPerson = class
FID:Integer;
….
property ID:Integer read FID write FID;



В итоге поняв, что это ни что иное как DataSet, сделал:
...
Например как с помощью них реализовать поиск по имени?
Если уж действительно хочется "бизнес-сущности" с преферансом и томными барышнями, то можно начать пользоваться каким-нибудь ORM. Например Aurelius или от DevEx. Первый мне прям очень нравится. Не без недостатков, но очень такоой рабочий.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703604
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roschinspb, опыт есть, но он таки связан с формошлепством, вот и ищу другие подходы.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703617
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по сабжу: полнейший бред и тупосць.
Не нужно тулить ООП туда, для чего оно не предназначено.

зы: афтар конеш мой совет не послушает. Но это уже его буратинские проблемы. :)
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703630
Фотография roschinspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetroschinspb, опыт есть, но он таки связан с формошлепством, вот и ищу другие подходы.
Переходите к даташлёпству :o)
Писать свою компонентную модель, фреймворк и т.д. в реальном проекте можно только когда есть четкое понимание, того как должно быть и что своя модель будет радикально лучше стандартной, т.е. на столько лучше, что сферический Вася Пупкин предпочтет тратить своё время на её изучение, а не накидает DataSet-ов которые он и так знает. Обычно такое понимание приходит когда уже много что сделано на стандартных компонентах.
Смотрите исходники TPersistent, TCollection, TStrings, TActionList. Подумайте почему, зачем сделано так а не иначе, может какие идеи для себя почерпнете.
Это как бы совет от человека, который программировал когда небо над Невой еще чернело от птеродактелей
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703716
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoпо сабжу: полнейший бред и тупосць.
Не нужно тулить ООП туда, для чего оно не предназначено.

зы: афтар конеш мой совет не послушает. Но это уже его буратинские проблемы. :)

Да вроде бы не тупость и не бред, не ? http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=919104&msg=12104238
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703798
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wsnetL_argoпо сабжу: полнейший бред и тупосць.
Не нужно тулить ООП туда, для чего оно не предназначено.

зы: афтар конеш мой совет не послушает. Но это уже его буратинские проблемы. :)

Да вроде бы не тупость и не бред, не ? http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=919104&msg=12104238
А, так ты не просто из тех, кто скл осилить не в состоянии, а особо упоротый...
Ну, феллируй. В энтерпрайз попадешь.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703825
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД__, ни о чем!
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39703989
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetL_argoпо сабжу: полнейший бред и тупосць.
Не нужно тулить ООП туда, для чего оно не предназначено.

зы: афтар конеш мой совет не послушает. Но это уже его буратинские проблемы. :)

Да вроде бы не тупость и не бред, не ? http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=919104&msg=12104238 Там же русским по белому написано "для этой задачи это не нужно". Так что все таки "НЕ". :)

Хотите научиться удалять гланды автогеном ? ОК, бро...
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704271
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argowsnetпропущено...


Да вроде бы не тупость и не бред, не ? http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=919104&msg=12104238 Там же русским по белому написано "для этой задачи это не нужно". Так что все таки "НЕ". :)

Хотите научиться удалять гланды автогеном ? ОК, бро...

Ага. Если ООП не нужно, тогда и Delphi нафик не нужён. Пущай автор голым SQL-ом обойдётся. Декларативненько так.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704434
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Банальная пустая форма уже ООП
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704437
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эндиБанальная пустая форма уже ООП
не обязательно
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704701
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimonkaАга. Если ООП не нужно, тогда и Delphi нафик не нужён.Не ага. Речь не шла про ненужность ООП как такового.
Речь шла про использование ООП по назначению .
Попытка притянуть за уши ООП в описание бизнес-сущностей - тупосць. В любом случае это будет не ООП, а фарс и посмешище.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704752
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"ОО-языки упрощают абстракцию, возможно, даже слишком ее упрощают. Они поддерживают
создание структур с большим количеством связующего кода и сложными уровнями.
Это может оказаться полезным в случае, если предметная область является
действительно сложной и требует множества абстракций, и вместе с тем такой
подход может обернуться неприятностями, если программисты реализуют простые
вещи сложными способами, просто потому что им известны эти способы и они умеют
ими пользоваться.
Все ОО-языки несколько склонны "втягивать" программистов в ловушку избыточной
иерархии. Чрезмерное количество уровней разрушает прозрачность: крайне
затрудняется их просмотр и анализ ментальной модели, которую по существу
реализует код. Всецело нарушаются правила простоты, ясности и прозрачности,
а в результате код наполняется скрытыми ошибкми и создает постоянные проблемы
при сопровождении.
Данная тенденция, вероятно, усугубляется тем, что множество курсов по
программированию преподают громоздкую иерархию как способ удовлетворения
правила представления. С этой точки зрения множество классов приравнивается
к внедрению знаний в данные. Проблема данного подхода заключается в том, что
слишком часто "развитые данные" в связующих уровнях фактически не относятся
у какому-либо естественному объекту в области действия программы -
они предназначены только для связующего уровня.
Одной из причин того, что ОО-языки преуспели в большинстве характерных для них
предметных областей (GUI-интерфейсы, моделирование, графические средства),
возможно, является то, что в этих областях относительно трудно неправильно
определить онтологию типов. Например, в GUI-интерфейсах и графических средствах
присутствует довольно естественное соотвествие между манипулируемыми
визуальными объектами и классами. Если выясняется, что создается большое
количество классов, которые не имеют очевидного соответствия с тем, что
происходит на экране, то, соотвественно, легко заметить, что связующий уровень
стал слишком большим.
"

Эрик Реймонд, Искусство программирования для Unix
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704772
Фотография roschinspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обсуждение перешло в курилку :o)
Слышал еще такую аналогию:
SQL работает со множествами, а ООП с объектами. Объекты и множества отдаленно похожи, как например стая селедки похожа на кита, если смотреть через эхолот. Но вот не стоит селедку ловить с использованием гарпуна, а кита ловить используя сеть, или удочку.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704865
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoDimonkaАга. Если ООП не нужно, тогда и Delphi нафик не нужён.Не ага. Речь не шла про ненужность ООП как такового.
Речь шла про использование ООП по назначению .
Попытка притянуть за уши ООП в описание бизнес-сущностей - тупосць. В любом случае это будет не ООП, а фарс и посмешище.
Ну давай рассмотрим гипотетический пример. У тебя есть: Пользователи, Клиенты, Заказы, Элементы заказа, Товары на складе итд.
Используя ORM и ООП ты пишешь примерно следующий код:
Код: pascal
1.
2.
3.
4.
5.
Client := Manager.Find<TClient>(ClientID);
Order := Client.Orders[0];
for Item in Order.Items do
  if not Item.WarehouseItem.IsAvailable then
    raise EOrderError bla bla


А теперь напиши всё тоже самое "без ООП". :-)
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704914
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimonkaА теперь напиши всё тоже самое "без ООП". :-)Что это за адовая дичь ?

Я запросто напишу на SQL в 100 раз сложнее задачу. С подзапросами, функциями со сложными расчетами, курсорами и т.д.
Оно предельно быстро выполнится на нативном языке СУБД. Не создавая ни байта лишнего сетевого трафика.
И это будет компактный читабельный код, который понимают миллионы разработчиков.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704963
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoDimonkaА теперь напиши всё тоже самое "без ООП". :-)Что это за адовая дичь ?

Я запросто напишу на SQL в 100 раз сложнее задачу. С подзапросами, функциями со сложными расчетами, курсорами и т.д.
Оно предельно быстро выполнится на нативном языке СУБД. Не создавая ни байта лишнего сетевого трафика.
И это будет компактный читабельный код, который понимают миллионы разработчиков.
Видел я и такой ад конечно, когда половина логики была размазана по тысяче серверных процедур. Оно может и выполняется немного быстрее, но это реальный ад разбираться, отлаживать, а самое главное изменять под новые требования.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704999
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimonka...
Используя ORM и ООП ты пишешь примерно следующий код:
Код: pascal
1.
2.
3.
4.
5.
Client := Manager.Find<TClient>(ClientID);
Order := Client.Orders[0];
for Item in Order.Items do
  if not Item.WarehouseItem.IsAvailable then
    raise EOrderError bla bla


А теперь напиши всё тоже самое "без ООП". :-)
Мы как-то занимались интеграцией с одной конторой, они именно так, в цикле-перебором данные доставали... ЭсКуЭль они знали, но очень слабо, про джойны (например) не знали уже ничего ("А зачем? Можно ведь цикл в цикле, не зная sql вообще")... да, калеки, конечно, но вот как-то живут они с этим, и даже считают это преимуществом...
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705021
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
DimonkaL_argoпропущено...
Что это за адовая дичь ?

Я запросто напишу на SQL в 100 раз сложнее задачу. С подзапросами, функциями со сложными расчетами, курсорами и т.д.
Оно предельно быстро выполнится на нативном языке СУБД. Не создавая ни байта лишнего сетевого трафика.
И это будет компактный читабельный код, который понимают миллионы разработчиков.
Видел я и такой ад конечно, когда половина логики была размазана по тысяче серверных процедур. Оно может и выполняется немного быстрее, но это реальный ад разбираться, отлаживать, а самое главное изменять под новые требования.
То же самое можно сказать не только про SQL.
Всё зависит от разработчика.

Мне вот, лично мне, не нравится бизнес-логика в триггерах.
Код в этом случае реально размазывается
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705063
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
без хранимок любой sql сервер превращается лишь хранилище dbf для 1C :)
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705074
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД__, а причем здесь знания SQL?

Концепция предполагает, что я использую
1. Data Transfer Object
2. business object
3. data access object

И поддерживать эту модель будет легче на самом деле.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705076
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
энди, но ведь никто не отвергает их применение, хранимки нужны!
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705088
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetчччД__, а причем здесь знания SQL?

Концепция предполагает, что я использую
1. Data Transfer Object
2. business object
3. data access object

И поддерживать эту модель будет легче на самом деле.
"Легче, чем другую", конечно. На 200%. На самом деле.
Главное - велосипед свой запилить. И вовремя всплыть в разделе "работа".
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705111
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705114
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
schiwsnet,

Крайне рекомендую к прочтению

http://www.ooart.ru/uploads/book/arhitektura_korporativnyh_programmnyh_prilozhenij_fauler_m.pdf

Товарищ Фаулер Многие разработчики просто не владеют SQL и потому, пытаясь сформулировать эффективные запросы и команды, сталкиваются с проблемами. Помимо того, все без исключения технологии внедрения предложений SQL в код на языке программирования общего назначения страдают теми или иными изъянами. (Безусловно, было бы лучше осуществлять доступ к содержимому базы данных с помощью неких механизмов уровня языка разработки приложения.) А администраторы баз данных хотели бы уяснить нюансы обработки SQL-выражений, чтобы иметь возможность их оптимизировать.
По этим причинам разумнее обособить код SQL от бизнес - логики, разместив его в специальных классах.
Лютый п....ц, чтд.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705173
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД__Dimonka...
Используя ORM и ООП ты пишешь примерно следующий код:
Код: pascal
1.
2.
3.
4.
5.
Client := Manager.Find<TClient>(ClientID);
Order := Client.Orders[0];
for Item in Order.Items do
  if not Item.WarehouseItem.IsAvailable then
    raise EOrderError bla bla


А теперь напиши всё тоже самое "без ООП". :-)
Мы как-то занимались интеграцией с одной конторой, они именно так, в цикле-перебором данные доставали... ЭсКуЭль они знали, но очень слабо, про джойны (например) не знали уже ничего ("А зачем? Можно ведь цикл в цикле, не зная sql вообще")... да, калеки, конечно, но вот как-то живут они с этим, и даже считают это преимуществом...

По такой логике, если делать "много чего" на хранимках, всё должно будет летать. Но вот как-то нет. Не летает нифига.

Зааттачил примерчик :-)
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705229
AJi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJi
Гость
Сам никогда не использовал ORM и не планирую пока. Даже в небольших проектах мне проще написать несколько хранимок.
Утверждение о том, что серверную логику поддерживать сложнее - довольно спорное. Например, чтобы изменить логику сохранения данных в базу мне достаточно будет поменять хранимку, а не пересобирать приложение.
А про отчетность я вообще молчу. Если тащить данные из таблиц, в которых хранятся миллионы записей, через ORM, который вообще ничего не знает про индексы, то это может очень плохо закончится.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705231
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
DimonkaчччД__пропущено...

Мы как-то занимались интеграцией с одной конторой, они именно так, в цикле-перебором данные доставали... ЭсКуЭль они знали, но очень слабо, про джойны (например) не знали уже ничего ("А зачем? Можно ведь цикл в цикле, не зная sql вообще")... да, калеки, конечно, но вот как-то живут они с этим, и даже считают это преимуществом...

По такой логике, если делать "много чего" на хранимках, всё должно будет летать. Но вот как-то нет. Не летает нифига.

Зааттачил примерчик :-)



никто не говорил, что если использовать хранимки, то всё будет прямо летать.
Хранимки работают там, где лежат данные, и вот это их преимущество перед всеми вашими ОРМ
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705236
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AJiЕсли тащить данные из таблиц, в которых хранятся миллионы записей, через ORM, который вообще ничего не знает про индексы, то это может очень плохо закончится.
Это не так. Во всех ОРМ адекватные запросы генерируются с коректными соединениями и условиями. В отличие от SQL ошибиться тяжело и покроет 90% задач с гаранией работоспособности. Кроме того во всех этих орм всегда есть возможность выполнить собственные запросы и получить результат в удобном видео.

Более того, благодаря кешированию данных орм иногда может работать даже быстрее обычных sql. Вот такой вот парадокс.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705240
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
JaDiБолее того, благодаря кешированию данных орм иногда может работать даже быстрее обычных sql. Вот такой вот парадокс.
а как ОРМ отслеживает, что данные в кеше устарели ?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705246
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

так же, как и любые другие технологии доступа -- никак. Программист сам решает, как должен работать кеш. Например, сбросив кеш перед важным запросом, чтобы гарантировать актуальность данных.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705266
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
JaDidefecator,

так же, как и любые другие технологии доступа -- никак. Программист сам решает, как должен работать кеш. Например, сбросив кеш перед важным запросом, чтобы гарантировать актуальность данных.
то есть кеш - фикция
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705270
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

Нет, не фикция, довольно полезная штука (точнее, жизненно необходимая из-за работы с объектами по каждому чиху, когда пинг до сервера уже становится серьезной проблемой для производительности). Модификация данных -- жалкие проценты от операций чтения. Более того, бОльшая часть данных -- "статические", после создания не меняются очень долго (читай, никогда).
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705272
AJi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJi
Гость
JaDiAJiЕсли тащить данные из таблиц, в которых хранятся миллионы записей, через ORM, который вообще ничего не знает про индексы, то это может очень плохо закончится.
Это не так. Во всех ОРМ адекватные запросы генерируются с коректными соединениями и условиями. В отличие от SQL ошибиться тяжело и покроет 90% задач с гаранией работоспособности. Кроме того во всех этих орм всегда есть возможность выполнить собственные запросы и получить результат в удобном видео.

Прям таки адекватные запросы? Насколько я знаю там нельзя указывать список полей, которые отбираются из таблицы. Он же всегда выполняет
Код: sql
1.
Select * from ...

Разве нет?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705275
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AJi,

нет конечно... отбираются только те поля, которые требуются объекту... более того, если объект сложный и содержит вложенные сущности (например, ссылка на другой документ), то их можно как сразу загрузить, так и отложить на потом (когда к ним будет первый доступ в коде, то они автоматом подгрузятся).
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705277
AJi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJi
Гость
JaDiAJi,

нет конечно... отбираются только те поля, которые требуются объекту... более того, если объект сложный и содержит вложенные сущности (например, ссылка на другой документ), то их можно как сразу загрузить, так и отложить на потом (когда к ним будет первый доступ в коде, то они автоматом подгрузятся).
А ну да, mORMot так умеет.
Может быть я старенький уже, но я привык запросы сам писать:)) Так хоть точно знаешь куда копать если тупить начинает. А все эти ORM черти как генерят запросы. Возможно, вы правы и они покрывают 90% задач, но мне все равно лень пересобирать приложение, когда поменялась логика сохранения или удаления записи и достаточно лишь процедуру на сервере поменять:)

И если я все правильно понимаю, то ORM работает напрямую с таблицами. Лично я не люблю, когда у пользователей есть права на изменение данных в таблицах. Это не есть безопасно.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705278
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AJi,

Например, вспоминаю интересное решение в одном из таких фреймворков: генерится обычный запрос на селект из таблицы, а к нему добавляется джойн с подгрузкой данных внутреннего объекта, после чего результат разбирается и получается, что за раз сразу несколько объектов вытащилось из базы, и в дальнейшем они могут использоваться независимо.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705279
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AJiИ если я все правильно понимаю, то ORM работает напрямую с таблицами. Лично я не люблю, когда у пользователей есть права на изменение данных в таблицах. Это не есть безопасно.
Не только. Это может быть любой источник данных -- хоть вьюхи, хоть собственный запрос, а иногда и вовсе какая-то внешняя функция для каких-то спец полей. Вся фишка лишь в том, чтобы правильно связать поля класса с полями датасета/результата. Но да, не все фреймворки такое могут. Тут уже доки надо читать.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705282
AJi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJi
Гость
JaDiAJiИ если я все правильно понимаю, то ORM работает напрямую с таблицами. Лично я не люблю, когда у пользователей есть права на изменение данных в таблицах. Это не есть безопасно.
Не только. Это может быть любой источник данных -- хоть вьюхи, хоть собственный запрос, а иногда и вовсе какая-то внешняя функция для каких-то спец полей. Вся фишка лишь в том, чтобы правильно связать поля класса с полями датасета/результата. Но да, не все фреймворки такое могут. Тут уже доки надо читать.
При собственных запросах вообще теряется всякий интерес использовать ORM. Если бы можно было использовать процедуры сервера... Я поверхностно посмотрел несколько ORM, но там ничего подобного не увидел.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705313
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorDimonkaпропущено...


По такой логике, если делать "много чего" на хранимках, всё должно будет летать. Но вот как-то нет. Не летает нифига.

Зааттачил примерчик :-)



никто не говорил, что если использовать хранимки, то всё будет прямо летать.
Хранимки работают там, где лежат данные, и вот это их преимущество перед всеми вашими ОРМ
А что, только два варианта: ОРМ либо хранимки?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705315
AJi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJi
Гость
Котовасияdefecatorпропущено...


никто не говорил, что если использовать хранимки, то всё будет прямо летать.
Хранимки работают там, где лежат данные, и вот это их преимущество перед всеми вашими ОРМ
А что, только два варианта: ОРМ либо хранимки?
Ну почему же. Можно еще TQuery использовать и писать запросы прям там.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705360
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi, а Connection держали постоянно или по мере подгрузки данных?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705365
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet,

соединения включены всегда. С автовосстановлением связи в случаи ее потери.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705394
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, только два варианта: ОРМ либо хранимки?
Правильно так:

Есть 2 варианта:
1. прямой запрос (написанный статически или сгенеренный ORM-ом)
2. ХП.

Других вариантов нет.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705411
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo, ну почему в своей SQLite я использую Object Model.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39706390
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiwsnet,

Крайне рекомендую к прочтению

http://www.ooart.ru/uploads/book/arhitektura_korporativnyh_programmnyh_prilozhenij_fauler_m.pdf

Спасибо, вопрос интересующий - там рассказывается о модели MVC ?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39706392
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi,
У меня есть филиалы с нестабильным каналом, вот и думаю, не проще ли мне открывать, получать данные и закрывать соединение,
конечно с pooling, как здесь поступить лучше?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39706397
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetJaDi,
У меня есть филиалы с нестабильным каналом, вот и думаю, не проще ли мне открывать, получать данные и закрывать соединение,
конечно с pooling, как здесь поступить лучше?
По сути это одно и то же (кстати, в том же ODAC'е включается одной настройкой в сессии). "Постоянное соединение" -- на самом деле не постоянное и тупо отправляет "пинг" на сервер, например, раз в 30 секунд для проверки связи. И в случае проблемы -- переподключается.

Есть другие, более радикальные подходы, которые решают не разовые ошибки связи, а когда такие ошибки -- норма:
- удаленный рабочий стол или веб, приложение работает стабильно, при проблемах связи ничего не пропадает и ошибок не появляется, все данные остаются на сервере (если у клиента пропала связь, то он тупо переподключается и дальше работает);
- оффлайновые клиенты с синхронизацией данных (т.е. клиенты работают с внутренней базой, а потом через какие-то периоды времени новые пакеты данных отправляют на сервер).
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39706420
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi, да но те же RDP lic дороговаты, а до веб морды руки не доходят, да и дойдут ли
...
Рейтинг: 0 / 0
84 сообщений из 84, показаны все 4 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Базовый класс для бизнес-сущностей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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