Архитектура системы
От: Аноним  
Дата: 23.08.05 08:31
Оценка:
С#, SQL Server.
Что надо:
Имеется бд, в которой хранится модель (объекты и связи между ними). Объекты естественно разных типов, и обладают всевозможными свойствами. Кроме того, есть такое понятие как "анализ", который грубо говоря представляет временной срез состояния модели. В большинстве своем, данные, отображаются пользователю в виде таблиц (Master-Detail, Master-Detail-Subdetail). Предполагается несколько таких страниц для анализа и редактирования данных. Кроме того, помимо непосредственно отображения данных, необходимо эти данные верефицировать в соответствии с определенными алгоритмами, и подсказывать пользователю "узкие места" — объкты с некорректными данными. Пользователи в каждый конкретный момент времени могут просматривать и редактировать только один анализ.

Проведя несколько дней в рездумьях ничего лучше придумать не смог:
В качестве основы используем System.Data.DataSet. Клиент для работы получает у сервера заполненный из базы DataSet. Этот датасет является по сути анализом (snapshot'ом состяния модели на какой-то момент времени). Далее этот датасет кешируется на клиенте, и используется как для отображения данных, так и для их верификации. После редактирования данных — DataSet.GetChanges(), отправка изменений на сервер, получение изменений с сервера и DataSet.Merge().
Плюсы:
— Быстро (относительно) реализуемо
— Удобно осуществлять верификацию данных, поскольку они в датасете все есть. Возможность гулять по связям в датасете — дополнительный плюс, т.к. типы верификации могут быть достаточно хитрыми
— Не надо заботиться о согласованности данных и результатов их верификации.
Минусы:
— Большой объем передаваемых данных по сети.
— Проблемы с отображением данных — думаю, что не удастся использовать этот датасет во всех случаях жизни, просто прибиндив его к гридам, наверняка придется создавать DataTabble на лету, и подпихивать их гридам.
— что-то еще...

Как Вы считаете, имеет ли такое решение право на жизнь? Если нет, то почему, и как будет лучше???
Спасибо за внимание!
Re: Архитектура системы
От: GlebZ Россия  
Дата: 23.08.05 10:51
Оценка:
Здравствуйте, Аноним, Вы писали:

А> После редактирования данных — DataSet.GetChanges(), отправка изменений на сервер, получение изменений с сервера и DataSet.Merge().

Легче перечитывать полностью данные после завершения транзакции. Это более безопасно и защищает от плавающих ошибок и неправильной реализации транзакций.
А> — Проблемы с отображением данных — думаю, что не удастся использовать этот датасет во всех случаях жизни, просто прибиндив его к гридам, наверняка придется создавать DataTabble на лету, и подпихивать их гридам.
Есть такая штука как DataView. Очень полезная вещь.

А>Как Вы считаете, имеет ли такое решение право на жизнь? Если нет, то почему, и как будет лучше???

Еще как имеет право. Это практически текущий стандарт для несложных решений.

С уважением, Gleb.
Re[2]: Архитектура системы
От: Аноним  
Дата: 23.08.05 18:57
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Здравствуйте, Аноним, Вы писали:


А>> После редактирования данных — DataSet.GetChanges(), отправка изменений на сервер, получение изменений с сервера и DataSet.Merge().

GZ>Легче перечитывать полностью данные после завершения транзакции. Это более безопасно и защищает от плавающих ошибок и неправильной реализации транзакций.
А>> — Проблемы с отображением данных — думаю, что не удастся использовать этот датасет во всех случаях жизни, просто прибиндив его к гридам, наверняка придется создавать DataTabble на лету, и подпихивать их гридам.
GZ>Есть такая штука как DataView. Очень полезная вещь.

А>>Как Вы считаете, имеет ли такое решение право на жизнь? Если нет, то почему, и как будет лучше???

GZ>Еще как имеет право. Это практически текущий стандарт для несложных решений.

GZ>С уважением, Gleb.


А что надо, для сложных
Re[3]: Архитектура системы
От: GlebZ Россия  
Дата: 24.08.05 13:39
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А что надо, для сложных

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

С уважением, Gleb.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.