powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Идея "перенести логику из SQL кода в C#"
25 сообщений из 43, страница 1 из 2
Идея "перенести логику из SQL кода в C#"
    #39828723
KellyLynch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть у меня C# приложение, в котором основная логика сидит в SQL-процедурах (MS SQL Server 2012). Работа приложения сводится, грубо говоря, к тому, что узнав что надо выполнять некий “Job #5”, оно (C# приложение) вызывает SQL stored proc [Job.5] и ждёт пока та завершится.
Недавно начальство предложило обдумать вопрос:

а хорошо бы нам перенести логику приложения из SQL кода в C# код, а? ” Именно так и сформулировали; не “давайте вынесем бизнес-логику в C#”; а просто “перенести логику приложения из SQL кода в C#”. Ну, будем считать что они просто не очень удачно выразились; и речь шла об именно “давайте вынесем бизнес-логику в C#”. Цели: тестируемость (получить возможность писать unit tests на C#); масштабируемость.

Сейчас мне нужны любые советы: какие подходы и инструменты (библиотеки, framework-и и тд) могут тут помочь? C# приложение написано на Visual Studio 2017.
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828742
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KellyLynch давайте вынесем бизнес-логику в C#”. Цели: тестируемость (получить возможность писать unit tests на C#); масштабируемость.

Сейчас мне нужны любые советы: какие подходы и инструменты (библиотеки, framework-и и тд) могут тут помочь? C# приложение написано на Visual Studio 2017.

Ваше начальство собирается Unit-тестами тестировать бизнес-логику?
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828748
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KellyLynch, пока напоминает старый анекдот про отличника и ангела-хранителя...
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828754
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KellyLynch,

в чём загвоздка? нет преград для процесса написанном на C#
(или другом языке) подключится к серверу (под нужным user)
и запустить процедуру (или любую другую SQL операцию/скрипт),
дождаться окончания (в пределах настроек соединения)
и получить ответ.
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828756
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KellyLynchСейчас мне нужны любые советы: какие подходы и инструменты (библиотеки, framework-и и тд) могут тут помочь?Для начала должны помочь размышления на тему "А каким образом, при бизнес-логике на клиенте, будет обеспечиваться согласованность данных?"
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828762
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmKellyLynchСейчас мне нужны любые советы: какие подходы и инструменты (библиотеки, framework-и и тд) могут тут помочь?Для начала должны помочь размышления на тему "А каким образом, при бизнес-логике на клиенте, будет обеспечиваться согласованность данных?"

Почему клиент? Скорее а appserver.
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828765
KellyLynch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLexinvmпропущено...
Для начала должны помочь размышления на тему "А каким образом, при бизнес-логике на клиенте, будет обеспечиваться согласованность данных?"

Почему клиент? Скорее а appserver.

Да - в реальности это appserver. Но всё равно - меня одолевают те же сомнения. Я вот и создал этот пост чтобы узнать как "за" так и "против" такого решения.
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828768
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexПочему клиент? Скорее а appserver.Какая разница? Перечень возможных проблем от этого не изменится.
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828769
KellyLynch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL2008KellyLynch давайте вынесем бизнес-логику в C#”. Цели: тестируемость (получить возможность писать unit tests на C#); масштабируемость.

Сейчас мне нужны любые советы: какие подходы и инструменты (библиотеки, framework-и и тд) могут тут помочь? C# приложение написано на Visual Studio 2017.

Ваше начальство собирается Unit-тестами тестировать бизнес-логику?

Да.
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828775
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KellyLynchЯ вот и создал этот пост чтобы узнать как "за" так и "против" такого решения.Возьмите простейший пример - перевод некоторой суммы со счета А на счет Б. С простейшим бизнес-правилом - "баланс счета не должен быть отрицательным".
Реализуйте данное бизнес-правило полностью на клиенте и сравните с серверной реализацией.
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828777
KellyLynch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invmKellyLynchСейчас мне нужны любые советы: какие подходы и инструменты (библиотеки, framework-и и тд) могут тут помочь?Для начала должны помочь размышления на тему "А каким образом, при бизнес-логике на клиенте, будет обеспечиваться согласованность данных?"

Вот и у меня кстати т же сомнения. Просто мне кажется что "там наверху" надеются на то что Entity Framework это каким-то образом сам решит. Я Entity Framework пока не работал, поэтому ещё не знаю - что он может и чего не может.
Буду признателен, если сможете привести некую ситуацию, где опровергается надежда на то что "Entity Framework это каким-то образом сам решит".
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828797
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KellyLynch,

вроде ведь и так по определению:
логика приложения наверняка и так в приложении,
логика сервиса (appserver) - на сервисе,
логика SQL - в SQL (процедурах)

(хотя не всегда получается изолировать и разнести по шагам из-за длинной цепи зависимостей)

пока не будет понятия о том что именно и куда выносить - разговор ни о чём.

пример 1 (больше бизнес):
не кучу параметров к вызываемой процедуре которая на основании этих параметров решает
какую (sub) процедуру вызывать
а сразу вызов нужной процедуры с меньшим количеством параметров.

пример 2 (как выше указали: целостность):
begin tran ... commit/rollback, там-же логика резерваций ID, локи и пр.

первый пример - реализуем, второй - рассыпание граблей.

в результате тесты скорее всего только покажут что лучше это делать на SQL proc
(т.е. ничего нового, что было известно заранее, много активности, негативная продуктивность)

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

KellyLynchЦели: тестируемость (получить возможность писать unit tests на C#); масштабируемость.
в чём проблема с тестируемостью из C# сейчас?
есть ограничения по масштабируемости?
C# приложение не может вызвать оду и туже процедуру несколько раз параллельно?
KellyLynchСейчас мне нужны любые советы: какие подходы и инструменты (библиотеки, framework-и и тд) могут тут помочь?PowerShell тот-же .NET / C# , без проблем и для стресс тестирования, и для логического
многие автоматизированные тесты с ним напрямую и работают

KellyLynchC# приложение написано на Visual Studio 2017. приложение написано на C# , разработано в VS
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828860
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KellyLynch,
бьюсь об заклад - это твоя личная бредовая идея :) угадал?
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828868
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KellyLynchСейчас мне нужны любые советы: какие подходы и инструменты (библиотеки, framework-и и тд) могут тут помочь? C# приложение написано на Visual Studio 2017.

----Цели: тестируемость (получить возможность писать unit tests на C#); масштабируемость.

Кто же вам мешает писать униттесты на TSQL? У меня их мегабайты.
А масштабируемость на базе уже во флаконе.

Просто найдите толкового db девелопера.
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828889
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KellyLynch,

Почитайте вот это , и дайте почитать начальству. Подумайте.
Несмотря на то, что статье 15 лет, актуальности она не потеряла. И автор в своем мнении не одинок .
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828890
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lepsik,

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

внешний процесс может вызывать те-же скрипты (инструментарием того-же SQL) широким фронтом
разных сессий одновременно, т.е. параллельная мультизадачность в workflow
(и речь вовсе не о multithreading, т.к. это немного другая тема со своими возможностями на обоих endpoint)
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828916
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KellyLynch,

споры где должна быть логика не утихают 20 лет
однозначного ответа нету (есть + и - у каждого вариант)
поэтому логика "я тут прочитал статью, а давайте как все перенесем" чревата последствиями ("работает - не трожь!")

с другой стороны , если начальство готово выбрасывать деньги на ветер - почему бы и нет? без зп не останетесь
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828920
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarikNavyKellyLynch,

споры где должна быть логика не утихают 20 лет
однозначного ответа нету (есть + и - у каждого вариант)
поэтому логика "я тут прочитал статью, а давайте как все перенесем" чревата последствиями ("работает - не трожь!")

с другой стороны , если начальство готово выбрасывать деньги на ветер - почему бы и нет? без зп не останетесь

Вопрос - почему начальство вдруг заговорило об этом?
Может есть какие-то проблемы?
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828922
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KellyLynch,

По данному вопросу надо выполнить ритуал НАХУА

...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828942
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vikkivLepsik,

для модульного тестирование может быть достаточно,


И я и автор пишут про Unit тестинг. TSQL сильно уступает C# из за отсутствия ООП, но в целом позволяет это делать вполне эффетктивно.

То о чем вы пишите это совсем другое, фунциональное и нагрузочное тестирование.
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39828980
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KellyLynchЕсть у меня C# приложение, в котором основная логика сидит в SQL-процедурах (MS SQL Server 2012). Работа приложения сводится, грубо говоря, к тому, что узнав что надо выполнять некий “Job #5”, оно (C# приложение) вызывает SQL stored proc [Job.5] и ждёт пока та завершится.
Недавно начальство предложило обдумать вопрос:

а хорошо бы нам перенести логику приложения из SQL кода в C# код, а? ” Именно так и сформулировали; не “давайте вынесем бизнес-логику в C#”; а просто “перенести логику приложения из SQL кода в C#”. Ну, будем считать что они просто не очень удачно выразились; и речь шла об именно “давайте вынесем бизнес-логику в C#”. Цели: тестируемость (получить возможность писать unit tests на C#); масштабируемость.

Сейчас мне нужны любые советы: какие подходы и инструменты (библиотеки, framework-и и тд) могут тут помочь? C# приложение написано на Visual Studio 2017.
зависит от типа приложения, чем больше оно датаориентированное - тем меньше смысл выноса в третье звено. Если это типичная прикладуха - то скорее имеет смысл чем нет, т.к. там много логики.
Другой вопрос если система уже есть и работает то переписывание не даст бизнес выгоды, обычно такой рефакторинг имеет смысл при значительной перестройке приложения (например из винформс на веб), иначе смысла трогать нет
Из фрейморков обычная VS, пишешь апп сервер c WEB API например
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39832414
shalomb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если начальство хочет ,нужно их удовлетворить .Они просто хотят работать по схеме
Aplication --> BL--> DAO--> DB , так напиши методы в BL вызывая те же SP и вся любовь.
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39832423
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quote invm]KellyLynch"А каким образом, при бизнес-логике на клиенте, будет обеспечиваться согласованность данных?"
Транзакции ещё никто не отменял, в т.ч. и из под Entity Framework
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39832424
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quote Yuri Abele]invmKellyLynch"А каким образом, при бизнес-логике на клиенте, будет обеспечиваться согласованность данных?"
Транзакции ещё никто не отменял, в т.ч. и из под Entity Framework
Я про уточнение, что речь об Application Server.
...
Рейтинг: 0 / 0
Идея "перенести логику из SQL кода в C#"
    #39832438
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KellyLynch,

переходите на решение с проектами баз данных в VS, используя инструменты SQL Server data tools. В нём есть и средства для модульного тестирования. Однако, на практике эти тесты становятся интеграционными, чисто модульные для декларативного языка слишком сложны в реализации.

Бизнес логика обычно реализуется на клиенте, если количество пользователей не превышает 5 человек. Тезис о масштабируемости непонятен в этом случае. Масштабировать можно количество пользователей или объемы данных, но ни то, ни другое не достигается средствами клиентского ПО по понятным причинам - клиентское ПО ориентировано на персональную работу.
...
Рейтинг: 0 / 0
25 сообщений из 43, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Идея "перенести логику из SQL кода в C#"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]