2015-06-24 2 views
0

Я разрабатываю свое финансовое приложение для простых операций. Но мне нужно учесть все изменения, внесенные в мои записи. Я использую C# ASP.NET для своего кода приложения и MS SQL 2014 для моей БД.Какой слой для метода сохранения изменений?

Мой вопрос: что лучше?

Application Layer: записать метод в код, который создает запись в таблице истории в БД?

Уровень базы данных: записать триггер/процедуру, которая создает запись в таблице истории в БД?

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

+0

Как часто эта операция выполняется? –

+0

Мы записываем около 5 транзакций в день, каждая транзакция имеет около 30 (заполненных пользователем) полей ... примерно 150 записей в день в таблицу истории. –

+1

Это не о чем беспокоиться. Просто будьте последовательны в своей стратегии доступа к данным и выберите то, что подходит вам лучше. Из-за этого у вас не будет проблем с производительностью –

ответ

0

Это имеет много общего с предпочтениями и ремонтопригодностью.

Для удобства обслуживания я всегда придерживаюсь подхода Layered.

Вот пример почему.

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

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

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

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