powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Какие практики создания бизнес-обьктов
6 сообщений из 6, страница 1 из 1
Какие практики создания бизнес-обьктов
    #34586733
TJivich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возьмём как пример два простых обьекта (бизнесс-обьекты форума), предположим Thread и Message. Оба обьекта используються как в виде массива, так и в виде отдельного обьекта. Только вот какой паттерн использовать для эффективной выдачи информации (например Flyweight).

Тоесть предположим есть две ситуации: в одной выдаёться список Thread и информация о Message не требуеться, в другой нужен один Thread и несколько Message.

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

Пусть предположим есть 2 конструктора, пустой для нового Thread и уже созданный получаеться через Id.

Thread(Guid Id);Thread();

Когда нам нужен один Thread, то всё прозрачно, но инициализировать список Thread каждого по отдельности кажеться сомнительной затеей. Что подскажете эксперты???
...
Рейтинг: 0 / 0
Какие практики создания бизнес-обьктов
    #34586748
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TJivichВопрос состоит в том, как эффективно построить доступ к базе данных через обьекты,
В этом фразе содержится внутреннее противоречие.

В данном случае Вам прямая дорога в lazy режим. Thread должен иметь коллекцию Messages, по умолчанию пустую, и загружаемую только тогда, когда кому-то потребуется.
...
Рейтинг: 0 / 0
Какие практики создания бизнес-обьктов
    #34586759
TJivich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer TJivichВопрос состоит в том, как эффективно построить доступ к базе данных через обьекты,
В этом фразе содержится внутреннее противоречие.


А в чём противоречие???

Ну про message это ясно, а что делать со списком Thread???

Я так понимаю сценарий:
1. Загрузка из базы списка Threads
2. Через Thread(DataRow dr) загружаеш данные в каждый элемент

Подумываю следует иметь кешированный список Thread и из него как то получать данные.
...
Рейтинг: 0 / 0
Какие практики создания бизнес-обьктов
    #34586857
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TJivichА в чём противоречие???
В "эффективный доступ к БД через объекты", где под "объектами" понимается некий ORM.

Как бы это объяснить.... если Вы смотрели какую-либо литературу по RPC, наверняка видели утверждение, что хорошее приложение, если вдруг взять и заменить некоторые его объекты удаленными, имеет все шансы стать очень неэффективным. Рассматривая БД через ORM, Вы видите по сути "удаленные объекты-строки", к которым создаете локальную оболочку - и результат ровно такой же.

Скажем, рассмотрите тот же Thread. В списке сообщений как правило отображаются такие атрибуты, как "количество сообщений в топике", "время последнего сообщения", "автор последнего сообщения". Следовательно, эти атрибуты должны быть доступны. Каким образом?

Самый "объектный" вариант - считать список Messages, из которого они все легко получатся. Проблема в том, что тогда для обновления списка тем надо будет перечитать все сообщения форума, что вряд ли приемлимо. Поэтому, скрипя зубами, придется идти на компромисс - завести в Thread-е поле для количества, которое считать sql-ным count(), и кроме того метод наподобие GetLastMessage(), который ищет и считывает последнее сообщение. Это лучше? Намного. Эффективно? Да как сказать.. можно и лучше. Например, таким образом считывается текст сообщения, который может занимать многие килобайты и быть совершенно не нужен. Поэтому, продолжая оптимизацию, придется сделать что-нибудь типа GetLastMessageHeader(). Это уже не очень ложится в "чистую и красивую объектную иерархию", но что самое скверное, все равно значительно уступает по эффективности одному-единственному оптимизированному sql-запросу, который вернет строку типа "та информация, которая нужна в данном месте". Это уже не будет ни "топик", ни "сообщение", это будет непришейкобылехвост, но - самый быстрый.

TJivichНу про message это ясно, а что делать со списком Thread???
Это зависит от того, что Вы вообще делаете. Если планируется веб-интерфейс с сервером приложений, список тредов - явный кандидат на постоянное присутствие в памяти. Однако тут возникает вопрос истории (старых-старых тредов, когда кто-то вдруг возьмет и ткнет в двадцатую страницу форума).
...
Рейтинг: 0 / 0
Какие практики создания бизнес-обьктов
    #34586963
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TJivichВопрос состоит в том, как эффективно построить доступ к базе данных через обьекты
доступ к реляционой базе данных нужно организовывать средствами реляционного доступа. К объктной СУБД - через объекты. Можно и к реляционной через объекты, если позволяют источники финансирования.
...
Рейтинг: 0 / 0
Какие практики создания бизнес-обьктов
    #34601588
CSLA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможный вариант реализации можно посмотреть в CSLA (www.lhotka.net),шаблон - EditableSwitchable
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Какие практики создания бизнес-обьктов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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