Этого треда уже нет.
Это копия, сохраненная 1 августа 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
C#/Сишарп/.NET Тред #28 /csharp/ 2107311 В конец треда | Веб
Прошлый тред: /pr/res/2096462.html

Литература вторым постом

1. Ресурсы:
https://dotnet.microsoft.com/learn
https://docs.microsoft.com/ru-ru/dotnet/csharp/
https://metanit.com/

2. Онлайн-компиляторы:
https://ideone.com/
https://dotnetfiddle.net/

3. WinForms или WPF?
Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае с WinForms делать намного сложнее.

4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить?
C# активно развивается, недавно вышел .NET 5 и С# 9.0. Дотнет стал полностью опенсорсным и кроссплатформенным. В том же энтерпрайзе он очень даже востребован. Но в то же время стоит реально оценивать свои возможности и ресурсы. Основная часть вакансий приходится на ДС и ДС2. "Чистых" C#-разработчиков требуется буквально несколько десятков на всю страну. Вакансий в несколько раз меньше, чем в других направлениях. Порог входа намного выше, чем, например, в том же фронтенде.

5. Какую IDE выбрать?
Для Windows самым очевидным вариантом будет Visual Studio ( https://visualstudio.microsoft.com/ru/downloads/ ). Бесплатной Community-версии более, чем достаточно для большинства задач. Также есть версия для macOS.
Кроссплатформенный полуредактор/полуIDE VS Code ( https://code.visualstudio.com/ ).
Кроссплатформенный IDE Rider ( https://www.jetbrains.com/rider/ ).
Также существуют C#-плагины для Atom и Sublime Text, но функциональность там достаточно сильно урезана.

6. С# для мобильной разработки
https://dotnet.microsoft.com/apps/xamarin

Новые возможности C# 9.0: https://devblogs.microsoft.com/dotnet/c-9-0-on-the-record/

Текст шапки: https://pastebin.com/pbK8CGqw
image.png2,5 Мб, 1920x1080
2 2107314
7. Что почитать?
The C# Player's Guide, третье издание (RB Whitaker) — отличная книга для ньюфагов, всё расписывается довольно подробно, очень много примеров кода.
C# 9 and .NET 5 – Modern Cross-Platform Development (Mark Price) — подойдёт для ознакомления с платформой. Затрагивает все технологии, имеющиеся в .NET (веб, мобильная разработка, машинное обучение), ни во что не углубляясь.
C# 8.0 in a Nutshell (Joseph Albahari и Eric Johannsen) — огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином.
C# 8.0 Pocket Reference (Joseph Albahari и Ben Albahari) — просто выжимка из книги сверху, можно всегда держать рукой.
Pro C# 8 with .NET Core 3 (Andrew Troelsen) — 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха.

8. Более хардкорный материал
CLR via C# (Jeffrey Richter) — это классика, это знать надо.
C# in Depth (Jon Skeet) — написана в виде истории версий C#, начиная с C#1.0. Описываются возможности, которые были добавлены в определенной версии и далее достаточно хардкорно и подробно эти возможности расписываются.
Writing High Performance .NET Code (Ben Watson) — отличная книга. Фокусируется на методах оптимизации приложений, профилировании. Крутейшая и достаточно детальная глава по GC. Рассматриваются достаточно известные проблемы вроде "for vs foreach", "класс vs структура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче всё, что нужно, чтобы вам перезвонили.

9. Литература по WPF
— Pro WPF 4.5 in C# (Matthew MacDonald)
— Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)

10. Литература по ASP.NET
— Pro ASP.NET Core 3 (Adam Freeman)
— Professional ASP.NET MVC 5 (Jon Galloway, Brad Wilson, K. Scott Allen, David Matson)

11. Литература по асинхронности и параллелизму
— Concurrency in C# Cookbook (Stephen Cleary) — книга, написанная в формате "проблема - решение". Кроме базовых вещей, вроде асинков и параллелизма рассматриваются TPL Dataflows, Rx (реактивные расширения), тестирование всего этого асинхронного добра, ну и работа этого всего на более низких уровнях абстракции.
— Multithreading with C# Cookbook (Eugene Agafonov) — в основном ничего интересного, но есть довольна неплохая глава про синхронизацию, пусть и не слишком детальная.
— Pro Asynchronous Programming with .NET (Richard Blewett, Andrew Clymer) — опять же, интересного немного, но неплохие главы про асинхронность + UI и анализ дампов памяти в windbg.

12. Литература по мобильной разработке
— Creating Mobile Apps with Xamarin.Forms (Charles Petzold)
— Xamarin.Forms Projects (Johan Karlsson, Daniel Hindrikes)
— Mastering Xamarin.Forms (Ed Snider)

13. Литература по машинному обучению
— Introduction to Neural Networks for C# (Jeff Heaton) — изучение нейронных сетей с примерами кода на шарпе. Под конец пишем программу для распознавания символов и нейроботов.
— Machine Learning Using C# Succinctly (James D. McCaffrey) — довольная коротенькая книга на тему машинного обучения с примерами кода на C#. Ничего особого: k-средние, классификация, наивный байес, но с кодом, который всегда можно поразбирать, если что неясно.

14. Разработка игр
Unity-тред в /gd/

15. Но я не знаю английский, как я буду это все читать?
На некоторые из перечисленных книг есть переводы, которые можно найти на том же рутрекере, однако зачастую эти переводы неактуальны и/или содержат неточности. Кроме того, переводы обычно пилятся только для нескольких самых популярных книг, более-менее серьёзный материал не переводят. Всегда можно сесть со словарем и понемногу читать, переводя непонятные фрагменты. Это очень полезно, так как в любом случае в программировании без знания английского делать нечего. Если очень хочется, то гуглить по запросам: "C# 7.0. Справочник. Полное описание языка", "C# для профессионалов. Тонкости программирования", "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#".

16. Что еще нужно знать, чтобы взяли работать за еду?
— Базы данных — подойдет любая книга по MSSQL/MySQL/PostgreSQL. DDL, DML. Джойны, индексы, нормализация. В контексте шарпа еще ORM: Entity Framework, Dapper.
— Системы контроля версий — обычно гита достаточно: add/commit/push, merge, rebase, checkout, remote, diff, разрешение конфликтов.
— GitHub — issues, пулл-реквесты, теги, релизы, Actions.
— Алгоритмы — сортировка, поиск, оценка сложности алгоритмов, рекурсия, алгоритмы на строках.
— Структуры данных — связанные списки, деревья (бинарные, красно-чёрные, b-деревья), хеш-таблицы, графы.
— Если идти в веб — HTML, CSS, JavaScript, веб-сокеты, REST, JS-фреймворки (Angular, React, Vue).
— Паттерны проектирования, стиль кода, архитектура приложения, внедрение зависимостей, MVVM (если хочется в WPF), SOLID.

17. Я не умею читать, что посмотреть?
— C# Fundamentals: Development for Absolute Beginners — https://goo.gl/meyyxO
— Набор курсов по C# от O'Reilly Media (28 часов, на английском) — http://rutracker.org/forum/viewtopic.php?t=5082978
— Канал по C# IAmTimCorey (на английском) — https://www.youtube.com/user/IAmTimCorey
image.png2,5 Мб, 1920x1080
2 2107314
7. Что почитать?
The C# Player's Guide, третье издание (RB Whitaker) — отличная книга для ньюфагов, всё расписывается довольно подробно, очень много примеров кода.
C# 9 and .NET 5 – Modern Cross-Platform Development (Mark Price) — подойдёт для ознакомления с платформой. Затрагивает все технологии, имеющиеся в .NET (веб, мобильная разработка, машинное обучение), ни во что не углубляясь.
C# 8.0 in a Nutshell (Joseph Albahari и Eric Johannsen) — огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином.
C# 8.0 Pocket Reference (Joseph Albahari и Ben Albahari) — просто выжимка из книги сверху, можно всегда держать рукой.
Pro C# 8 with .NET Core 3 (Andrew Troelsen) — 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха.

8. Более хардкорный материал
CLR via C# (Jeffrey Richter) — это классика, это знать надо.
C# in Depth (Jon Skeet) — написана в виде истории версий C#, начиная с C#1.0. Описываются возможности, которые были добавлены в определенной версии и далее достаточно хардкорно и подробно эти возможности расписываются.
Writing High Performance .NET Code (Ben Watson) — отличная книга. Фокусируется на методах оптимизации приложений, профилировании. Крутейшая и достаточно детальная глава по GC. Рассматриваются достаточно известные проблемы вроде "for vs foreach", "класс vs структура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче всё, что нужно, чтобы вам перезвонили.

9. Литература по WPF
— Pro WPF 4.5 in C# (Matthew MacDonald)
— Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)

10. Литература по ASP.NET
— Pro ASP.NET Core 3 (Adam Freeman)
— Professional ASP.NET MVC 5 (Jon Galloway, Brad Wilson, K. Scott Allen, David Matson)

11. Литература по асинхронности и параллелизму
— Concurrency in C# Cookbook (Stephen Cleary) — книга, написанная в формате "проблема - решение". Кроме базовых вещей, вроде асинков и параллелизма рассматриваются TPL Dataflows, Rx (реактивные расширения), тестирование всего этого асинхронного добра, ну и работа этого всего на более низких уровнях абстракции.
— Multithreading with C# Cookbook (Eugene Agafonov) — в основном ничего интересного, но есть довольна неплохая глава про синхронизацию, пусть и не слишком детальная.
— Pro Asynchronous Programming with .NET (Richard Blewett, Andrew Clymer) — опять же, интересного немного, но неплохие главы про асинхронность + UI и анализ дампов памяти в windbg.

12. Литература по мобильной разработке
— Creating Mobile Apps with Xamarin.Forms (Charles Petzold)
— Xamarin.Forms Projects (Johan Karlsson, Daniel Hindrikes)
— Mastering Xamarin.Forms (Ed Snider)

13. Литература по машинному обучению
— Introduction to Neural Networks for C# (Jeff Heaton) — изучение нейронных сетей с примерами кода на шарпе. Под конец пишем программу для распознавания символов и нейроботов.
— Machine Learning Using C# Succinctly (James D. McCaffrey) — довольная коротенькая книга на тему машинного обучения с примерами кода на C#. Ничего особого: k-средние, классификация, наивный байес, но с кодом, который всегда можно поразбирать, если что неясно.

14. Разработка игр
Unity-тред в /gd/

15. Но я не знаю английский, как я буду это все читать?
На некоторые из перечисленных книг есть переводы, которые можно найти на том же рутрекере, однако зачастую эти переводы неактуальны и/или содержат неточности. Кроме того, переводы обычно пилятся только для нескольких самых популярных книг, более-менее серьёзный материал не переводят. Всегда можно сесть со словарем и понемногу читать, переводя непонятные фрагменты. Это очень полезно, так как в любом случае в программировании без знания английского делать нечего. Если очень хочется, то гуглить по запросам: "C# 7.0. Справочник. Полное описание языка", "C# для профессионалов. Тонкости программирования", "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#".

16. Что еще нужно знать, чтобы взяли работать за еду?
— Базы данных — подойдет любая книга по MSSQL/MySQL/PostgreSQL. DDL, DML. Джойны, индексы, нормализация. В контексте шарпа еще ORM: Entity Framework, Dapper.
— Системы контроля версий — обычно гита достаточно: add/commit/push, merge, rebase, checkout, remote, diff, разрешение конфликтов.
— GitHub — issues, пулл-реквесты, теги, релизы, Actions.
— Алгоритмы — сортировка, поиск, оценка сложности алгоритмов, рекурсия, алгоритмы на строках.
— Структуры данных — связанные списки, деревья (бинарные, красно-чёрные, b-деревья), хеш-таблицы, графы.
— Если идти в веб — HTML, CSS, JavaScript, веб-сокеты, REST, JS-фреймворки (Angular, React, Vue).
— Паттерны проектирования, стиль кода, архитектура приложения, внедрение зависимостей, MVVM (если хочется в WPF), SOLID.

17. Я не умею читать, что посмотреть?
— C# Fundamentals: Development for Absolute Beginners — https://goo.gl/meyyxO
— Набор курсов по C# от O'Reilly Media (28 часов, на английском) — http://rutracker.org/forum/viewtopic.php?t=5082978
— Канал по C# IAmTimCorey (на английском) — https://www.youtube.com/user/IAmTimCorey
3 2107716
Каким надо быть чмоней, чтобы вкатываться в шарп с нуля? Я понимаю, если ты уже опытный погромист, и кабан требует. Но вот с нуля - это пиздец.

Вы понимаете, что никогда работу с нуля не найдете?
4 2107739
>>07716
А куда идти? В С++ что ли?
5 2107750
>>07716
Дурында, это как раз самый рабочий вариант. Раньше вкатывались на дельфи и вижуал бейсики, альтернативой были хардкорные кресты или зеленые ещё скрипты.
Хотя зумеры может и не оценят, или ты и есть он?
6 2107765
>>07311 (OP)
Создал web проект и добавил в него функциональности (пик 1)
Запускаю
dotnet publish -r win-x64 -p:PublishSingleFile=true -p:PublishTrimmed=true
чтобы создать финальную версию сборки, которую можно будет прикладывать к резюме и выебываться, но оно мне создало почему-то 2 папки (bin и obj), в которых кучи файлов в папках Debug. Но я не хочу Debug, я хочу PublishSingleFile. Где мое приложение и как его сделать в нормальном виде?

По адресу bin\Debug\net5.0\win-x64\publish
содержится пик 2, это мое приложение? Но почему оно в папке Debug и состоит из множество файлов? Что за кучи файлов по соседству с папкой publish? Как вообще этот файловый ад понимать? Почему минимальное приложение создало 649 (пик 3) файлов?
7 2107889
Можно ли как-то через рефлексию получить общепринятое имя примитивного типа?
Допустим я вызываю typeof(int).Name. Как вместо Int32 получить int?
8 2107893
>>07889
Вряд ли. Это же алиас и в рантайме, скорее всего, уже нету инфы, писал ты там инт или Инт32.
Посмотри ил код мне лень.
Ну или решение влоб - создай дикшинари со своими "общепринятыми"
10 2107947
>>07750
Какой нахуй зумер. Я в профессии 7 лет. У нас вакансия в банке на джуна открывается раз в 2 года, блядь.
11 2107990
Поясните за
1. Performance паттерны - Spam<T>, Memory<T> - зачем, как и где? В прод лили такую хуету? Если да, то в каких местах и для чего? Примеры с Marshaling и Unmanagement кусками говна не интересны.
2. Что думаете за array of structs? У кого нибудь stackoverflow вылетало на этой хуйне? Поправьте, если не так - стэк распухает до тех пор, покуда живет контекст исполнения, т.к. если не использовать такого рода паттерны, хип покуда наполняется его чистит GC, что по вопросам стэка? Реально ли его вообще забить? Как стэк затригерить на SOF я так знаю, я про array of structs
12 2108067
>>07311 (OP)
Поделитесь опытом программирования на C# на маке. Это рабочий вариант, или только винда?
13 2108118
>>07990
1. Это не паттерны.
2. Ничего, это не паттерн. Нет. Нет. Ты наркоман.
14 2108333
Работаю почти третий год. Вроде полет нормальный, зп стабильно растет. Недавно для интереса решил пройти тесты на знание синтакиса, уровень джун - ответил на 6 вопросов из 15.
15 2108335
Начал читать Троеллсена и что-то он слишком непонятно пишет. К примеру, перечисляет модификаторы out, ref, param. Но не приводит примеров и из-за этого ничего не понятно куда и что писать. И так почти везде.
Пробовал читать Гриффитса, дак тот вообще может 10 страниц обсуждать применения null. На примеры тоже скупится. А ведь хороший пример мог бы заменить все это переливание из пустого в порожнее.
Может Прайса почитать? Но его тоже критикуют, что книга у него получилась не для профессионалов, да и новичкам не сильно подойдёт.
16 2108364
>>08333
Ну хоть бы чтоль вопросы показал. Может там какая-то херь типа __makeref.
17 2108382
>>08364
Дело не в вопсросах, а в том, чем я занят. За три года ни разу не пользовался структурами, может один раз массивами, это уже -2 правильных ответа. И вообще иногда кажется, что отвечать на вопросы для миддлов мне легче, чем для джунов.
image.png217 Кб, 400x400
18 2108401
19 2108609
Вот иногда я думаю, особенно начитавшись треда: Какой же я говнокодер.
А потом вижу код лида:
string BuildRequest(){
var s = "";
var str1 = "tag1:val1";
var str2 = "tag3:val2";
var str3 = "tag3:";
var str4 = "tag4:val4";
var str5 = "tag5:";
var str6 = "tag6:";
var str7 = "tag7:";
var str8 = "tag8:";
var str9 = "tag9:val9";
if( str1!= null)
{
s+=str1+";";
}
if( str2!= null )
{
s+=str2+";";
}
if( str3!= null )
{
s+=str1+";";
}
if( str4!= null )
{
s+=str4+";";
}
if( str5!= null)
{
s+=str5+";";
}
if( str6!= nul )
{
s+=str6+";";
}
if( str7!= null)
{
s+=str7+";"
}
if( str8!= null )
{
s+=str8+";";
}
if( str9!= null)
{
s+=str9+";";
}
return s;
}

И вот после этого мне как-то пофиг становится что тут про мой код говорят. Возникают совсем другие мысли, типа: БЕЖАТЬ!!!
19 2108609
Вот иногда я думаю, особенно начитавшись треда: Какой же я говнокодер.
А потом вижу код лида:
string BuildRequest(){
var s = "";
var str1 = "tag1:val1";
var str2 = "tag3:val2";
var str3 = "tag3:";
var str4 = "tag4:val4";
var str5 = "tag5:";
var str6 = "tag6:";
var str7 = "tag7:";
var str8 = "tag8:";
var str9 = "tag9:val9";
if( str1!= null)
{
s+=str1+";";
}
if( str2!= null )
{
s+=str2+";";
}
if( str3!= null )
{
s+=str1+";";
}
if( str4!= null )
{
s+=str4+";";
}
if( str5!= null)
{
s+=str5+";";
}
if( str6!= nul )
{
s+=str6+";";
}
if( str7!= null)
{
s+=str7+";"
}
if( str8!= null )
{
s+=str8+";";
}
if( str9!= null)
{
s+=str9+";";
}
return s;
}

И вот после этого мне как-то пофиг становится что тут про мой код говорят. Возникают совсем другие мысли, типа: БЕЖАТЬ!!!
20 2108611
>>08609
Я про то и говорю, что те, кто залезли в ит раньше - говнокодеры, но чтобы их не вытеснили реально талантливые ребята, они придумали собесы, чтобы никого больше не пустить в ит.
21 2108628
>>08335
Книги для кодеров всегда нужно воспринимать как справочник.
Писать код > читать про конструкции языка.
Це просто аксиома.

Сделай, допустим, ToDo-лист, очередной. Подумай, что тебе для этого нужно. Какие операции с ним ты хочешь делать добавить, удалить, отметить как выполненное. Выдели сущности задача. Какие структуры данных подойдут для решения список. Затем подумай над архитектурой приложения MVC. А книгу бери/гугли, когда не понимаешь что-то. Допустим, ты не знаешь как передать структуру в метод так, чтобы а - не создавать новую структуру; b - изменения в методе влияли на структуру которую ты передал в метод. Вот, ищешь это в книге/гугле. Применяешь, запоминаешь. И так вот пока не получишь готовый ToDo-лист.
22 2108773
>>08611
Где-то тут или в бугурт треде была прохладная про то как нулячего дрота наняли чтоб он на собесах своей алгохуитой валил всех
23 2108776
>>08609
Че это за хуйня? Оно же никогда не будет нулл, не? Может это какая-то автогенерируемая хуита?
Какая ЗП у тебя и лида, штоб понимать уровень организации?
24 2108780
>>07990
"Выгорел три раза пока читал"
Ни разу не использовал, мимовебмакака.
25 2108801
>>08118

>1. Это не паттерны.


посмотреть бы, как Span<T> в чистом виде используют. Пиши по существу или не пиши вообще
>>08780
почему выгорел?
Сейчас все в вебе сидят десктоп и мобайл бляди лесом, разве не задумывался над оптимизациями? Никогда на High load проектах не был?
26 2108802

>2106951


>2106952


аргументируйте
27 2108804
>>2106951 →
>>2106952 →
Аргументируйте

быстрофикс
28 2108806
>>08801

>Никогда на High load проектах не был?


Нет. Да и нахуй тебе твои спаны, если все равно, скорее всего, ботлнеком будут ИО операции.
29 2108827
>>08801

>Пиши по существу или не пиши вообще


Что тебе писать? Ты простых вещей не понимаешь.
30 2108943
>>08806

>ботлнеком будут ИО операции.


в рамках рантайма они нихуя не хавают, что за бред?
>>08827

>простых вещей не понимаешь.


найс пердишь, двери только закрывай за собой
31 2108994
>>08776

> Может это какая-то автогенерируемая хуита?


Не

> Какая ЗП у тебя и лида, штоб понимать уровень организации?


У меня - 30к, у лида - 300к.
32 2108998
>>2106952 →
Ну, значит кестрел пишут дегроды. Там lock постоянно используется.
33 2109096
Еще вопросов по многопоточке закину знающему анону - IIS получил 10 (к примеру) реквестов по http, для них он выделил 10 потоков? И сколько потоков выделит CLR, чтобы захендлить эти 10 реквестов с IIS на обработку? Кто нибудь задумывался над таким?
34 2109136
>>09096
Судя по этому https://stackoverflow.com/questions/24262401/how-iis-server-worksthreading
ИИС сам по себе треды трогать не будет.
Рантайм уже заберет сколько надо, если одновременно и есть свободные треды в пуле, то да, нааверное 10, хз
35 2109218
Как работает эта строка?
- - - - - - - - -
public int X { get; } => Class.StaticMethod(A, B);
- - - - - - - - -
Свойство, доступное только для чтения, ... за что отвечает этот недокусок лямбды вконце?
37 2109302
>>09273
Я понимаю, что в случае
int Prop => Func();
это просто сокращенная форма для
int Prop { get { return Func(); }; }
Но меня интересует пример, когда есть и скобки и этот кусок (нашел это в статье на хабре: https://habr.com/ru/post/338518/ (пятый по счету блок кода):
public int Number3 { get; } => MathFuncs.GetSumOf(Number1, Number2);
Не на МСДНе не в книжке подобного не встречал, поэтому и стало интересно - что это такое.
image.png24 Кб, 993x229
38 2109448
39 2109452
>>09302
Ты мог просто посмотреть IL код и убедиться, что во всех случаях он одинаковый, даже не вникая в его суть.
40 2109458
>>09448
Спасибо большое, я не заметил этот комент
41 2109606
Как наконей запомнить, нахрена нужны автосвойства? Чем они лучше полей?
42 2109631
У меня есть класс, назовём его условно Indicator, этих Indicator'ов - ограниченный набор возможных значений.

И есть класс IndicatorProvider, в котором можно получать Indicator'ы. Можно получить полный список, можно получить фильтром по некоторым параметрам и ещё ряд специальных опций получения.

Соответственно, я хочу, что конструктор Indicator'а был доступен только IndicatorProvider'у, чтобы в IndicatorProvider'е создался необходимый набор Indicator'ов, и затем они могли быть получены только из IndicatorProvider'а, чтобы доступа к конструктору Indicator'а не было больше нигде в коде.

В С++ я мог бы легко это реализовать через friend class. Но как сделать в C#?

Я мог бы включить функционал IndicatorProvider'а в класс Indicator, но не хочу его загромождать, т.к. в IndicatorProvider'е далеко не один метод.

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

Я мог бы использовать рефлексию, но это слишком уродливо.
изображение.png12 Кб, 274x315
43 2109868
Почему у объект-типа Manager в списке методов нет (кроме GetProgressReport) ещё и Lookup и GetYearsEmployed? Они ведь точно так же наследуются и у класса Manager есть, хоть и не переопределяются как GetProgressReport. Или только поэтому (нет переопределения) их и нет?
44 2109872
>>09606

>Как наконей запомнить, нахрена нужны автосвойства?


Запоминать не надо. ПРОСТО юзаешь их для всех пабликов.

>Чем они лучше полей?


Дают возможность наговнокодить. Плюс ченджтрекеры для ебучих декстопов.
46 2109947
Смотрите. Есть один TCP-сервер. Вооот. Он умеет обрабатывать несколько типов запросов. Вооооот. И есть один исключительный запрос, который обрабатыватется долго и при этом это CPU-Bound запрос. И именно этот запрос, мать его, шлют клиенты при первом подключении. Собственно, хуйня в чем - 10к клиентов подключаются, проц на 100% загружен несколько минут, в это время нихуя другого сервер делать не может, прожевал этих пидорасов - начинаем нормально работать, средняя загрузка на I7 - 1% при 10к коннектов и ежесекундной отправке сообщений.
Собственно вопрос в чем. Какие есть нормальные способы, не переписывая кучу кода, как-то распределить нагрузку на один инстанс приложения? Я придумал - сделать две очереди обработки, собственно, этого пидораса прожерливого в очередь с низким приоритетом, которую обрабатывает 1 ядро, остальные - в очередь с высоким приоритетом и там все оставшиеся ядра. Но кажется хуйней какой-то. Типа, блин, во первых - потому что придется придумывать какой-то объект для ожидания завершения задачи в очереди, либо хуярить коллбеки как не в себя, во вторых - ну, не нравится мне что-то это решение, выглядит перемудренным, в третьих - сама ситуация когда разом 10к стучатся меньше чем за секунду - выглядит надуманной, да, я ее легко могу на своей пеке смоделировать, но в реальном проде как-то не верится что такое может быть, задержки же, вся хуйня, балансировщики, хуе-мое.
47 2109958
>>09947
Хуй знает. Можно мидлвейр написать, который будет тротлить через тред слип рандомный или какой лучший способ, если более Н инстансов.
48 2109961
>>09947
1) поставь лоад балансек перед сервером, сделай n инстансов. Поднимай новые инстансы если в очереди на обработку больше чем n * capacity запросов. Потом скалируй вниз, когда простаивать начинаешь
2) сделай worker pool, который может выполнять ограниченное кол-во запросов одновременно. Клиент при запросе получает handle, который он может потом поллить с вопросом "Ну чё, готово?"

Много еще что можно придумать.
49 2109966
>>09961

>2) сделай worker pool, который может выполнять ограниченное кол-во запросов одновременно. Клиент при запросе получает handle, который он может потом поллить с вопросом "Ну чё, готово?"


Че за worker pool?
50 2109969
>>09958
ЦЕ TCP-сервер. Делать свой миддлвар - зеаеб.
>>09961
Ну, я примерно так и думал, но мне говорят - сделай чтобы этот конкретный запрос не тормозил все, и времени тебе до вчера.
51 2109976
>>09966
Бассейн с рабочими. Каждый рабочий умеет делать таску, но рабочих ограниченное количество. Когда рабочий выполняет таску - суёшь его обратно в бассейн

>Ну, я примерно так и думал, но мне говорят - сделай чтобы этот конкретный запрос не тормозил все, и времени тебе до вчера.


Тогда профайлер в руки и вперед.
52 2109980
>>09976
А нахуй делать этот басейн, если в нете он по умолчанию изкаробки?
53 2109983
>>09976

>Тогда профайлер в руки и вперед.


Ну, дык я ужо. Ускорил и так обработку этого запроса раз в 20, сейчас на 10к - минута уходит, раньше уходил час.
>>09980
Про другое говорят, няша.
54 2109986
>>09980
Так бери и используй. Кто ж тебе помешает то?
55 2109991
>>09986
ну ты и пидор
56 2110000
>>09983

>Ну, дык я ужо. Ускорил и так обработку этого запроса раз в 20, сейчас на 10к - минута уходит, раньше уходил час.


Если всё уже обёрнуто в таски - можешь захуячить свой task scheduller, который умеет в обработку n количества CPU-bound запросов.
57 2110019
58 2110306
Зачем нужны IStructuralEquatable и IStructuralComparable?
Они имеют только методы сравнения через оборачивание в object, а это ж медленно, и тогда какой смысл городить struct вместо class?
59 2110328
Решил только что 2 изи задачки на литкоде. Поздравьте меня.
не могу документайшн таску на 30 мин сделать за неделю
Олсо, совсем они ф-ционал нонпремиум похерили, нихуя ниудобно (наверное так и надо). 140 баксов в год, ууу сука.
60 2110383
Аноны, зачем нужен вообще модификатор доступа internal? Можете примеры какие-то привести или глобально без подробностей рассказать?
image.png46 Кб, 281x225
61 2110386
Сап шарпач, дали вступительное задание чтобы устроиться на завод C# девелопером за 30к. “Заводоуправление” – корневой участок дерева, его нельзя ни удалить ни изменить. Внутри располагаются дочерние ветки: Веток 2 типа: подразделение и должность - Подразделения могут иметь сколь угодно глубокую вложенность, а должность– конечная ветка. Как такую залупу хранить в реляционной БД MS SQL? Как организовать таблицы?
62 2110387
>>10386
Для подразделения oneToMany, для должности oneToOne
диванный программист
1627537218971.png1 Мб, 600x706
63 2110388
64 2110394
>>10387
Не понимаю как делать узлы в которых еще будут узлы, к примеру структура будет
узел1 -> {подраздел1; должность1; подраздел->{должность2; должность3}}

Как такое организовать в БД? Не понимаю структуру таблиц.
65 2110473
>>10394
Ну решение влоб: ParentNodeID + NodeType колонки. Ну или без типа, но две таблицы для должности и подразделения. Так наверное даже лучше бужет. В подразделении будет иерархия, в должности нет, но у тебя вроде бы много типов.. Ну и гугли чтото типа sql tree для запросов с with.
Решение со звездочкой- что то типа нестед сетов.
Решение хипсерское- графовые бд
66 2110474
>>10383
Ну пишешь ты либу какую-то и не хочешь кишками светитт, только интерфейсами, вот и юзаешь. Потом еще в тестах френдли ебнул и тестишь даже кишки
67 2110476
>>10386
CREATE TABLE Departments (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
ParentId INTEGER NULL,
Name TEXT NOT NULL,
FOREIGN KEY (ParentId) REFERENCES [Departments](Id)
);

CREATE TABLE Employees(
Id INTEGER PRIMARY KEY AUTOINCREMENT,
DepartmentId INTEGER NULL,
Name TEXT NOT NULL,
FOREIGN KEY (DepartmentId) REFERENCES [Departments](Id)
);

Кстати, кто знает, напишите, насколько валидно вот это:
FOREIGN KEY (ParentId) REFERENCES [Departments](Id)
Т.е. ограничение forein key на эту же таблицу.
Или может этот как-то по другому делается?
68 2110488
>>10476
Нормально.
Но у тебя таки по факту много типов нод. Директор, отдел и сектор тоже ноды. Для вашего завода и так сойдет. Но можно еще подумать. Например, саму иерархию хранить в одной таблице а уже сами велью (емплойи, департменты) в другой
Вместо текста нварчар(300) юзай.
69 2110603
>>10306
Чтобы, например, не реализовывать сортировку для каждой коллекции по 100500 раз. Про struct и class вопрос не понял, должно быть пофиг struct или class для этих двух интерфейсов.
70 2110672
Есть ли в студии горячая клавиша, рефакторинг или что-то в этом роде, чтобы заменить var на нормальное название типа?
типа чтобы вместо var x = 1.0;
он бы написал double x = 1.0;
???
var-ы делают код нечитаемым. Но писать руками имена особенно с дженериками замотаешься.
71 2110696
>>10672
Нашел как это в студии делать через рефакторинг, но что-то многовато кликов. Можно ли сделать одним сочетанием клавиш?
72 2110815
Работаю в паре с другим разработчиком и постоянно сремся из-за Linq. Он любит применять его везде где можно и писать сложные циклы или проверки в пару строк. Вроде компактно и элегантно, но дебажить эти цепочки сущий кошмар.
Есть какие-то рекомендации насчет целесообразности применения Linq? В Clean code про это естесственно ничего нет.
73 2110823
>>10815
Давай примеры что у него на линке, а ты против.
Ну сделай перфоманс тесты и его линки, скорее всего, обосрутся, особенно пг памяти
image.png9 Кб, 134x363
74 2110942
Сап анончики выручайте супер мега срочно, случайно нажал комбинацию клавиш хуй пойми какую и появились ебучие точки. Как убрать нахуй?
75 2110967
>>10942
Ctrl+W
Untitled.png108 Кб, 297x342
76 2110980
77 2110996
>>10942
ППХПХПРХАХАХАХАХАХПХПХАХАХАХ. Как же я проиграл на всю квартиру. Уже соседи по батареям хуярят.
78 2111049
>>10386
Я в базе вот так сделал
NodeType
{
int id;
int? parentId;
string Name;
}
Node{
int id;
int typeId;
string Name;
}

А на уровне приложения уже плясал бы.
79 2111224
>>11049
Чому int? parentId; в NodeType?
Чета ты хуйню написал.
80 2111235
>>11224
Потому корень дерева не имеет родителя. Что не ясного-то?
81 2111297
>>11235
И что? Ну будет parentId нал.
82 2111334
>>11297
То что можно таким образом строить иерархию. Как-бы в том и суть. Родитель null - мы нашли корень. Если у нас в таблице несколько корней - мы можем сразу найти все корни и пройтись построив несколько деревьев. Допустим, у тебя логика такова, что есть фирма, она является корнем, у фирмы - есть филиалы, у филиалов - оффисы, в оффисах - отделы, в отделах - начальники, ну а у начальника - проекты, у проектов сабпроекты, ну а у каждого сабпроекта может быть еще один сабпроект до бесконечности и в конечном счете на каждом уровне относительно проектов - есть назначенные люди.
Вот тебе говорят: Анонов - сделай запрос чтобы можно было посмотреть все проекты такого-то хуя и назначенных на них людей в фирме. С тем что я выше описал это изи: находим вершину дерева и проходимся рекурсивно вниз. Как ты будешь определять корень без null - ну, разве что ссылается на самого себя, но это хуйня потому что для того чтобы такую сущность получить - тебе придется ебатеку устраивать на уровне базы, вместо того чтобы просто сделать parentId - null
83 2111562
>>11334
Чому так? При запуске окна wpf оно открывается через жопу. В чем проблема?
84 2111633
Бля, мне кажется dependency injection это реально какая-то меташутка, оно никогда блять не работает, сколько бы примеров не повторял, сколько бы раз не возвращался итог всегда блять один и тот же, даже сколько ГОТОВЫХ примеров бы не кача они даже никогда не компилируются, какая же это хуйня
85 2111668
>>11633
На тебя порчу навели, в ИТ такое сплошь и рядом.
86 2111681
>>10696
alt+enter/ctrl+. и там в экшенах ищи>>10672

>var-ы делают код нечитаемым


не забудь префикс типа к имени переменной добавить, а то ведь тебе что б узнать тип надо в объявление заглядывать долбаеб блядь
87 2111690
Как же хочется работать в команде, где есть синьоры, которые ревьювят твой код, указывают что не так.
Работаю в команде, где все одинакового уровня недомиддлы и кажется, что нихуя не развиваюсь.
88 2111715
>>11668
как от нее избавиться? без ДИ жить вообще не вариант
89 2111730
>>11715
Для начала попробуй полить системник святой водой, на рабочий стол поставить фото Гейтса и кактус перед монитором. Если не поможет, значит дело серьезное - придется искать светлого мага-программиста.
90 2111745
>>11633
DI, как и весь SOLID и ООП, это искусственные барьеры для поднятия планки вката в IT и наебки работодателей. Бесполезные, увеличивающие объем кода, высосанные из пальца принципы. К сожалению, остается просто вызубрить. Необязательно понимать это все, пользуйся Autofac-ом.
91 2111757
Ну реально чушь смотри вот здесь, первый пикрил отсюда :
https://www.c-sharpcorner.com/UploadFile/85ed7a/dependency-injection-in-C-Sharp/

там говорят что это пример реализации ДИ но нет, это полная хуйня, на втором пикриле пример кода который делает ТО ЖЕ САМОЕ но умещается в 10 строках и не создает спагетти код,
а теперь рассмотрим случай когда инжеция нужна, вот мне надо надо например передать класс Identity.UserManager будет ли это работать? НЕТ КОНЕЧНО потому что иди нахуй вот почему

то-есть реально хуйня без задачи, усложняет то что ты можешь написать, но когда нужно у него лапки блять, безполезнейшая хуйня которую я только видел в программировании
92 2111760
93 2111768
>>11757
Сори, но ты немножко туповат.
94 2111775
>>11768
Не надо, у меня много лет опыта в программировании, просто ди это реально хуйня без задач, она не выполняет свою главную функцию, через нее нельзя передать нужные тебе зависимости.
опять таки я читал документацию по идентити и знаешь что там писало о передачи ваисимостей? НИХУЯ, а обычная реализация не работает, так каким образом они себе представляют использовании этой хуйни?
95 2111783
>>11775

>не выполняет свою главную функцию


Главная функция - снижение связанности кода. Прекрасно выполняется.>>11775

>идентити и знаешь что там писало о передачи ваисимостей? НИХУЯ


А почему в доках по Identity должны писать про DI?

>обычная реализация не работает


У всех работает, а у тебя не работает. Угадай гле проблема.
96 2111787
>>11783

>Главная функция - снижение связанности кода.


Я представил примеры двух реализаций, как видишь спагетти код именно там где используется идентити

>А почему в доках по Identity должны писать про DI?


потому что без ди идентити НЕ ВОЗМОЖНО использовать где либо за границами контроллера, тоесть есть например у меня контроллер который должен найти пользователя когда выполнилось какое-то условия например выстрелил хенгфаер, и что дальше? нулл рефернс или клонирование севрвиса и до свидания, весь этот фреймворк просто не имеет смысла без ди а он естественно не работет нихрена

>У всех работает, а у тебя не работает. Угадай гле проблема.


Да что ты говоришь маня, пруфов что это вообще в принципе может работать ты конечно же не приведешь
97 2111791
>>11787
Спагетти код именно там где используется идентити -> DI

то-есть есть например у меня контроллер -> класс который

быстрофикс
98 2111805
>>11787

>Я представил примеры двух реализаций


Ты представил какой-то хэлловорлд и на основании того, что там появилось несколько строк, делаешь выводы о ДИ. Охуено, че.
Остальной твой высер комментировать не буду. Конфигурируй все вручную, никакой магии в дефолтном сервиспровайдере нет.
99 2111819
>>11805

>Ты представил какой-то хэлловорлд


>ЭТО ДРУГОЕ


>Остальной твой высер комментировать не буду


>ПУК СРЕНЬК НЕЧЕГО ОТВЕТИТЬ


Как бы с первых ответов было понятно что ты ничего в этмо не смыслишь и по этому ничего по делу ответить не сможешь, я только не понимаю нахуя ты вообще что-то предъявляешь если сам в этом 0
100 2111880
>>11690
Хочет сениор реввью
0
Получил сениор ревью
0
юз табс интсефд оф спейсес
0
документ олл методс/пропс/классес лайк ГетЮзер - гетс юзерс
0
Ревьюрит раз в полугодие
0
Пока заревьюрил мастер ушел вперед
0
Мержешь с мастером
0
Полиси ту реверт апрувалс он коде чейндж
0
Жди еще пол года внимания его величества
101 2111885
>>11745
Ты панимаешь што ты полнейший дебик?
Начиная от обсера по аргументам и заканчивая Autofac-ом.
102 2111888
>>11757

>https://www.c-sharpcorner.com/UploadFile/85ed7a/dependency-injection-in-C-Sharp/


Atul Rawat хуйни не напишет. И код стайл прекрасен. И проперти инжекшн - бест практис.
В следующем выпуске от Atul Rawat - юзама сервиса локатор инстюд канстрюктар инжекшн евривиа
Ты же толстяк, признайся плиз? Найти насколько уебищную статью по ДИ это мастерство
103 2111892
>>11787

> выстрелил хенгфаер


Ты сам себе в ногу выстрелил.
Хуею, если честно, я сам тупой додик, но аудитория тута это финиш какой-то
104 2111899
>>11888
По ДИ, лучших примеров нет, на мсдн ВОДА лютая, ничего не понятно, никаких примеров, и даже то что есть не то что не работает, даже не компилируется, поэтому да, тот рафат он гений что вообще заставил это говно рабоать. про стак оверфлов я вообще молчу, там на секундочку советуют передавать зависимости в контролер и ВДУМАЙСЯ делать из менеджера ГЕТ запросы на контролер, что бы получить например имя из индентити.Ебана в рот это казино Депенденси инжекшин, такая хуня что просто от осознания того что что-то такое вообще существует в природе у меня руки трясутся.
105 2111907
>>11899

>делать из менеджера ГЕТ запросы на контролер


Че? Кидай ссылку.
Чего ты вола ебешь? Поствь себе кор, юзай коробочный ДИ и не городи свои велосипеды в рамках учебы - хорошо, но походу ты слишком тупенький и/или пожилой для этого, что там н еработать-то может?
106 2111951
Можно ли Dapper при мультимаппинге заставить понимать что PostId это ID сущности Post, а CommentId это ID коммента?
107 2111952
>>11907
Че? Кидай ссылку.
Линка нет, но зуб даю что такое видел и сам лулзы ловил.

>Чего ты вола ебешь? Поствь себе кор, юзай коробочный ДИ и не городи


я так-то на коре 3.1

>что там н еработать-то может?


уже 1000 раз написал, вот еще раз

потому что на том примере индуса ГДЕ ОН САМ НАПИСАЛ ИМПЛЕМЕНТАЦИЮ все просто, но и ДИ если честно в таких случаях нахер не нужна давай посмотрим на ситуацию когда нам нужна зависимость именно потому что у нас нет собственной имплементации, и что тогда? ну вот смотри есть у нас идентити и вот смотри хочется мне получить какого-то пользователя при старте веба, не будет о том зачем надо, или что могу просто сделать запрос до базы, ну хочется мне сделать так как вот. на мсдн пишет что так можно и так делать круто стильно молодежно, ну ок. и смотри в трех скринах как все фейлиться если эту хуйню попытаться применить в Реальной жизни где нужны РЕАЛЬНЫЕ зависимости которые негде больше барть коме через ДИ, а не в самописных сферических маня-примерчиках в вакууме
пикрил один где я пытаюсь получить результат
пикрил2 где все фейлиться
пикрил 3 из за чего все фейлиться
108 2111974
>>11952
Какой у тебя опыт, гнида? Ты зеленей водоросли. Ты даже не можешь прочитать, что тебе компилятор пишет. Еще блять регистрирует IAuthManager, а заинжектить хочет UserManager. Иди Шилдта читай, тебе до DI еще ползти и ползти.
109 2111988
>>11952
Братик, ты в трех соснах заблудился.
В третьей пикче ты скобки забыл.
Во второй, зачем тебе testDi, ты наркоман?
В первой, ты нахуй инстанс вручную создаешь, совсем ебобо? В конструкторе контроллера IAuthManager принимай. Не забудь нормально зарегать в стартапе как IAuthManager , так и идентити говно это коробочное.

дай угадаю, ты до этого на каком-то легаси говне нулевых сидел?
image.png23 Кб, 1250x33
110 2111989
>>11974

>Ты даже не можешь прочитать, что тебе компилятор пишет. Еще блять регистрирует IAuthManager, а заинжектить хочет UserManager.


я прекрасно знаю что он хочет, проблема именно в том что мне нужен UserManager а могу только IAuthManager у которого нет UserManager смотри пикрил
111 2111990
Почему нельзя использовать params с IEnumerable<>?
Только с уставшим и давно не актуальным пропахшим нафталином массивом, который уже ни один API не возвращает?
112 2111992
>>11880
Ты сейчас с кем разговаривал?
113 2111994
>>11974
Пажилой пиценосец не может прочитать ошибки ((на русском)) в студии
0
Не может понять говнокод уровня хеловорда от уважаемого Atul Rawat
0
Говорит о ДИ и ИоК контейнере дотнетовском, но инстансы вручную создает
0
Читай Шилдта
0
Читай ИЛ код
0
Читай машинный код
0
Читай вибрации от дроселлей процессора и ССД
0
Читай Библию
0
Читай по губам
0
Маааам, а как срать синглтон сделоть? ((((
114 2111995
>>11892
Научиться программировать можно всегда, но вот если токсик, то это пожизненно и не лечится.
115 2111997
>>11988

>В третьей пикче ты скобки забыл.


Речь шла о другом прочитай этот пост >>11989

>В первой, ты нахуй инстанс вручную создаешь, совсем ебобо? В конструкторе контроллера IAuthManager принимай. Не забудь нормально зарегать в стартапе как IAuthManager


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

>дай угадаю, ты до этого на каком-то легаси говне нулевых сидел?


ну на вебформах, да
116 2112001
>>11989
Ну так подключи services.AddIdentity(); или как там правильно, оно настроит и юзерманагера и все нужные зависимости (разве что еще EntityFramework как провайдера для хранилища надо отдельно подключать).
image.png4 Кб, 432x13
117 2112007
>>11997
так он подключен, смотри пикрил, проблема именно в том что использовать его можно только в контролерах. а когда хочу юзать в своем классе оно не работает и в общем вся идея что бы нужный класс получил в конструктор зарегистрированный интерфейс который имплементирует класс, который наследует нужную нам зависимость я знаю как это по дебильном звучит, но бля со стороны выглядит что именно так это типа доожно было работать, естественно это нихуя не работает
118 2112012
>>12007

> использовать его можно только в контролерах


От того что ты это повторяешь, правдой это не станет.

>так он подключен


Хорошо, а ты AuthManager откуда берется, когда там налл в конструктор приходит?
image.png7 Кб, 585x19
119 2112020
>>12012
потому что я делаю так, так программа хотя бы стартует, иначе у меня ошибка компиляции и программа даже не заводится а дебажить как-то надо
image.png76 Кб, 913x643
120 2112027
>>12012
Собственно если сделать так результат очевиден null reference exception
121 2112029
>>12020
Божечки, как всё плохо. Ну так если ты передаешь в конструктор налл, то почему ты ожидаешь что-то другое там? И причем тут встроенная система DI, если ты создаешь класс вручную?
122 2112031
>>11997

>ну на вебформах, да


Из увожения к инвалидам помогу тебе в твоей проблеме.

Удоляй нахуй testDi.

Убеждаешься, что идентити у тебя настроен, смотришь чтоб в стартапе было что-то типа
services.AddDbContext<ApplicationDbContext>(options =>
// options.UseSqlite(
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();

Добавляешь в стартап как тут >>11952 на третьей пикчи.

В контроллере в КОНСТРУКТУРЕ принимай IAuthManager. Не надо никаких нью. Его и юзай
123 2112040
>>12031

>Удоляй нахуй testDi.


Удалил

>Убеждаешься, что идентити у тебя настроен, смотришь чтоб в стартапе было что-то типа ...


ну есть такое пик 1

>Добавляешь в стартап как тут 2111952 (You) на третьей пикчи.


Добавлено, пикрил 2

>В контроллере в КОНСТРУКТУРЕ принимай IAuthManager. Не надо никаких нью. Его и юзай


Ты троллишь? я же говорил, вот в контролере все отлично работает. мне нужно что бы работало в моем AuthManager
124 2112042
>>12029

>Ну так если ты передаешь в конструктор налл, то почему ты ожидаешь что-то другое там?


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

> если ты создаешь класс вручную?


Это как так? Не понимаю о чем ты
125 2112044
>>12040
Кредит помощи инвалидам: 3
Использовано: 1
Остаток: 2

Если ты используешь зависимости в твоем AuthManager, то и его инстанс надо создавать используя IoC container (в твоем случае дефолтный коровский).
Тебе надо где-то инстанцинировать AuthManager окромя веб контроллеров?
image.png56 Кб, 974x564
126 2112056
>>12044

>Тебе надо где-то инстанцинировать AuthManager окромя веб контроллеров?


Конечно, ведь вся суть Ди заключается именно в том что настроитв зависимость один раз его можно использовать где тебе надо, то-есть везде где я вызову метод из AuthManager, в данном случае в мейне
127 2112059
>>12042

>Это как так? Не понимаю о чем ты


Если ты через new сам руками создаешь класс, DI (для простоты буду называть так всю инфраструктуру с этим связанную) никак тут не задействована.

>работало в моем AuthManager


А AuthManager ты где используешь? Если это несвязно с запросом, то тебе надо вручную из сервисМанагера тянуть нужный сервис через GetService<T>.
128 2112061
>>12056

> в данном случае в мейне


Ебаный стыд, а сразу нельзя было сказать. Гугли как сконфигурировать сервисы до того как стартанет вебсервер и тащи через GetService<UserManager>.
129 2112063
>>12059

>Если ты через new сам руками создаешь класс, DI (для простоты буду называть так всю инфраструктуру с этим связанную) никак тут не задействована.


не понимаю каким образом можно использовать класс не создавая его

А AuthManager ты где используешь? Если это несвязно с запросом, то тебе надо вручную из сервисМанагера тянуть нужный сервис через GetService<T>.
Здесь >>12056 то-есть в мейне, но в общем не важно я хотел бы этот менеджер использовать где-угодно, ну согласись делать гет запрос на контролер это костыль костилей, я не верю что это нельзя сделать нормально
130 2112067
>>12056

>ведь вся суть Ди заключается


Еще раз - суть DI в ослаблении связанности. Научись различать DI, DIP, IoC
>>12063

>использовать класс не создавая его


Делегировать создание классов и разруливание зависимостей IoC контейнеру.

>я хотел бы этот менеджер использовать где-угодно


А где это угодно-то? У тебя это угодно есть либо до старта сервера (уже написал выше про это), либо во время работы сервера (а там по сути цикл запрос-ответ. а запрос идет через мидлвари, в которых DI отлично работает).
131 2112071
>>11885
поясни за autofac тогда
132 2112073
>>12067

>Делегировать создание классов и разруливание зависимостей IoC контейнеру.



>А где это угодно-то? У тебя это угодно есть либо до старта сервера (уже написал выше про это), либо во время работы сервера (а там по сути цикл запрос-ответ.


Ну я хотел бы как использовать как до старта так и после, ну то-есть хотел бы инициализировать и позже уже работать по запрос-ответ
например в данном случае мне хотелосы бы проверить есть ли админ, если нет создать, а дальше работать как обычно как любой другой менеджер вызывая статические методы
133 2112074
>>12061
ты имеешь ввиду как здесь?
image.png7 Кб, 735x52
134 2112075
>>12074
отвалилось
135 2112084
>>12071
автофак IoC контейнер, можешь использовать его вместо дефолтного майкрософтовский сервисМанагер. Если ты думаешь что будет принципиальная разница, и автофак магическим образом будет менять твои наллы на реализации интерфейсов, то нет. Разница в деталях.
>>12073

>проверить есть ли админ, если нет создать


А почему нельзя сразу задать нормальный вопрос, а не влетать в тред с криком а-ля "вы все дебилы понапридумывали неработающей херни ряяяяяяя"?
Читай:
https://dotnetthoughts.net/seed-database-in-aspnet-core

>так и после


насчет после не знаю, возможно там уже будет задиспозено все что можно. Не пробовал.
>>12074
Почти. CusomDataSurceStorage тоже зарегистрируй в IoC, и дальше serviceProvider.GetService<CusomDataSurceStorage>()
136 2112097
>>12084

>проверить есть ли админ, если нет создать


Я это ЧИСТО для примера сказал, у меня уже есть такая проверка, она мне не нужна, мне нужно решить это именно так как об этом пишут на мсдн. что мол все офигено, бери класс, там будут все зависимости и тп, а когда пробую создать и сделать у меня не получается

Почти. CusomDataSurceStorage тоже зарегистрируй в IoC, и дальше serviceProvider.GetService<CusomDataSurceStorage>()
у меня же нет доступа до serviceProvider в мейне, как мне тогда получить Identity.UserManager и передать его в AuthManager который я создаю в мейне перед стартом вебСервера?
137 2112099
>>12084

>Почти. CusomDataSurceStorage тоже зарегистрируй в IoC, и дальше serviceProvider.GetService<CusomDataSurceStorage>()


у меня же нет доступа до serviceProvider в мейне, как мне тогда получить Identity.UserManager и передать его в AuthManager который я создаю в мейне перед стартом вебСервера?
138 2112103
>>11951
BUMP.
А то засрали тред херней какой-то.
139 2112107
>>12074
>>12075
Да. Читай https://docs.microsoft.com/ru-ru/dotnet/core/extensions/dependency-injection-usage

Пойми ты как оно работает в принципе, что бы создавались инстансы, кто-то их должен их создавать. Так вот, когда ты просто в конструкторе ожидаешь зависимости, ане создаешь их внутри класса - это уже DI (подкласс/реализация IoC).
Дабы не охуеть в екшене/мейне, создавая инстансы для передачи в конструкторы, используют IoC container. В твоем случае - коровский. Вот он и должен знать куда и как что пихать. IoC container не пропихнет зависимости в твой обьект волшебным образом, ты должен предоставить ему конфигурацию (твой стартап с аддСкопед) и создавать инстансы через него в явном (serviceProider.GetService - "service locator" pattern) или неявном, как за тебя делает аспнетовский контроллер (он же aggregation root в контесте IoC container-а) ​или как в магических пропертиинджекшн автофака, или через вивер какой-то (походу ты такой долбоеб, что они тебе понравятся) .

Так вот, не создаешь обьекты внутри сервисных классов (менеджер твой), а ожидаешь их в кострукторе или параметрах методов - красавчик у тебя есть DI.
Дальше ебись как хочешь, но для нелюбителей грызть катус есть IoC container-ы., они тебе помогут, если ты их настроишь и будешь использовать. Большинство из них универсальны, но ты обосрался из-за того, что фсп.нет за тебя много работы сделал, подставля их "магическим" образом в контроллеры и ты как каргокультист стал ожидать такого же поведения от консольки.

Все, теперь иди нахуй плиз. Ты заебал.
141 2112113
>>12099

>у меня же нет доступа до serviceProvider


Я же тебе скинул ссылку как получить serviceProvider до запуска host.Run(). Первая часть статьи для Core 1, вторая для Core 2 и выше. Или тебе похуй и я должен придти к тебе и написать код? Заливай на гитхаб, напишу.

>получить Identity.UserManager и передать его


Да ты задрал. Тебе не надо ничего передавать. тебе надо зарегистрировать все классы и интерфейсы, которые ты хочешь использовать. IoC сам подставит в конструкторы нужные классы.
142 2112116
>>12107
Селффикс:

>(он же aggregation root в контесте IoC container-а)


иеется ввиду стартап. Что-то не туда написал.
143 2112117
>>12113
Давай игнорировать этого пажилого инвалида, братик. Свою порцию внимания он получил.
144 2112122
>>12112
Видел, да. Но это с каждым полем придется сну-сну, я думал может есть какие настройки для нэйминг конвеншн.
image.png91 Кб, 426x336
145 2112124
>>12117
Не надо, я же не вниманиеБлядь, я искренние хочу разобраться и вырваться уже с этих вебформсов, а тут сразу такая засада
146 2112129
>>12122
Бля, ну там все равно в ColumnAttributeTypeMapper рефлексия дрочится. У тебя там и имя типа и поля будет - вот и сложи 1+1.
147 2112130
>>12116

>aggregation root


Вроде обычно composition root называют. Хотя тот чел все равно гуглить и читать не станет.

>Давай игнорировать этого пажилого инвалида


Как говорится, старую собаку новым трюкам не научишь.
148 2112137
>>12130
Да, композишн рут, у меня самого башка сейчас как желе.
Сидеть до 2к2дека1 на вебформсах это боль.
149 2112139
>>12129
>>12122
+
так вот же они https://github.com/henkmollema/Dapper-FluentMap#convention-based-mapping
Либа под митом, вроде бы живая - юзай. Или вырви реализацию
Я сам с дапером давно не работал, гуглю тупо
150 2112145
>>12139
Спс, гляну.
А ты в базах шаришь? У меня весь гемор из-за того, что я не могу из хранимки вернуть сджойненые таблицы, в которых есть одинаковые имена колонок во тут спрашивал >>2111625 →
151 2112172
>>12113
Извини Братек, но я не понимаю, я был бы очень благодарен если бы ты написал как надо и тыкнул пальчиком куда смотреть вот репозиторий
https://github.com/stasmalinovskij/DITest
там в общем ничего особенного просто темплейт с Индентити и тем самым менеджером
152 2112189
>>12172
Игорь, ты заебал.
Что теб нахуй надо? Задачу описать можешь хотя бы? Не можешь - иди нахуй.
153 2112304
>>11745

>увеличивающие объем кода


Тут-то ты и обосрался.
Без DI у тебя будет миллион факторий, триллион билдеров и дохуилиярд статики с классическими синглтонами.
Серьезно, няша. DI позволяет смотреть на класс как изолированный компонент и даниматься именно им, не думая о том что вокруг происходит. Твой класс должен что-то делать и делать хорошо. Без DI у тебя внезапно начинаются прокидываться служебные штуки, чтобы их не прокидывать ты хуячишь статику, и так все глубже и глубже в пучину говнокода, а в конечном истоге - неподдерживаемый кусок говна, в котором чтобы маленькое изменение сделать - месяц работы 10 программистов нужно выделять.
154 2112343
>>12304

>Без DI у тебя будет


Тут-то ты и обосрался.
155 2112351
>>12343
Няша. Я как-бы не первый год в разработке и видел времена, когда костылили как могли.
Я уже написал, в чем суть. С DI ты воспринимаешь класс как компонент. Тебя мало ебет что там вокруг происходит, у него есть одна ответственность, обычно один-два метода и погнали. Без DI - среднестатистический код выглядит как полотнище на 2-3к строк, с вложенными классами, дерганием отовсюду статики, служебной хуйней по прокидыванию зависимостей. А если нет - то это и есть DI просто самописный и который говно.
156 2112354
>>12351
Попробуй прокидывать сразу значение вместо зависимости.
157 2112357
Какого хуя OData от майков - отдает все данные если выставить фильтр? Пиздец же, я и так полдня разбирался - почему это говно не хочет работаь(спойлер, это говно в route не умеет), ну ок, норм. Делаем skip-take, норм работает, хотим отфильтровать по полю - хуяк, 80к записей загрузилось. Что это за говно, блядь? Какого хуя оно так работает? Что с этим говном делать и как чинить?
158 2112426
>>07311 (OP)
Объясните пожалуйста как работает вот такой синтаксис.
Мне не понятно что вообще тут делает =>
159 2112433
>>12426
На первой пикче в метод Map передали два параметра: строка и лямбда.
На второй пикче в метод Run передали один параметр: асинхронная лямбда.

Лямбда - это функция в виде переменной.
160 2112441
>>12433
А. спасибо, анонче
Только сейчас увидел в конце скобки }); Сначала относился к этому как к какому то телу функции Map
Спасибо ещё раз, отличное объяснение что такое лямбды кстатей
161 2112495
>>12351
ООП головного мозга. Никогда не понимал почему не юзать статику, когда методам никакого ООП не нужно. И всегда впадаю в ступор, когда вижу код типа:

new ClassA().Get(id)

когда простая статика выглядит более лаконично и чище.

Главное чтобы все было разделено модульно и не смешивалось в кучу.

>Я как-бы не первый год в разработке


Ты давно в разработке, да, это видно, наверно и F# с ФП никогда не трогал - слишком стар уже? Ничего, скоро на пенсию.
162 2112568
>>12172
Сделал пулл реквест, проверяй за щекой
image.png1,3 Мб, 2880x1024
163 2112604
бля как же охуенно, видеть всего одну ошибку в компилере, я уже понимаю что мне осталось решить всего одну проблему и оно у меня бдует работать, о да сука

тема: Linq groupBy

inb4: > аряяяя я пишу на шарпе из под линукса ну мааамм
164 2112632
>>12495

>Никогда не понимал почему не юзать статику


Как ты статику мокать собрался? Или ты такой умный и нахуй тесты? Или чтобы проверить что запрос возвращает то что нужно - будешь все базу разворачивать и пусть тесты по полдня гоняются?

И вообще, эти офигительные истории про модульную статику всегда, блядь, приводят к граблям, которые оч больно в будущем ебнуть могут. Да блядь, хрестоматийный пример из моей ранней работы. Проект, люди до - хуйнули свое логгирование в SQLite, написали свой асинхронный логгер, с очередями, все по уму на самом деле. Работало, дергали лог в виде Log.Critical("Message"). В итоге - 5 лет разработки, пора переносить в облако, это говно - дергается отовсюду, лог на серваке сожрал 10 гигов стораджа(ой, не предусмотрели возможность задать уровни, чтобы можно было не логгировать trace и debug, ай-ай-ай, до облака - отдельное приложение следило за файлом лога и когда раздувалось - удаляли), охуенно, клиент кричит, логгирование все еще нужно и просто полезть и закомментить лог - нельзя, все нормальные люди - вынесли логер в интерфейс и можно было прокинуть логгирование какое хош, но нет, тут была статика, везде она дергалась, на перепиливание кода ушел почти месяц, клиент сыпал хуями, благо альтернатив у него не было. Обернули бы эту статику хотя бы в интерфейс - одной строчкой бы проблема решалась при конфигурировании хоста, но зачем, правда же, статика эт ж охуенно, какие проблемы оно в будующем вызвать-то может.

>когда простая статика выглядит более лаконично и чище.


Уже написал про удобство поддержки. То что оно выглядит лаконично, ок, хорошо. Вот тебе нужно чтобы перед записью в базу, когда луна восходящая, а меркурий в водолее - ты слал бы сущность для подтверждения микросервису который должен ответить - можно или нельзя сохранять. Требование появилось за два дня перед дедлайном и вы не предусмотрели. Со статикой - ты будешь вынужден ебнуть вилку, а мог бы как человек - сделать классическую стратегию и все бы решалось щелчком пальцев, простым добавлением нового условия. Но ведь лучше ебнуть ветку или лямбду передать, чтобы потом хуй кто разобрался, кроме шиза, который это писал и на проекте с самого старта.

И про ФП. Да, пробовал скалу, пробовал хацкель, пробовал F#. Весело, как опыт. Но что-то большое чисто на ФП в жизни писать не стану. Достаточно просто взглянуть на репки "реальных" проектов, когда пытаются на тырпрайз натянуть ФП, а потом гордо тыкают в грудь, что какие мы молодцы, никто кроме нас это говно поддержать не может, а клиент - жрет кактус и вынужден вам платить, потому что тупенький был когда ему продавали и повелся на истории про то что меньше строк кода -> быстрее разработка.
164 2112632
>>12495

>Никогда не понимал почему не юзать статику


Как ты статику мокать собрался? Или ты такой умный и нахуй тесты? Или чтобы проверить что запрос возвращает то что нужно - будешь все базу разворачивать и пусть тесты по полдня гоняются?

И вообще, эти офигительные истории про модульную статику всегда, блядь, приводят к граблям, которые оч больно в будущем ебнуть могут. Да блядь, хрестоматийный пример из моей ранней работы. Проект, люди до - хуйнули свое логгирование в SQLite, написали свой асинхронный логгер, с очередями, все по уму на самом деле. Работало, дергали лог в виде Log.Critical("Message"). В итоге - 5 лет разработки, пора переносить в облако, это говно - дергается отовсюду, лог на серваке сожрал 10 гигов стораджа(ой, не предусмотрели возможность задать уровни, чтобы можно было не логгировать trace и debug, ай-ай-ай, до облака - отдельное приложение следило за файлом лога и когда раздувалось - удаляли), охуенно, клиент кричит, логгирование все еще нужно и просто полезть и закомментить лог - нельзя, все нормальные люди - вынесли логер в интерфейс и можно было прокинуть логгирование какое хош, но нет, тут была статика, везде она дергалась, на перепиливание кода ушел почти месяц, клиент сыпал хуями, благо альтернатив у него не было. Обернули бы эту статику хотя бы в интерфейс - одной строчкой бы проблема решалась при конфигурировании хоста, но зачем, правда же, статика эт ж охуенно, какие проблемы оно в будующем вызвать-то может.

>когда простая статика выглядит более лаконично и чище.


Уже написал про удобство поддержки. То что оно выглядит лаконично, ок, хорошо. Вот тебе нужно чтобы перед записью в базу, когда луна восходящая, а меркурий в водолее - ты слал бы сущность для подтверждения микросервису который должен ответить - можно или нельзя сохранять. Требование появилось за два дня перед дедлайном и вы не предусмотрели. Со статикой - ты будешь вынужден ебнуть вилку, а мог бы как человек - сделать классическую стратегию и все бы решалось щелчком пальцев, простым добавлением нового условия. Но ведь лучше ебнуть ветку или лямбду передать, чтобы потом хуй кто разобрался, кроме шиза, который это писал и на проекте с самого старта.

И про ФП. Да, пробовал скалу, пробовал хацкель, пробовал F#. Весело, как опыт. Но что-то большое чисто на ФП в жизни писать не стану. Достаточно просто взглянуть на репки "реальных" проектов, когда пытаются на тырпрайз натянуть ФП, а потом гордо тыкают в грудь, что какие мы молодцы, никто кроме нас это говно поддержать не может, а клиент - жрет кактус и вынужден вам платить, потому что тупенький был когда ему продавали и повелся на истории про то что меньше строк кода -> быстрее разработка.
165 2112644
>>12632
ВСЕ ПО УМУ
@
Log.Critical
@
РЯЯЯЯЯ 10 ГИГ ЛОГОВ
@
РЯЯЯЯЯ ЛОГИРУЕТСЯ DEBUG И TRACE
166 2112648
>>12644
Ну, по уму в контексте - лог вообще не тормозит работу самого приложения. В те времена тот же NLog при работе с базой - пиздец как тормозил.
Но да, вот так вот, не догадались, те кто делал, сразу что нужно уметь отключать уровни, не догадались что может быть нужно будет не в базу логгировать а отправлять другому микросервису или сервису, много о чем не догодались и заметить на этапе отладки и тестирования было сложно, потому что: ну работает, вроде за месяц работы не особо-то раздулось и т.д., а нужно еще и основную функциональность пилить.
167 2112652
>>12632
Потому что тебе попалась хуевая статика - теперь у тебя травма и ты пихаешь ООП во все щели. Я же ничего против классов, интерфейсов и так далее, не имею, просто не нужно делать overengineering там где он не нужен. Для логгинга я бы не стал юзать статику.
168 2112659
>>12632

>записью в базу, когда луна восходящая, а меркурий в водолее


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

>простым добавлением нового условия


Это не простое добавление условия:
1. Твой код превращается в лапшу с каждым ифом, такое обычно разбивают на машину состояний.
2. Приходится покрывать код логами на всех слоях. Мало того, что код выполняет несколько ответственностей, следит за коннекшеном к базе данных и исполняет бизнес процессы, так и модульные тесты это пиздец усложняет, еще и интеграционные тесты могут попросить на это написать. Создать мок, потом нагородить инфраструктуру моков, только чтобы у зависимости вызвать метод.
3. Так с таким подходом еще непонятно какие исключения бросаются. Из-за того, что доступ к базе данных размазан по всему бизнес слою, надо постоянно помнить, какие исключение умеет кидать база данных или тот же логгер.
4. В разы легче покрыть тестами простую функцию без сайд эффектов, доступа к базе данных, логгирования и непредсказуемых исключений. В разы проще написать тестирование на основе свойств, чем классическое менее эффективное тестирование.
169 2112661
>>12648
Лог тормозит работу, особенно если надо что-то тяжелое в дебаге писать, особенно если это структурные логи с сериализацией объектов. Я уже писал об этом, в .NET 6 хотят сделать ленивый провайдер генерации строк, чтобы решить эту проблему.
200.gif502 Кб, 240x200
170 2112671
>>12661

>логи с сериализацией объектов


>код настолько хуево написано что без логгирования каждого чиха и объкта не разобрать что происходит

171 2112673
>>12671

>без логгирования каждого чиха


С чего ты решил, что логгируется каждый чих?

Ситуация: пишется аналитика, в дебаге надо измерить производительность всех запросов, тест не один - нужен контекст теста для анализа производительности, на проде этот лог нахрен не нужен.

Другая ситуация: нужен аудит действий пользователя, чтобы понять, что делал тенант. Нужно знать действие и результат действия. Кишки покрывают тесты.
172 2112683
Чому так? В бд данные есть.
173 2112686
>>12683
Все норм. Надо было в конце ToList() указать.
174 2112830
C# всё, он никому не нужен

Но у меня есть вопрос

Мне надо сделать пять одинаковых, простых микросервисов, я не хочу ебатыся и делать их отдельными классами, а только одним и чтобы этот класс работал с разными ссылками типа http://abc/001 http://abc/002 http://abc/003, писал через общий репо в разные таблицы в БД

Такое вообще возможно? И как это сделать?
175 2112832
>>12830
Подними 5 раз один и тот же микросервис на 5 разных ссылках, нашел проблему.
176 2112838
>>12830
Че ты за хуйню несешь.
Микросервис, в классическом понимании. Это отдельное приложения, который, обычно, работает со своей базой и делает какую-то одну простую задачу и в идеале ничего о других микросервисах не знает, общаясь. если нужно через какой-нибудь евент-бас или с помощью апи. Все.
Если тебе нужно запустить пять инстансов одного и того же микросервиса - ты так и делаешь. При чем тут классы - я вообще не понял. В рамках микросервиса у тебя вообще может не быть каких-то классов, кроме Program, и то если мы про шарп говорим.
Про разные ссылки - это вопрос развертывания, ты вообще можешь развернуть за проксей и балансировщиком и у тебя по одном и тому же урл будут 100 инстансов роутиться и запускаться новые инстансы в зависимости от нагрузки.
Я к чему. К тому что сформируй вопрос нормально, что тебе вообще надо.
изображение.png1 Кб, 446x46
177 2112851
>>12832
Я полный новичок, я знаю, что над классом используется вот такая запись как на картинке и по ней идёт обращение, но как сделать их несколько для одного класса или как сделать некий список из этих ссылок, я не знаю

>>12838
Очень сложно, потому что у тебя уровень понимания выше.

Попробую раздробить

Итак, часть первая

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

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

Как смог объяснил
178 2112859
>>12851

>как сделать их несколько для одного класса


Зачем? У контроллера атрибут задает только часть пути. Ничего не мешает или создать другой контроллер, или развернуть несколько раз приложение на разных ссылках (не трогая C# код вообще). Коннекшен к базе данных можно в конфигурационный файл запихнуть или еще куда.
изображение.png17 Кб, 560x429
179 2112871
>>12859
О, вот это уже похоже на то, что мне нужно.

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

Но тогда вопросы!

Где мне ссылки прописывать? Ибо обычно это дерьмо в файле на картинке
И где, как мне прописывать подключение к базе? Обычно это просто строка и некий путь к таблице.

А, и как мне пять версий сервиса запускать с разными ссылками?
180 2112882
>>12871

>Где мне ссылки прописывать?


>как мне пять версий сервиса запускать с разными ссылками?


iis, nginx или apache, есть еще другие опции, зависит от того, куда деплоить и есть ли лоад балансер. На пикче сеттинги для ide, а не для деплоя.
181 2112892
>>12882
Меня смущает слово деплоить, к сожалению, я нихера не понимаю, что это такое, точнее забыл.

> и есть ли лоад балансер


Та же история, нихера не понимаю, но очевидно, что нет.

Как работает программа, она собирает данные с текущего ПК по адресу localhost, ну и порт там, а дальше уже сам собственно сонтроллер, далее, собрав это демо, оно пишет полученное значение и время получения этого значения в таблицу БД, похрен постгре или мсскл.

Но уже становится понятнее и понятнее.

А можно ли сделать два уровня, типа дерева, на C# - есть прога со ссылками и куда писать и она же запускает пять раз этот блядский сервис, передавая ему данные, ну, как например через соснольку через пробел досовское приложение на С или С++? Ну а далее оно там само ебошит.
182 2112911
>>12892

>Меня смущает слово деплоить, к сожалению, я нихера не понимаю, что это такое, точнее забыл.


В Visual Studio это называется publish. Чтобы сделать publish, тебе надо создать publish profile с нужными параметрами или написать свой кастомный скрипт.

Объясню на примере с IIS:
1. Для запуска сайта исходники сайта не нужны. Нужно то, что получается после компиляции + статические файлы. Publish - позволяет отделить исходники от файлов сайта. Поэтому, первым делом делаем publish в нужное место, в папку скажем. Так же можно создать 5 разных конфигурационных файлов и по суффиксу брать только один нужный во время publish.
2. Делаем 5 раз publish в 5 разных папок.
3. Заходим в IIS и создаем сайт с любым названием. В биндингах прописываем начало ссылка.
4. Создаем 5 приложений у сайта и указываем 5 заранее подготовленных папок. В биндингах для каждого приложения 5 раз прописываем часть пути, которая будет добавляться к ссылке всего сайта.

Для обновления приложения достаточно:
1. Остановить весь сайт
2. Удалить содержимое папок для 5 приложений
3. Сделать снова 5 раз publish
4. Запустить сайт
183 2112916
>>12871

>Суть дерьма, что я делаю, есть пять разных ссылок, есть пять абсолютно одинаковых сонтроллера


Почему ты просто не сделаешь дженерик-контроллер? Методы в базовом классе - виртуальные, чтобы если нужно было - мог переопределить.
184 2112928
>>12892

>Та же история, нихера не понимаю, но очевидно, что нет.


Касательно лоад балансера. Эта задача может быть еще решена через лоад балансер. Все пользователи идут на ссылку лоад балансера, а лоад балансер разбирает ссылку и перенаправляет траффик на нужный сервер. Так как нужно анализировать ссылку, то это лоад балансер 7 уровня - HTTP.
185 2112931
>>12911

Подумаю, в моём случае хоть HTTP и используется, но сайта нет, просто выставленно в настройках, что он открывает страницу по такому то адресу и ничего не выдаёт, только если например postman обращаться по конкретному методу. То есть сонтроллеры максимально простые, просто очень простые и работаю фактически в фоне записывая данные текущего ПК в таблицу в БД.

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

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

>>12928
А вот это уже больше понятно. Но, надо использовать готовое решение или свой велосипед писать для этого? Типа string разбирать на куски и искать нужное.
186 2112932
>>12892

>А можно ли сделать два уровня, типа дерева, на C#


Можно, поздравляю, ты изобрел свой костыльный лоад балансер.
187 2112938
>>12932
А запуск на разных ядрах-потоках это async или сама ОС позаботится для разных запущенных сервисов?
188 2112945
>>12938
Так я ж не знаю как ты собрался этот сервис запускать. Звучит, как будто ты хочешь прогой запустить другую прогу. Тогда это вообще два разных процесса - очевидно два разных потока.
189 2112947
>>12945

> Звучит, как будто ты хочешь прогой запустить другую прогу



Да, с передачей ссылки и пути к таблице с сохранением в БД

Если такое вообще возможно и главное, верно ли так делать в 2021.
190 2112948
>>12947

>верно ли так делать в 2021


Зависит от требований. Если тебе все равно как, сделай несколько вариантов решения и сравни плюсы и минусы.
191 2112957
>>12948
Понял, благодарю за разъяснения.
192 2112961
>>12931

>в моём случае хоть HTTP и используется, но сайта нет


У тебя на пикче Api контроллеры - это тоже сайт, хоть у него и нет html страниц.

>Но, надо использовать готовое решение или свой велосипед писать для этого?


Можно свое написать, можно использовать готовое. Зависит от того, куда это деплоить будут и сколько бабок готовы башлять. Например у амазона есть уже готовый Application Load Balancer, где можно через правила сделать то, что ты хочешь, но он стоит бабок и не малых.
изображение.png53 Кб, 989x858
193 2112967
Наверное самое близкое к тому, о чём идёт речь, но будет ли это работать для нескольких случаев сразу, неизвестно
194 2112968
>>12961
На данный момент это скорее пример для себя чтобы научится
195 2112977
>>12967
Получится один супер метод у контроллера с гигантским свичом внутри, где на основе входящих частей ссылки будет выбираться нужное поведение.
196 2112983
>>12977
Понятно, значит один сервис, запускаемый несколько раз лучший для меня вариант, что неудивительно, ведь он соответствует принципу декомпозиции.
197 2113438
Если в EF сделать так
context.Foos.OrderBy(...).Take(3).Select(f => new {...})
порядок анонимных типов будет такой же как и у отсортированных Foos?
198 2113475
Так, поясните мне вот че
Вот это LINQ?
var selectedUsers = from user in users
where user.Age > 25
select user;

А вот это метод расширения?
var selectedUsers = users.Where(u=> u.Age > 25);

В чем профит LINQ ?
Как помне он пиздец не читаемо выглядит.
Я всегда пишу методом расширения.
Тащемта я думал что users.Where(u=> u.Age > 25) это и есть linq лол.
ну бля этож пиздец удобно.
199 2113539
>>13475

>Вот это LINQ?


Да.

>А вот это метод расширения?


Тоже Linq.
Тред утонул или удален.
Это копия, сохраненная 1 августа 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски