• Как написать логику работы контролеров в Asp. net?

    Сделай пока хоть как-то, лишь бы тебе самому было понятно.

    Потом порефакторишь исходя из задачи.

    Например репозитории имеют смысл, если у тебя возможно, ть заменить хранилище данных - это фича.
    А вот если ты никогда не планируешь менять базу данных - можно спокойно хоть прямо из контроллеров в EF стучаться.
    Ответ написан
    Комментировать
  • Как написать логику работы контролеров в Asp. net?

    @Voland69
    Делать или нет репо для БД - вкусовщина, как по мне.
    EF датаконекст примерно и есть анемичный репозиторий.

    Сервисы делать обязательно, и причина банальна - завтра придут к вам и попросят не MVC контроллер, а web api, soap, rabbit, graphql с gRPC и прочие интересные вещи для интеграции с другими системами (CRM, CMS, мобильное приложение и проч).
    И вы будете разлеплять логику коммуникации и бизнеса.

    Так что в контроллере не должно быть бизнесовой логики, только предоставление нужных данных вьюхе и получение от нее команд.
    Ответ написан
    2 комментария
  • Можно ли в тернарной операции во втором операнде присваивать одной переменной значение другой?

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

    И вообще за подобный код, как у вас в примере, по рукам бить надо.
    Вот это лучше будет гораздо:
    countOfIteration = Math.Min(width, height);
    А если так сильно хочется тернарник, то вот:
    countOfIteration = width > height
      ? height
      : width;
    Ответ написан
    Комментировать
  • Стоит ли читать книгу Шилдта по С#?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Нет, metanit - это днище.
    Читай базовые книги. Шилдта, Джона Скита, Albahari, Эндрю Троэлсена, Роберта Мартина, Joseph Albahar
    Ответ написан
    1 комментарий
  • Как мне визуализировать огромное количество данных из xml-файла?

    Ваша история выглядит примерно так:
    1. Я по непонятным мне самому критериям выбрал язык разметки как формат для хранения данных.
    2. Задумался, что он таки не очень хорошо подходит для этой задачи
    3. Я хочу продолжать использовать этот формат, но хочу избавиться от проблем.

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

    Раз нужно много разных сортировок и фильтраций - можно попробовать, например, sqlite или другую, более полновесную СУБД.

    Если всё-таки хотите остаться на XML, то посмотрите в сторону поточного чтения документа с последующим преобразованием в какое-то внутреннее представление, с которым ваша программа сможет работать эффективнее (по сути вы так изобретёте свою СУБД на минималках с индексами и эффективной структурой)

    Для поточного чтения можно попробовать класс XMLReader


    Но самая большая загвоздка в том что пользователь может фильтровать или сортировать записи по своему усмотрению (по алфавиту, по дате или по другим признакам) как мне тогда запомнить последний визуализированный элемент?

    Нужно сортировать все данные, а не только те что показаны - тогда смещение будет работать ровно так, как ожидается
    Ответ написан
    Комментировать
  • Простой способ хранения данных с серверной стороны C# WCF?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    1) Проверьте существование файла по указанному пути
    2) Писать путь к файлу прямым текстом - плохая практика, такие данные нужно хранить где-то в константном виде, либо в конфигурации
    3) Попробуйте записать в файл каждого юзера "По свойственно", т.е. каждое свойство/поле записать отдельно, это всё в цикле для каждого юзера
    4) Запустите дебаг (Для 3го пункта), проверьте, что находится в файле после записи каждого юзера
    5) Вообще, используйте базу данных)))
    Ответ написан
    Комментировать
  • Как правильнее сравнить на практике языки программирования, чтобы понять, какой изучать?

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

    Если у вас есть цель попасть в финтех и работать над банковскими системами - тогда Java (но в банках и C# используется, кстати говоря, но чаще для других задач)

    Когда будешь уверенно себя ощущать - сможешь быстро за пару дней пробовать любой язык и формировать своё мнение о нём.
    Ответ написан
    4 комментария
  • Ошибка ввода, как исправить?

    @oleg_ods
    В зависимости от локализации ОС в качестве разделителя дробной части может использоваться точка или запятая.

    Для локализаций стран СНГ можно добавить
    Console.ReadLine().Replace(“.”, “,”)

    Тогда будет корректно обрабатывать оба варианта ввода(например «1,2», «1.2»).
    Ответ написан
    Комментировать
  • Почему Random() возвращает одно и тоже значение в C#?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    читаем документацию ну или минимально гуглим
    https://dotnetcoretutorials.com/2021/08/10/generat...
    Вообще в любых библиотеках криптографии часто есть правильные псевдорандомные генераторы.
    А еще есть аппаратные рандомные генераторы
    Ответ написан
    Комментировать
  • Почему Random() возвращает одно и тоже значение в C#?

    Потому что Random генерирует не настоящие случайные числа, а производит определённые операции над сидом.

    Если ты сид не передаёшь, то он будет сгенерирован на основе времени.

    В твоём случае следовало создать один экземпляр Random и вызывать Next на нём.

    Ну и ещё этот класс не потокобезопасен, а по тому, если ты вызовешь Next в двух разных потоках одновременно - ты получишь одно и то же значение
    Ответ написан
    Комментировать
  • Зачем нужно писать using?

    Visual Studio на новых версиях не добавляет using System; из-за того что в .NET 6 и C# 10 появились implicit usings
    А конкретно (в консоли):
    using System;
    using System.IO;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net.Http;
    using System.Threading;
    using System.Threading.Tasks;

    Если ты их выключишь через <ImplicitUsings>disable</ImplicitUsings>, то ошибка появится.
    открыл онлайн компилятор, действительно ошибка

    Зависит от того, что за онлайн-компилятор.
    Ответ написан
    Комментировать
  • Можно ли писать андроид приложения на C#?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Java vs Kotlin - можно спорить, что лучше. Но это нативная разработка.
    Си шарп - кросплатформер.

    Поэтому выбор инструмента зависит от задачи. Серьезное приложение понятие большое.
    Я писал и пишу на яве. Но захотелось выйти за пределы одной платформы.
    Попробывал react native. Не понравилось. Пробую сейчас flutter (dart).
    К чему в результате хочу придти.
    Часть кода общая. Остальное в виде пакеджа и реализацией под конкретную платформу.
    Если еще осилю CPP , то это тоже будет почти общим с обертками над .so .dll
    Но учить до посинения.

    p.s. Сейчас попалось в статье разочаровавшегося ( по сути тот человек хотел сделать WebView приложение).
    Угу именна та часть, которую не реально обернуть для 5ти платформ (андроид иос макось винда линух)

    В каждом пакете Flutter может встретиться баг в коде Dart, или в коде Swift/Objective-C, или в коде Java/Kotlin. А то и в нескольких частях сразу. Его может сломать любое обновление Flutter, Dart, iOS или Android – а вместе с ним сломается и ваше приложение на одной или всех платформах. Если вы не владеет всеми тремя языками и всеми поддерживаемыми платформами, то, вероятно, не захотите искать и устранять проблемы самостоятельно.
    Ответ написан
    Комментировать
  • Можно ли писать андроид приложения на C#?

    Ну Котлин сейчас даже популярнее чем Java.
    Xamarin в принципе по размеру и скорости запуска будет немного хуже, чем Java/Kotlin, при прочих равных.

    Сложнее будет зависимости искать - иногда может понадобиться свою обёртку для жавы написать, если нужно будет с какой-нибудь библиотекой компонентов для Android воспользоваться.

    А в остальном примерно то же самое
    Ответ написан
    3 комментария
  • Почему не запускается exe?

    Чтобы можно было спокойно запускать экзешник - тебе нужно все зависимости положить рядом с ним.
    Делается это через "публикацию". Где это в студии накликать не подскажу, но в консоли это делается командой dotnet publish
    Ответ написан
    Комментировать
  • Как отдать объект без некоторых полей?

    @Voland69
    Строить разные модели (регистрация, логон, инфо о юзере) и маппить их на сущность из базы.
    Если разово, можно конечно [JsonIgnore] навесить, просто не попадет в сериализацю.
    Ответ написан
    2 комментария
  • Можно ли в .NET (C#) при компиляции вычистить из подключенной библиотеки лишние функции?

    @d-stream
    Готовые решения - не подаю, но...
    Надо превратить эту библиотеку во множество nuget пакетов [вместо одного самолёта с зонтиком, гусеницами, бассейном и теннисными кортами]
    Ответ написан
    Комментировать
  • Стоит ли выносить выполнение синхронных методов в пулл потоков в контроллерах ASP NET Core?


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

    В таком случае это будет обычный синхронный метод, хоть и возвращающий таску.


    Встаёт вопрос - перевести ли выполнение этого метода в пулл потоков (через обёртывание в Task.Run) или оставить так как сейчас есть?

    Зависит от того, что именно ты там делаешь.
    Если есть работа с IO, то следует перейти на асинхронщину.

    Если долгие вычисления, то тогда да - есть смысл сделать Task.Run, чтобы не нагружать потоки из основного пула
    Ответ написан
    Комментировать
  • Повлияет ли уход Microsoft на C#/.NET?

    Максимум - сложнее будет купить Pro/Enterprise студию и лицензию на Винду, если нужно деплоиться на неё (вот лишний повод скорее переходить на net 6)

    Ещё будет сложнее работать с Azure, тк сложнее оплата (лишний повод научиться самостоятельно админить сервера и строить свой private cloud)
    Ответ написан
    3 комментария
  • C# HttpClient говорит что я не правильно указываю URL, хотя Postman проходит, как быть?

    Тебе надо сделать URLEncode части с

    mymail@mail.com

    Об этом сказано в документации на smsaero
    Ответ написан
    Комментировать