патч-подход для сайта asp.net - PullRequest
2 голосов
/ 24 июня 2010

Я работаю над новым проектом, который находится в .net 3.5.

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

Я полагаю, что если я смогу представить им решение, с помощью которого они могут легко развернуть изменения в LINQ to SQL, они могут быть более открыты для изменения своего мнения.

Как таковой, мне любопытно с asp.net project (не mvc), как выполнить обновление различных сборок, созданных в процессе сборки.

Скажем, например, весь мой код LINQ находится в проекте System.DataAccess и развертывается в рабочей среде,затем ошибка идентификатора идентифицируется с помощью LINQ.Насколько сложно просто развернуть измененный проект DataAccess (или, точнее, любой проект, в котором произошли значительные изменения после развертывания prod).

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

Я даже не уверен, возможно ли изменить сборку, чтобы обновленная версия была обновлена ​​только у измененных проектов?

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

Приветствия

Ответы [ 2 ]

0 голосов
/ 25 июня 2010

Хранимые процедуры SQL и LINQ-SQL не являются взаимоисключающими.

Обычно для сложных, жадных и ресурсоемких операций вы по-прежнему используете хранимые процедуры SQL (например, операцию INSERT, основанную на сложных подзапросах / логике БД) и перетаскиваете их на холст LINQ-SQL.

С точки зрения исправления - вы, безусловно, можете затем выполнить исправление этих хранимых процедур непосредственно в SQL Server, и классы LINQ-SQL не нужно перекомпилировать - если сигнатура не изменяется (параметры / тип возвращаемого значения).

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

Вы должны поместить все свои логические операции с БД / LINQ / CRUD в одну сборку (DAL).

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

В зависимости от вашей архитектуры вы можете использовать ASMX / WCF / .NET Remoting для облегчения вызовов между серверами веб-приложений и приложений. (WCF не работает междоменный).

Сказав это, если у вас все классы LINQ-SQL выполнены правильно (хорошее сочетание простых операций LINQ CRUD, представлений, хранимых процедур), как уже упоминалось, вы все еще можете легко исправлять хранимые процедуры, не влияя на ваше приложение.

0 голосов
/ 24 июня 2010

Есть плюсы и минусы для обоих.

Храмы, хранимые в SQL, быстрые и эффективные.Вы можете выполнять тяжелые операции SQL с помощью хранимого процесса, который будет выполняться намного быстрее, чем все, что вы можете делать в коде, однако это другой уровень.

LINQ не требует столько работы по обслуживанию, когда происходит изменение.Это легко закодировать.

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

Исправление патчей легко с обоими.Я считаю, что LINQ проще ИМХО.Если структура таблицы изменяется, мне не нужно изменять хранимые процедуры и функции, которые используют эти хранимые процедуры.Это скрипт быстрого изменения, ваш DBML уже должен быть обновлен, потому что вы тестировали с новой версией, а затем это развертывание.

У меня всегда есть классы LINQ и частичные данные в одной сборке, поэтомулегкий выпуск DDL.

...