Выполнение .NET Managed Assembly из SQL Server 2008 - плюсы, минусы и рекомендации - PullRequest
0 голосов
/ 17 июня 2010

ищет мнения / рекомендации / ссылки для следующего сценария, с которым я сейчас сталкиваюсь.

Платформа:

  • .NET 4.0 Веб-приложение
  • SQL Server 2008

Задача:

  • Капитальный ремонт компонента системы, который выполняет (довольно) сложные математические операции на основе специфическая активность пользователя и обновление многочисленных таблиц в базе данных.Обычный пользователь активность может быть "Боб" решает опубликовать тему на форуме.Это приводит к тому, что (конечное решение) необходимо рассмотреть различные факторы (о должности, которую он сделал), а затем выполнить некоторые математические расчеты на основе значений / соотношений поиска, а также других данных в базе данных, добавив в результате некоторые другие данные.из этих операций.

Опции:

Хорошо - вот что я думаю.Хотя это было бы намного проще сделать в C # (LINQ-SQL), это не имеет особого смысла, так как большинство вычислений основаны на значениях в БД, и со временем будет трудно контролировать / оптимизировать / отлаживать LINQ.,Следовательно, я склоняюсь к созданию управляемой сборки (библиотеки классов C #), которая содержит значения поиска (константы), а также к использованию математических классов в существующем .NET BCL.По сути, я бы раскрыл несколько методов, которые могут быть вызваны хранимыми процедурами T-SQL.

Для меня это имеет следующие преимущества:

  1. Простота математики.Сложная математика в .NET против сложной математики в T-SQL.Ежу понятно.=)
  2. Абстракция вычислений, настраиваемых значений «поиска» и бизнес-логики из необработанного T-SQL.
  3. T-SQL нужно только заботиться о данных, упрощая хранимые процедуры и делая ихпроще в обслуживании.Когда ему нужно выполнить математику, он делегирует управляемую сборку.

Итак, сказав, что - я никогда не делал этого раньше (вызов .NET Assmembly из T-SQL), и после некоторого поиска в GoogleЛучший сайт, который я могу придумать, это здесь , что полезно, но устарело.

Итак - о чем я спрашиваю?Ну, во-первых, мне нужны лучшие рекомендации о том, как на самом деле это сделать.«Это» заключается в том, как вызывать сборку C # .NET 4 из хранимых процедур T-SQL в SQL Server 2008. Во-вторых, кто там это делал, с какими проблемами (если они есть) вы сталкивались?

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

Ура!

Ответы [ 2 ]

1 голос
/ 17 июня 2010

Хорошим введением в SQL CLR является Использование интеграции CLR в SQL Server 2005 .SQL Server CLR будет загружать только CLR 2.0 и только часть утвержденных библиотек, см. Поддерживаемые библиотеки .NET Framework .Библиотеки .Net 3.5 (т.е. .Linq) не поддерживаются, но могут быть загружены на свой страх и риск.Но вам не удастся загрузить ваши сборки .Net 4 в SQL Server 2005, 2008 или 2008 R2.

0 голосов
/ 12 декабря 2010

Запуск управляемой сборки с использованием SQL Server не слишком сложен, просто следуйте примеру Microsoft

Но в целом это плохая идея, вы смешиваете обязанности и, вероятно, пытаетесь оптимизировать преждевременно

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

...