Сохранен 44
https://2ch.hk/pr/res/359366.html
Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

СТРУКТУРА ПРИЛОЖЕНИЯ

 Аноним Чтв 05 Июн 2014 15:05:39  #1 №359366 
1401966339192.jpg

Спа программач! Очень нужен совет от толковых ребят. Сам я студенота и в коддинге ньюфажина, поэтому остро нуждаюсь в севете продвинутых анчоусов.

Суть такова - я хочу написать (точнее уже начал) небольшую программку - есть SQL база, ну допустим с работниками которым начисляется зарплата в зависимости от количества часов, все операции происходят в этой базе (то есть база полностью в себе имеет весь набор необходимых хранимок\функций), и есть простенькая оболочка, написанная на C# (на формах или на WPF я пока не решил).

Теперь вопросы:
1. Как по умному организовать структуру такого приложения? Я хочу разбить его на такие классы:
- SQL класс - полностью вся работа с SQL, все запросы и получения в базу и из базы
- Messages класс - отвечающий за все взаимодействия с окнами между собой, передачу информации туда и обратно
- Main класс - главный гласс, который будет полностью содержать в себе всю необходимую логику и связывать два предыдущих класса.

Мне это видится так. Может кто то подскажет - правильно это или нет?

2. Я уже начал писать базу, все таблицы готовы, а вот для написания функицй, думаю - может стоит базу уже привязать к оболочке, что бы было легче понимать какие функции уже готовы, а какие еще надо дописать? Или пока база не будет готова на 100% не стоит этого делать? Как обычно делают в таких случаях?

3. Все никак не могу понять - в WinForms, есть такой контрол - DataSet - раньше я просто подвязвал к нему таблицу, но мне кажется это не совсем правильно, хоть и очень просто. Наверно за отображение таблицы должен класс SQL отвечать, но не понимаю, не прописывать же все вручную? Короче - как правильно сделать - хочу что бы таблица отображалась на форме, что для этого использовать - ДатаСет или как то хитровыебанно отображать самому, потому что датасет, создает какой то мутный объект и его не сильно то и поменяешь.

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

Аноним Чтв 05 Июн 2014 15:15:19  #2 №359369 

>>359366
Начни wpf и mvvm, структура сама выстроится (посмотришь в примерах)

Аноним Чтв 05 Июн 2014 23:33:56  #3 №359604 

>>359369
>mvvm

Спасибо. Еще какие нибудь советы кроме съебать?

Аноним Чтв 05 Июн 2014 23:53:11  #4 №359612 

бампецкий, вдруг еще кто что полезное подскажет

Аноним Птн 06 Июн 2014 00:02:18  #5 №359618 

>>359366
палю годноту
http://www.haskellforall.com/2012/08/the-category-design-pattern.html

Аноним Птн 06 Июн 2014 00:14:10  #6 №359625 
1401999250227.jpg

>>359612
Что тебе еще надо? Иди и пиши код, блядь
Зачем тебе хранимки в базе? Тебе c# дали, linq2sql дали, entity framework наконец.
Пишешь Data Access Layer, пишешь Business Logic Layer, качаешь Prism, пишешь ViewModel и View.

Аноним Птн 06 Июн 2014 00:44:44  #7 №359632 

>>359625
>Зачем тебе хранимки в базе?
Что значит зачем? Хранимые процедуры зачем? А функции тогда зачем? Лал. За все остальное - спасибо.

Аноним Птн 06 Июн 2014 00:45:40  #8 №359633 
1402001140752.jpg

>>359618
Пик стронгли рилейтед

Аноним Птн 06 Июн 2014 00:49:05  #9 №359634 
1402001345672.png

>>359625
>>359369
Я просто забыл сказать, что у нас ОЧЕНЬ хуево преподают и препод долбоеб. Поэтому приходится спрашивать такие вещи.

Аноним Птн 06 Июн 2014 01:31:44  #10 №359640 

> - SQL класс - полностью вся работа с SQL, все запросы и получения в базу и из базы
Почему бы не Entity Framework?

Аноним Птн 06 Июн 2014 02:37:32  #11 №359647 

>>359640
Я хочу сделать отдельный класс, инкапсулирующий в себе полностью все, просто потому, что я хоть примерно представляю как это сделать, как его написать.
Но, честно говоря, я не настолько понимаю (точнее почти не знаю) что такое Entity Framework что бы с уверенностью сказать, что это то, что мне нужно.
Поэтому собственно и хотел что бы мне как дауну, на пальцах, объяснили что мне нужно, а я уж дальше сам, все подучу.

Аноним Птн 06 Июн 2014 10:12:57  #12 №359680 

>>359632
>Зачем тебе хранимки в базе, если ты можешь в коде написать тоже самое.
>>359634
Берешь Троелсена @ Читаешь Троелсена.

Аноним Птн 06 Июн 2014 10:27:23  #13 №359681 

>>359680
>Берешь Троелсена @ Читаешь Троелсена.

Я вот прямо сейчас, начал перечитывать уже новое издание. Вижу что он овердохуя добавил всего нового.

>>359680
>если ты можешь в коде написать тоже самое.

Ну я не знаю, буду писать и по ходу наверно решу как будет лучше.

Аноним Птн 06 Июн 2014 13:42:07  #14 №359700 

>>359366
В WPF тоже все эти DataSet, DataAdapter и прочее есть, только на формочки их кидать нельзя, пиши их в отдельный класс. Вручную ты пропишешь только связи между датасетами/запросами/коммандами и подключениями. Ну и биндинг контролов еще.
>>359625
Затем что ОРМ - тормозное говно и попытка выполнить через них джойн (без изъебов со stateless session всякими там) заканчивается зависанием на пару часов при наличии более чем 3,5 записей?
Процедурки, вьюшки, вычисляемые поля это оче удобно, разгружает клиенты и канал, дает хорошую производительность.

Аноним Птн 06 Июн 2014 13:50:36  #15 №359703 

>>359700
Большое спасибо за ответ. Буду все таки в WPF писать, так что дельный совет. Спасибо.

Аноним Птн 06 Июн 2014 19:57:26  #16 №359758 

>>359632
> зачем разбивать код на функции, когда я весь код могу засунуть в одну строку и выполнять его своим интерпретатором брейнфака
пофиксил свитерка

sageАноним Птн 06 Июн 2014 20:35:58  #17 №359767 

Что тут объяснять?
Объяснять, что SQL - декларативный язык для построения запросов к реляционной СУБД, а хп - процедурные расширения, которые ни в пизду ни красную армию?
Объяснять, что бизнес-правила по природе своей декларатины (ключевое слово правила)?
Объяснять, что процедурные языки программирования в принципе не предоставляют средств композиции своих примитивов?
Объяснять, что pl/sql банально проигрывает по своей выразительности обычным языкам общего назначения, а о разработке специализированных языков для задач предметной области на его основе просто не может быть речи?
Объяснять, что ограничение в 31 символ на длинну идентификатора - это какой-то наркоманский бред, особенно в контексте того, что индексы и отношения имеют составные идентификаторы?
Или может быть стоит объяснить, что РБД в принципе довольно убогий концепт для моделирования бизнес-задач?
Что моделирование длительных бизнес-процессов - process-biased, а не data-biased, как его воспринимают престарелые ораклаёбы, лепя тысячи флагов в своих таблицах или копируя по таймеру строки из таблицы несогласованных договоров в таблицу согласованных?
Объяснять то, что на хп, в отличие от чистого SQL тупо нет стандардов?
Рассказать про то, что использование хп фиксирует интерфейс работы базой и элементарный ad-hoc фильтр по 4 полям требует 2^4 возможных реализаций для обеспечения оптимальной производительности, а простенький join-projection хп пускают ко дну с отрицательным дифферентом без право на всплытие?
Объяснить, что ОП, не смотря на свой юный возраст, уже сатанист, без пяти минут еврей, будущий хаскелееб и нутром чувствует, что что-то здесь не так, хотя не может высказать формальных претензий, а тупое быдло пытается заставить его лепить триггеры на очередную говнопроводку в Р-схеме, родившейся в голове очередного 40-летнего тупого уёбка и реализованной студентами за ЖРАТ?
ТАК ЧТО ТЕБЕ ОБЪЯСНИТЬ, ТУПОЙ МУДАК, ОТВЕТЬ МНЕ ПОЖАЛУЙСТА!!!111?
или давай лучше ты по-тихому съебешь с моего /c/ на свой sql.ru, ты сэкономишь массу времени себе и мне, да.

sageАноним Птн 06 Июн 2014 20:37:06  #18 №359769 

>>359700
>Процедурки, вьюшки, вычисляемые поля это оче удобно

Пошел нахуй отсюда, пидор!

sageАноним Птн 06 Июн 2014 21:18:45  #19 №359779 

>что у нас ОЧЕНЬ хуево преподают и препод долбоеб
Дали им гугл. Ищи информацию, обмазывайся, читай книги, пиши программы, развивайся - не хочу, хочу ходить на занятия к окуклившимся преподам, хочу ныть и жаловаться на них и сосать хуи.
Да ебанный же ты по голове, две недели изучения исходников копрокубов дадут больше, чем джва года изучения быдлокодинга в вузе!
Преподы его плохо научили, блядь. Охуеть вообще.

Аноним Птн 06 Июн 2014 21:47:33  #20 №359789 
1402076853653.jpg

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

Ладно, поясню:

>>359767
>ТАК ЧТО ТЕБЕ ОБЪЯСНИТЬ, ТУПОЙ МУДАК, ОТВЕТЬ МНЕ ПОЖАЛУЙСТА!!!111?

Я сразу написал - НИХУЯ НЕ ЗНАЮ, любые предложения и советы, с интересом рассмотрю. Я ни от кого не требую и не прошу ничего. Если есть возможность - я буду только благодарен. Да я читаю книги, да я гуглю, но такой поток информации что я не успеваю все понимать, а много забывается, если его не используешь. Я понимаю, что с высоты своего полета, ты охуенный бетмен и можешь тут всех хуями обкладывать, но если у тебя бугурд по любому поводу, может тебе стоит самоутверждаться на тех, кто может тебе ответить? А я - с интересом перечитаю твой ответ, мне кажется в нем есть полезная информация. Спасибо.


>>359779
>Дали им гугл. Ищи информацию, обмазывайся, читай книги, пиши программы, развивайся

Я еще раз повторю - я написал выше - я полным ходом читаю, гуглю. Но к сожалению, не все гуглится, не все я успеваю прочесть, понять, правильно применить. Поэтому я пришел сюда и спрашиваю совет. Да учусь, да я знаю от ньюфагов тут припекает. Но я по крайней мере просто спрашиваю совет, а не прошу решать за меня лабы или что то подобное. Я все делаю САМ, полностью сам все пишу, мне был нужен только совет по тому в чем я не уверен. Просто до того, что бы все выглядело как надо. Вот и все. Зачем бугурдить? Я разве кому то что то доказываю? С кем то спорю? У кого то что то выпрашиваю? Так почему у вас пердаки в клочья постоянно? Нихуя нельзя спросить, что бы не набежали попоболящие.
И кстати про хранимки, я взял ВНЕЗАПНО базу большого коммерческого приложения и охуел от того, какой там пиздец внутри. Писали наверняка такие же, бугурдуны, как некоторые тут. И что бы избежать такого пиздеца, я и задаю тут глупые вопросы.

Аноним Птн 06 Июн 2014 21:51:27  #21 №359791 

>>359789
В вашем сообщении слишком часто употребляется солов "бугурд"
Какого года твое коммерческое приложение?

Аноним Птн 06 Июн 2014 21:52:07  #22 №359792 

>>359789
>Я конечно слышал, что в тематике одни сплошные бугурдуны
Лол, тут все всех поливают говном, даже небо, даже Аллаha. Больше чем в /b/.

Аноним Птн 06 Июн 2014 21:56:48  #23 №359795 
1402077408005.jpg

>>359791
>Какого года твое коммерческое приложение?

Первоначально - 2008, но его постоянно модифицируют, обновляют.

Аноним Птн 06 Июн 2014 22:05:49  #24 №359797 
1402077949849.png

>>359795

sageАноним Суб 07 Июн 2014 00:29:18  #25 №359833 

>>359789
нюфаня чтит традиции

Аноним Суб 07 Июн 2014 03:39:11  #26 №359852 

>>359833
>>359797
ШТА?

Аноним Суб 07 Июн 2014 09:00:44  #27 №359865 

>>359700
>Затем что ОРМ - тормозное говно и попытка выполнить через них джойн (без изъебов со stateless session всякими там) заканчивается зависанием на пару часов при наличии более чем 3,5 записей?
Пруфы в студию.

Аноним Вск 08 Июн 2014 11:50:47  #28 №360059 

>>359865
В гугле забанили, рачок?

Аноним Вск 08 Июн 2014 17:39:54  #29 №360158 

Примерный гайд:
1. Идешь на http://compositewpf.codeplex.com/, качаешь оттуда документацию и quickstarts
2. Читаешь доку, реализуешь shell и бутстраппер. Нугетом качаешь prism и unity https://unity.codeplex.com

В шелле важно определить регионы приложения, которые будешь юзать позже. В бутстраппере - конфигуришь module сatalog и ioc-контейнер
3. После того, как у тебя хоть что-нибудь запустится, делаешь свой первый модуль. В нем создаешь View, который регистрируешь в регион на шелле. Инжектишь в него ViewModel с помощью Unity. 1 модуль - 1 проект в солюшене
4. Пишешь классы модели. Обычно 1 таблица в бд = 1 класс модели, но it depends. В классах модели только бизнес-логика, никакой работы с бд. Для начала можно просто написать набор свойств, которые дублируют поля в бд.
5. Для каждого класса модели пишешь сервис-класс, который будет слоем взаимодействия с бд. Сюда идут методы Add(Model model), GetById(Guid id) и т.п. Можно написать тут вызовы к хранимкам, можно взять какой нить ОРМ (сам пока не пользуюсь). Модель и сервисы лучше держать в отдельном проекте.
6. Инжектишь во ViewModel нужные сервис-классы, пишешь в нем логику взаимодействия с UI. ViewModel должна наследоваться от NotificationObject. Чтобы заслать данные во View, юзаешь RaisePropertyChanged, чтобы получить действия юзера из View - DelegateCommand.
7. Когда модулей становится больше 1, разбираешься с EventAggregator, пишешь на нем взаимодействие между модулями.

Аноним Вск 08 Июн 2014 18:02:12  #30 №360167 

>>360059
Ты вбросил какуюто хуйню, без пруфов идешь нахуй.

Аноним Вск 08 Июн 2014 18:05:12  #31 №360168 

>>360158
Без обид бро, но ты слишком услекся. Инжект инжектом погоняет, а ОРМ осилить времени не хватило.

Аноним Вск 08 Июн 2014 18:28:11  #32 №360170 

>>360168
Проект, над которым работаю, достался от аутсорсера. Много легаси. Мигрировать все на орм долго и муторно, + есть подозрение что производительность таки просядет (много сложных запросов).
В Prism на IoC много что завязано, да и разбираться с тем же unity не нужно долго. Код же от использования контейнера становится намного понятнее, если немножко разберешься.
EF в планах на изучение, да. Опыта у меня немного, 1.5 года, так что я не всезнайка-сеньор пока. Но даже если юзаешь ОРМ, базовые знания sql не помешают.

Аноним Вск 08 Июн 2014 18:32:11  #33 №360172 

>>360170
>Для начала можно просто написать набор свойств, которые дублируют поля в бд.
Ну ты же понимаешь, что это чисто мартышкин труд?

Аноним Вск 08 Июн 2014 18:43:50  #34 №360180 

>>360172
Для начала сойдет, просто и понятно. Когда придет понимание, какие бизнес-правила нужны, в этих классах появятся методы.
Альтернатива какая? Автогенерация?

Аноним Вск 08 Июн 2014 18:50:56  #35 №360182 

>>359366
Много читать а экспериментировать, анон. В процессе задавать вопросы. Никто тебе не сможет пояснить по хардкору в двух словах за структуру аппликухи, это элементарно невозможно - во первых все приложения разные и выполняют разные задачи, во вторых по поводы структуры конкретных все всегда срутся, не умолкая - это нормально. В итоге тебе помогут: опыт, знание различных мнений, быть в тренде (лол), книги, тусование на форумах, чтение новых статей и всё такое.
Всё, что тебе могу сказать конкретного - ты движешься в правильном направлении, хотя бы задаешь подобные вопросы. Дерзай в общем, пиши код, смотри че получается и думай, что можно сделать удобней.

Аноним Вск 08 Июн 2014 18:53:56  #36 №360184 

>>360180
>Автогенерация

Аноним Вск 08 Июн 2014 19:08:10  #37 №360188 

>>360184
Автогенерация не даст нужных тебе методов, насколько я понимаю.
+ у меня вот в таблице бывает по 150 полей. Энтерпрайз, мать его. Могут регулярно добавляться новые. В проге нужно полей 10, грубо говоря. Мне проще написать ручками POCO-класс, чем сгенерировать монстра на 150 полей и потом искать в нем нужные.

Все зависит от задачи. Плюс описанного мной подхода - можно за выходные написать каркас и перейти к полезному для юзера коду. После n-итераций с добавлением новых фич у него будет готовое приложение и, скорее всего, возникнут идеи / вопросы о том, что можно улучшить / упростить.
Prism несложный. Unity несложный. log4net несложный. EF думаю тоже несложный. Но чем больше таких "несложных" либ в проекте, тем сложнее будет начать.
Алсо, мое мнение не какая-то 100% истина. Я поделился своим опытом. Расскажи, как бы сам сделал.

Аноним Вск 08 Июн 2014 19:27:16  #38 №360191 

>>360188
Да всё правильно ты говоришь, спорить тут не о чем.

У меня во главе угла стоит скорость разработки, поэтому я сгенерю класс хоть из 1500 полей, ради одного поля. Вообще я не повторяю код. Если я создал в БД таблицу, зачем мне её переписывать еще и на сишарпе. Мне за это не платят.

Аноним Вск 08 Июн 2014 21:46:20  #39 №360223 

>>360188
> у меня вот в таблице бывает по 150 полей. Энтерпрайз, мать его. Могут регулярно добавляться новые.
что это за дерьмо блядь, откуда там в таблице новые поля ёбана? тока domain-first-model тока хардкор

Аноним Вск 08 Июн 2014 21:50:13  #40 №360224 

>>360223
Мало того, даже количество полей в доменной модели может стать очень-избыточным, для рожи в таком случае используется одата
мимо-написал-свою-реализацию-одаты

Аноним Вск 08 Июн 2014 21:53:59  #41 №360226 

>>360191
>я сгенерю класс хоть из 1500 полей, ради одного поля. Вообще я не повторяю код. Если я создал в БД таблицу, зачем мне её переписывать еще и на сишарпе.
говноед блядь, хорошо что вас обезьян не допускают за километр до реальных систем

Аноним Вск 08 Июн 2014 23:55:43  #42 №360250 
1402257343496.jpg

>>360226

Аноним Пнд 09 Июн 2014 15:33:32  #43 №360411 

>>360182
>>360158

Спасибо.

Аноним Срд 02 Июл 2014 22:36:59  #44 №366772 

>>360226
TOP LEL. UEBIVAY

comments powered by Disqus