Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Идея "перенести логику из SQL кода в C#" / 25 сообщений из 43, страница 1 из 2
20.06.2019, 12:08
    #39828723
KellyLynch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идея "перенести логику из SQL кода в C#"
Есть у меня 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
20.06.2019, 12:39
    #39828742
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идея "перенести логику из SQL кода в C#"
KellyLynch давайте вынесем бизнес-логику в C#”. Цели: тестируемость (получить возможность писать unit tests на C#); масштабируемость.

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

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

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

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

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

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

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

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

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

Вот и у меня кстати т же сомнения. Просто мне кажется что "там наверху" надеются на то что Entity Framework это каким-то образом сам решит. Я Entity Framework пока не работал, поэтому ещё не знаю - что он может и чего не может.
Буду признателен, если сможете привести некую ситуацию, где опровергается надежда на то что "Entity Framework это каким-то образом сам решит".
...
Рейтинг: 0 / 0
20.06.2019, 14:20
    #39828797
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идея "перенести логику из SQL кода в C#"
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
20.06.2019, 16:14
    #39828860
MaratIsk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идея "перенести логику из SQL кода в C#"
KellyLynch,
бьюсь об заклад - это твоя личная бредовая идея :) угадал?
...
Рейтинг: 0 / 0
20.06.2019, 16:24
    #39828868
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идея "перенести логику из SQL кода в C#"
KellyLynchСейчас мне нужны любые советы: какие подходы и инструменты (библиотеки, framework-и и тд) могут тут помочь? C# приложение написано на Visual Studio 2017.

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

То о чем вы пишите это совсем другое, фунциональное и нагрузочное тестирование.
...
Рейтинг: 0 / 0
21.06.2019, 03:18
    #39828980
stenford
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идея "перенести логику из SQL кода в C#"
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
01.07.2019, 17:01
    #39832414
shalomb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идея "перенести логику из SQL кода в C#"
Если начальство хочет ,нужно их удовлетворить .Они просто хотят работать по схеме
Aplication --> BL--> DAO--> DB , так напиши методы в BL вызывая те же SP и вся любовь.
...
Рейтинг: 0 / 0
01.07.2019, 17:16
    #39832423
Yuri Abele
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идея "перенести логику из SQL кода в C#"
[quote invm]KellyLynch"А каким образом, при бизнес-логике на клиенте, будет обеспечиваться согласованность данных?"
Транзакции ещё никто не отменял, в т.ч. и из под Entity Framework
...
Рейтинг: 0 / 0
01.07.2019, 17:16
    #39832424
Yuri Abele
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идея "перенести логику из SQL кода в C#"
[quote Yuri Abele]invmKellyLynch"А каким образом, при бизнес-логике на клиенте, будет обеспечиваться согласованность данных?"
Транзакции ещё никто не отменял, в т.ч. и из под Entity Framework
Я про уточнение, что речь об Application Server.
...
Рейтинг: 0 / 0
01.07.2019, 18:15
    #39832438
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идея "перенести логику из SQL кода в C#"
KellyLynch,

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

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


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