Является ли отслеживание изменений в ORM необходимостью или роскошью в контексте веб-приложений? - PullRequest
1 голос
/ 14 ноября 2009

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

например. если у меня есть действие, которое обновляет экземпляр Product, который я знаю во время кода, какое состояние я изменяю, я могу просто сообщить хранилищу «пожалуйста, обновите этот экземпляр».

Чтобы уточнить, мой вопрос касается функции отслеживания изменений в продуктах ORM, таких как LINQ to SQL, Entity Framework и других.

Ответы [ 8 ]

1 голос
/ 14 ноября 2009

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

Как и большинство решений, это ситуативный.

1 голос
/ 14 ноября 2009

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

Я подозреваю, что мы не совсем говорим об одном и том же, когда используем термины "без сохранения состояния" и "отслеживание изменений". В попытке уточнить, давайте возьмем пример, бронирование номеров:

User X books a room for a meeting with user Y by entering some data and hitting submit

    the system makes some entries in a database

User Y wants to change the time of the meeting, enters some data and hits submit

    the system amends the data (and tells user X)

Таким образом, «состояние» комнаты изменилось в обоих случаях. Нужно ли отслеживать изменения? Я предполагаю, что мы говорим о том, чтобы вести учет , который внес изменения? контрольный журнал . Ответ на этот вопрос не технический, а бизнес-смысл изменений. Здесь это экшн, возможно, нам все равно. Но представьте себе другой бизнес-пример, в котором рассматриваются платежи в миллионы фунтов. Фактический шаблон взаимодействия может быть таким же: пользователь X указывает платеж, а пользователь Y меняет его. Внезапно мы действительно заботимся о том, кто что сделал и кто что сказал.

Таким образом, веб-приложения ничем не отличаются от любых других приложений, отдельные взаимодействия могут поддерживать или не поддерживать состояние разговора, но полезные веб-приложения (как и любые другие) изменяют состояние системы. Решение о том, что проводить аудит, является деловым решением.

0 голосов
/ 16 ноября 2009

Не забывайте, что веб-приложение - это просто пользовательский интерфейс. Если вы разделили слой бизнес-логики на относительно сложную логику, вам может потребоваться отслеживание изменений там. Но если вы работаете с простым приложением только для чтения, таким как stackoverflow.com, вам определенно не нужно отслеживать изменения.

Кстати, ответ Майкла Мэддокса также может иметь смысл, вы можете жить без отслеживания изменений, если хотите.

0 голосов
/ 14 ноября 2009
0 голосов
/ 14 ноября 2009

Я думаю, что из-за того, как вы сформулировали свой вопрос, возникает некоторая путаница.

Отслеживание изменений в контексте ORM обычно относится к данным . Из ответов на другие ответы вы ссылаетесь на Версии схемы .

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

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

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

0 голосов
/ 14 ноября 2009

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

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

0 голосов
/ 14 ноября 2009

Более простой (бизнес, а не технический) вопрос: кому нужно проверять изменения на сайте? Обычно, даже для многих сайтов, которые в настоящее время не поддерживают отслеживание изменений, ответ ДА ​​- недовольный сотрудник или злоумышленник может удалить или изменить информацию, и должен быть способ отыскать ответственного лица, изменить, и версию до.

0 голосов
/ 14 ноября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...