|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
Вопрос скорее не в тему, не нашел куда написать. Есть простая программа для работы с базой, 4-5 таблиц, отчеты, настройки. логика отчетов сидит в процедурах на SQL Server-е. Писали все похожие программы (весь наш небольшой отдел) в процедурном стиле - т.е. "exec name..." это все в не типизированный датасет или сразу в грид, максимум биндинг к контролам. Была одна DLL для подключения к базе и ведения лога. Суть вопроса как лучше проектировать подобные мелкие рабочие проекты - Первое что вижу - это использовать типизированный датасет, но стиль от этого не поменяется. Второе через свои классы моделирующие объекты, их выводить в гриды, т.е. уже ближе к ооп. Еще NHibernate - до него еще не добрался, толком ни чего не знаю, но если тема подойдет то буду разбираться. Сейчас разбираю шаблоны проектирования, но еще не дошел до той стадии чтоб знать где применить. В общем подскажите на что следует потратить время чтобы это можно было применить на работе. (SQL Server, филиалы, задаи в основном по анализу основной рабочей базы и внутренняя бухгалтерия) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2012, 13:19 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
Хороший вопрос, мне бы тоже, было интересно узнать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2012, 13:09 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
Sergey SПисали все похожие программы (весь наш небольшой отдел) в процедурном стиле - т.е. "exec name..." это все в не типизированный датасет или сразу в грид, Странно было бы, если бы в типизированый датсет, который является классом. И уже по нему определяются датасеты. Многогодовой спор. Использовать типизированые датасеты или нет? Я за них. Сразу в грид - можно, если грид только для чтения. В репорты можно тоже сразу. Если данные надо редактировать, то датасет предоставляет механизмы, которых нет при использовании других способов ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2012, 18:18 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
Sergey S, если чистый CRUD - то можно и датасет. Если в приложении есть логика - лучше NHibernate или другой маппер. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 01:14 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
SolYUtorЕсли в приложении есть логика - лучше NHibernate или другой маппер. Логика в приложении - моветон ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 16:53 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
Cat2Логика в приложении - моветон Чё правда что ли? Даже ни одной логической конструкции нельзя? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 20:31 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
Cat2SolYUtorЕсли в приложении есть логика - лучше NHibernate или другой маппер. Логика в приложении - моветон Логика в приложении - бест практис. Забудь о логике в хранимках, это не логика, а ошметки логики из кусков сиквел кода, обернутые в транзакцию. Про модульное тестирование что-нить слыхал? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 23:12 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
МСУCat2пропущено... Логика в приложении - моветон Логика в приложении - бест практис. Забудь о логике в хранимках, это не логика, а ошметки логики из кусков сиквел кода, обернутые в транзакцию. Про модульное тестирование что-нить слыхал? согласен, это не есть задача базы данных ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 12:40 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
А как решаются вопросы производительности? К примеру сейчас есть одна программа по расчету премии - тут задействована своя с-ма бюджетирования Конечный результат выводится в excel-ий файлик для каждого филиала по 4 листа разных таблиц - это все выдается несколькими процедурами, строится довольно быстро, т.к. вся логика сидит в процедуре и выполняется на хорошем сервере... Если загнать логику в клиента.... нада попробовать.... скажите кто примерно такого уровня сложности (не сильно простую) логику пробовал - нормально будет? И начать рекомендуете с NHibernate или просто в своих объектах логику заложить? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 22:10 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
Sergey S, какая еще сложность при расчете премий? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2012, 12:16 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
Sergey SА как решаются вопросы производительности? К примеру сейчас есть одна программа по расчету премии - тут задействована своя с-ма бюджетирования Конечный результат выводится в excel-ий файлик для каждого филиала по 4 листа разных таблиц - это все выдается несколькими процедурами, строится довольно быстро, т.к. вся логика сидит в процедуре и выполняется на хорошем сервере... Если загнать логику в клиента.... нада попробовать.... скажите кто примерно такого уровня сложности (не сильно простую) логику пробовал - нормально будет? И начать рекомендуете с NHibernate или просто в своих объектах логику заложить?При правильном применении Linq2Sql отличие в производительности от варианта на хранимых процедурах будет минимальным, а в некоторых случаях даже быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2012, 13:24 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
ViPRosSergey S, какая еще сложность при расчете премий?Насчитать себе нужную сумму, чтобы никто не заметил. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2012, 13:25 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
МСУCat2пропущено... Логика в приложении - моветон Логика в приложении - бест практис. Вас не смущает тот факт, что истина на самом деле где-то по середине? МСУЗабудь о логике в хранимках, это не логика, а ошметки логики из кусков сиквел кода, обернутые в транзакцию. Не умеешь готовить - не берись. МСУПро модульное тестирование что-нить слыхал? О, да-да! Типа, хранимые процедуры не поддаются тестированию... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2012, 17:17 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
sphinx_mvО, да-да! Типа, хранимые процедуры не поддаются тестированию... Теоретически возможно. Вопрос в трудозатратах. Для храмок слишком долго устанавливать контекст. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2012, 17:22 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
Алексей К, но все же она не на все способна, к сожалению. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2012, 17:32 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
SolYUtorsphinx_mvО, да-да! Типа, хранимые процедуры не поддаются тестированию... Теоретически возможно. Это возможно не только теоретически, но и практически. И не только в "ручном" режиме: список фреймворков , где можно получить ссылки на тест-фреймворки в том числе и для SQL-серверов - как минимум, для Oracle, MSSQL, MySQL, PostgreSQL... SolYUtorВопрос в трудозатратах. Для храмок слишком долго устанавливать контекст. IMHO, одинаковая функциональность примерно одинакова по трудозатратам на тестирование. И установление контекста требует примерно тех же усилий. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2012, 19:43 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
netivanАлексей К, но все же она не на все способна, к сожалению.Её его возможности в последнее время весьма активно развиваются. Уже имеющихся возможностей вполне достаточно. Недостающие возможности ( вроде рекурсивных запросов ) легко выносятся во View в БД. В итоге имеем в сервере приложений сопоставимые с хранимыми процедурами возможности + все возможности C# и его библиотек. Что как минимум позволит работать с данными из разных БД, веб-сервисов и т. п. Если даже сегодня это не надо, в дальнейшем такая необходимость весьма вероятна. Пусть кому-то удобно "по-старинке" иметь логику в ХП, но решение с логикой в LINQ на сервере приложений, как минимум, тоже имеет право на жизнь. По некоторым параметрам LINQ несколько удобнее SQL, взять те же ассоциации vs join, let vs вложенный запрос и т. д. Хотя и недостатки тоже есть. Истина как всегда где-то посередине... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2012, 08:49 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
МСУДалеко на такой "логике" не уедешь. Размазня без ООП - это не логика, это линейный лапшекод :)Линейный лапшекод лучше ООП-лапшекода. Его проще разгребать. Так что тут тоже нужно без фанатизма. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2012, 10:56 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
Алексей КЛинейный лапшекод лучше ООП-лапшекода. Его проще разгребать. Так что тут тоже нужно без фанатизма. :-) Если у нас десяток строк кода, то соглашусь. Не доводилось работать с хранимыми процедурами под 1000 строк и более? Причем их таких несколько штук под конкретную "задачу", примерно одинкаковых по смыслу. И за отсутствием наследования, прилодилось писать вспомоготальные общие хранимки, которые нужно было вкорячить в те десять. Бррр, накую такую "бизнес-логику" ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2012, 11:05 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
МСУАлексей КЛинейный лапшекод лучше ООП-лапшекода. Его проще разгребать. Так что тут тоже нужно без фанатизма. :-) Если у нас десяток строк кода, то соглашусь. Не доводилось работать с хранимыми процедурами под 1000 строк и более? Причем их таких несколько штук под конкретную "задачу", примерно одинкаковых по смыслу. И за отсутствием наследования, прилодилось писать вспомоготальные общие хранимки, которые нужно было вкорячить в те десять. Бррр, накую такую "бизнес-логику" Видимо MSSQL? Там да, с этим хреново, нет пакетов, "как в Ёракле" :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2012, 11:14 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
Алексей КВидимо MSSQL? Там да, с этим хреново, нет пакетов, "как в Ёракле" :-) Опять двадцать пять :) Не нужно концепцию оракуля перекладывать на сиквел, не нужны сиквелу пакеты. Да и сам пакет не решит ничего в разрезе наследования, просто перекладывание гавна по кучкам, не более того. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2012, 11:40 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
МСУНе доводилось работать с хранимыми процедурами под 1000 строк и более? Причем их таких несколько штук под конкретную "задачу", примерно одинкаковых по смыслу. Да, Алексей, самое главное - как насчет документирования такого "кода"? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2012, 11:41 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
МСУОпять двадцать пять :) Не нужно концепцию оракуля перекладывать на сиквел, не нужны сиквелу пакеты.Нужно. Чтобы не было 100500 хранимых процедур с дикими префиксами в именах, чтобы хоть как-то можно было в них ориентироваться. МСУДа и сам пакет не решит ничего в разрезе наследования, просто перекладывание гавна по кучкам, не более того.Сущности наследовать можно во вьюхах через select * from . Полиморфизм - а нужен ли он тут? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2012, 12:41 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
МСУМСУНе доводилось работать с хранимыми процедурами под 1000 строк и более? Причем их таких несколько штук под конкретную "задачу", примерно одинкаковых по смыслу. Да, Алексей, самое главное - как насчет документирования такого "кода"? :)Рефакторить надо. Производить "выделение метода" по Фаулеру. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2012, 12:42 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
Алексей КНужно. Чтобы не было 100500 хранимых процедур с дикими префиксами в именах, чтобы хоть как-то можно было в них ориентироваться. А вот нечего плодить такой говно-зоопарк. А то понаплодят гумна, а потом там еще и ориентироваться нужно. Кстати, тема пакетов в сиквеле - баян. В топку пакеты. Алексей КСущности наследовать можно во вьюхах через select * from . Полиморфизм - а нужен ли он тут? Мне страшно представить, что у тебя потом там с планом выполнения запросов будет, когда ты понагородишь огороды "наследования". DBA кастрирует. Во-вторых, наследование через вьюхи - это просто жесть :) В-третьих, наследование нужно не только в отображении, но и во внутренней логике (например, расчет зп, отпусков, увольнений и т.д. - какие в жопу вьюхи?). Полиморфизм нужен, Леша, нужен. Алексей КРефакторить надо. Производить "выделение метода" по Фаулеру. Причем тут рефакторить? Я спрашиваю о документировании всего этого безобразия. Неужели о чем-то невообразимо нереальном вещаю? Вот уйдет твоя команда обезьянок, придут новые - начинаем с перелопачивания и изучения кода по камментам? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2012, 15:58 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
МСУАлексей КНужно. Чтобы не было 100500 хранимых процедур с дикими префиксами в именах, чтобы хоть как-то можно было в них ориентироваться. А вот нечего плодить такой говно-зоопарк. А то понаплодят гумна, а потом там еще и ориентироваться нужно.А что делать, пакетов-то нет. Приходится плодить. :-) Отсутствие пакетов - одна из причин, почему мы отказались от логики в MSSQL в пользу сервера приложений. МСУКстати, тема пакетов в сиквеле - баян.Я в курсе. :-) Просто удивляет упорное нежелание Microsoft их делать. :-) МСУВ топку пакеты.Нет! :-) МСУАлексей КСущности наследовать можно во вьюхах через select * from . Полиморфизм - а нужен ли он тут? Мне страшно представить, что у тебя потом там с планом выполнения запросов будет, когда ты понагородишь огороды "наследования".Оптимизатор запросов MSSQL порой просто творит чудеса. Большой респект от меня его авторам. Вы ещё наши запросы, рожаемые EF, не видели. :-) И ничё, планы выполнения мало отличаются от рукописных запросов, несмотря на обилие лишних вложенностей и прочего мусора. МСУDBA кастрирует.Я как-то рассказывал, с какими админами приходится иметь дело. Так что не кастрирует. :-) Все планы выполнения по возможности оптимизируются разработчиками на этапе разработки/опытного внедрения. DBA в этом участия не принимают. МСУВо-вторых, наследование через вьюхи - это просто жесть :)"На безрыбье и рак рыба" (с) :-) МСУВ-третьих, наследование нужно не только в отображении, но и во внутренней логике (например, расчет зп, отпусков, увольнений и т.д. - какие в жопу вьюхи?). Полиморфизм нужен, Леша, нужен.Я не против. :-) Просто нам пока не требовалось. МСУАлексей КРефакторить надо. Производить "выделение метода" по Фаулеру. Причем тут рефакторить? Я спрашиваю о документировании всего этого безобразия. Неужели о чем-то невообразимо нереальном вещаю? Вот уйдет твоя команда обезьянок, придут новые - начинаем с перелопачивания и изучения кода по камментам? :)Ну сначала рефакторить, потом документировать. В противном случае вариантов кроме коментариев внутри процедур не вижу. Зато сэкономили на разработке, эффективный менеджмент, хуле... Работает да и ладно, и нечего туда лазить. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2012, 17:55 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
Алексей КА что делать, пакетов-то нет. Приходится плодить. :-) Отсутствие пакетов - одна из причин, почему мы отказались от логики в MSSQL в пользу сервера приложений. А не нужно плодить, нужно писать хранимые процедуры только тогда, когда действительно без них никак. А то понаплодят банальных крудов, понаввинчивают туда костылей со временем, всё это разростется как снежный ком - сиди потом и репу чеши, как это всё в порядок привести :) Пакеты тут делу не помогут, если логика - то полноценная доменная модель. P.S. Логики не может быть в БД впринципе, это не логика - а ее части, размазанные по говнохранимкам. Алексей КЯ в курсе. :-) Просто удивляет упорное нежелание Microsoft их делать. :-) Автоматизация хаоса? :) Алексей КНет! :-) Да, етить! Алексей КОптимизатор запросов MSSQL порой просто творит чудеса. Большой респект от меня его авторам. Вы ещё наши запросы, рожаемые EF, не видели. :-) И ничё, планы выполнения мало отличаются от рукописных запросов, несмотря на обилие лишних вложенностей и прочего мусора. Он не всегда творит чудеса, бывает так закрутит, что даже хинты не помогут :) Встречался я с такими поделиями... Алексей КЯ как-то рассказывал, с какими админами приходится иметь дело. Так что не кастрирует. :-) Все планы выполнения по возможности оптимизируются разработчиками на этапе разработки/опытного внедрения. DBA в этом участия не принимают. Ну хотя бы уже на этапе эксплуатации есть кому взять хлыст и начать рядить ряды кодеманок? :) Алексей К"На безрыбье и рак рыба" (с) :-) А некуй сувать своё удилище туда, где нихрена не ловится Моллюсков ловить разве что? Алексей КЯ не против. :-) Просто нам пока не требовалось. Ну сам же говорил о плюсах спагетти-кода. Получай! ) Алексей КНу сначала рефакторить, потом документировать. В противном случае вариантов кроме коментариев внутри процедур не вижу. Зато сэкономили на разработке, эффективный менеджмент, хуле... Работает да и ладно, и нечего туда лазить. :-) Вот и я про тоже. Комменты внутри лапшехранимок, конечно, не радость... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2012, 18:10 |
|
Датасет, свой класс или что-то еще
|
|||
---|---|---|---|
#18+
Cat2Сразу в грид - можно, если грид только для чтения. В репорты можно тоже сразу. Покажите пожалуйста пример - как можно выгружать прямо вгрид? Модератор: Топик был основательно почищен, причём пришлось удалять и посты с ценным контентом, но, к сожалению, неприемлемые по форме. Просьба к участникам впредь воздерживаться от личных выпадов, это идёт во вред форуму. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2012, 19:36 |
|
|
start [/forum/topic.php?all=1&fid=17&tid=1350203]: |
0ms |
get settings: |
11ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 300ms |
total: | 451ms |
0 / 0 |