Ответы пользователя по тегу .NET
  • Как прикрутить многопоточную обработку без проблем с памятью?

    @kttotto
    пофиг на чем писать
    Если памяти не хватает, то без разницы сколько потоков Вы используете. Многопоточность нужна либо для асинхронности, либо для параллельности. Добавление потоков памяти не сэкономит, даже наоборот, увеличит ее расход и даже иногда скорости не добавляет.

    Если у Вас есть некий список, с которым работает много потоков, то рассмотрите возможность использования потокобезопасных коллекций. List не потокобезопасен.

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

    И да, нет необходимости добавлять 100 потоков, как уже сказали, такое кол-во в кол-во ядер не влезет и производительности это не добавит, а даже наоборот, т.к. одно ядро будет делить время на часть выделенных потоков и будет переключать контекст между ними. Не факт, конечно, что даже два потока будут разделены по ядрам, за это ОС отвечает, но 100 потоков, это кажется перебором. Можно, конечно поэкспериментировать с кол-вом и посмотреть на производительность при этом.
    Ответ написан
    Комментировать
  • Как разобрать и достать нужные значения из Expression?

    @kttotto
    пофиг на чем писать
    Ответ написан
    Комментировать
  • Как отправить запрос к API сайта?

    @kttotto
    пофиг на чем писать
    Комментировать
  • Что изучать ADO NET или Entity Framework?

    @kttotto
    пофиг на чем писать
    Не знаю, что за "умный" модератор посчитал, что этот вопрос Стоит ли использовать ADO .NET взамен Dapper и EF Core? тоже самое, что текущий. Суть вопросов абсолютно разная, хоть у буквы у некоторых слов одинаковые. Поэтому отвечаю sergeyiljin на его вопрос.

    На все должен быть смысл. EF и Dapper (и вообще ORM) создавались не "от нечего делать", в них была потребность. Хорошая ORM в нужном месте облегчает жизнь разработчику как в разработке кода, так и в его поддержке. Сейчас наоборот стараются максимально абстрагироваться от использования чистого sql и хранимок на бд, все-таки удобнее, работать с кодом в одном месте - и дебажить, и поддерживать в разы проще. И если работаете в ООП парадигме, то удобнее чтобы данные тоже были приближены к объектному виду. Поэтому если Вы не в жестком интерпрайзе и хайлоаде, то нет смысла уходить в прошлое. Знаю один крупный банк, который год назад искал нового разраба на существующий проект документооборота, где надо было все хранимки, более 5к, и sql в коде, перевести в EF. Наверное же не просто так они приняли такое решение.
    Ответ написан
    Комментировать
  • Что должно быть входным параметром метода C#?

    @kttotto
    пофиг на чем писать
    Возможно надо убрать все, что не цифра ли все точки и получится "123"
    Ответ написан
  • Тенденции рынка труда для ASP.NET CORE разработчиков?

    @kttotto
    пофиг на чем писать
    Да, так и есть. Если планируете в веб разработку, то придется хоть в каком то виде и в фронт-енд разбираться.
    Ответ написан
    Комментировать
  • Как правильно возвращать объект из async метода в .NET?

    @kttotto
    пофиг на чем писать
    1. У Вас корректные примеры, никаких await Task.FromResult не нужно.
    2.
    при вызове метода GetRequestResult придётся писать await

    Придется. async/await заразен, он вынуждено подымается вверх по вызовам. С с .Result Вы убьете асинхронность, сомневаюсь, что в Ваше случае есть необходимость в его применении.

    Бест практика одна - использовать его как будто это обычный метод, в этом и красота его применения. await перед вызовом говорит только, что вызывающий поток освободится. Ну и нужно помнить о контексте синхронизации и понимать когда можно сделать .ConfigureAwait(false).
    Ответ написан
    6 комментариев
  • Высокоуровневые макросы в C#, есть ли готовые решения?

    @kttotto
    пофиг на чем писать
    Ищите scaffolding для .net, но пишется он на основе t4. Именно так пишутся шаблоны типов проектов для vs.
    Первое, что показал поиск тут.

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

    @kttotto
    пофиг на чем писать
    Для ссылочных типов, в рантайме, это почти ничего не стоит. Основная проверка привидения происходит на стадии компиляции.
    По сути при таком приведении нет необходимости создавать новый объект, перемещать его в памяти. Просто ссылка entity, теперь будет указывать на объект MyType, но доступ к интерфейсу будет другой.
    В рантайме можно упасть с ошибкой привидения, если Вы в object положили MyType1, а привести пытаетесь к MyType2, интерфейсы совпадать не будут и ясно, что вызывать будет нечего.

    PS: Посмотрел поиском, это все написано в MSDN
    Операция приведения между ссылочными типами не меняет тип времени выполнения базового объекта; изменяется только тип значения, который используется в качестве ссылки на этот объект.
    Ответ написан
    6 комментариев
  • Почему функция нестабильно читает файл?

    @kttotto
    пофиг на чем писать
    Запустите студию с правами администратора и проверьте, будет ли та же проблема. Если нет, значит дело в правах. Если будет, смотрите на размер файла, буфер, блокировку файла другими процессами, возможно делается одновременная попытка чтения из других потоков.
    Ответ написан
  • Как обновить данные, возвращаемые представлением в контроллер?

    @kttotto
    пофиг на чем писать
    Вам нужно изучить жизненный цикл ASP MVC, чтобы понять, что экземпляр контроллера живет ровно от запроса - до ответа. При каждом новом запросе создается новый экземпляр контроллера, это значит, что
    void ActionResult Index(Options options)
    {_options = options }

    смысла не имеет, при новом запросе _options будет пустой, даже если не будет параметра у конструктора.

    Если хотите сохранять какие то настройки через ActionResult Index(Options options), то заведите глобальный статический класс для хранения каких то параметров для всех запросов. Если эти настройки индивидуальны для каждого пользователя, то можно хранить их в сессиях.
    Ответ написан
    Комментировать
  • Как парсить текст в CSV формате игнорируя запятые внутри кавычек и без сторонних библиотек?

    @kttotto
    пофиг на чем писать
    Можно примерно так
    data = new List<string>();
    parts = source.Split("\"");
    data.AddRange(parts.Where((x, index) => index % 2 != 0));
    data.AddRange(parts.Where((x, index) => index % 2 == 0).Split(","));
    result = string.Join(" | ", data.Where(x => !string.IsNullOrWhiteSpace(x));

    Но если будет три кавычки, то это может не сработать.
    Ответ написан
    2 комментария
  • Что посоветуете для динамического рендеринга html в ASP.NET MVC приложении?

    @kttotto
    пофиг на чем писать
    На razor сингл пейдж не сделать, ибо razor - это рендеринг на стороне сервера. Можно реактом и не пользоваться, но без js не обойтись. Аяксом запросить частичное представление и результат вставить в блок модального окна.

    В коде это примерно так будет
    $.ajax({
    	type: "POST",
    	url: window.baseUrl + "Controller/Action",
    	data: params,
    	success: function (result) {
    		if (result) {
    			$(".modal").html(result);
    		}
    	})
    	
    public ActionResult Action(IncomingParameters params)
    {
    	var model = Anything(params);
    	return PartialView("Action", model);
    }
    Ответ написан
  • Переводят ли легаси .net на .net core?

    @kttotto
    пофиг на чем писать
    Те, кого я знаю и с кем работал - переводят.
    Ответ написан
    Комментировать
  • Поэтапный (частичный) перевод веб-приложения с MVC3 на MVC5 или Core?

    @kttotto
    пофиг на чем писать
    Тут надо в код смотреть, все от многого зависит: как реализованы права, роли, как аутентификация работает. В мвс3 идентити еще не было, надо было руками мембешип провайдер реализовывать, в каком виде Вы его переносить собираетесь?
    И потом, почему на мвс5, а не сразу на коре?
    Не зная структуры, тяжело что-то сказать однозначно. Но я бы, наверное, в такой ситуации завел новый проект и просто по тихому переносил в него куски кода, которые можно перенести, а что-то писал по новой. Если переносить с хвоста, то можно упереться в тупик, когда ядро невозможно будет изменить.
    Ответ написан
    Комментировать
  • На сколько сильно программирование .ASP NET MVC зависит от C#?

    @kttotto
    пофиг на чем писать
    Непонятно зачем изучать ASP NET MVC, если не собираешься под него писать код. А если собираешься писать код, то каким образом это делать не зная самого языка C#?

    Ответ: НЕТ, не стоит.
    Ответ написан
    Комментировать
  • Как уменьшить расход памяти в DataGrid у WPF?

    @kttotto
    пофиг на чем писать
    Однозначно нужен постраничный вывод. Никто такие объемы за раз не выводит.
    В крайнем случае подгрузка по мере скрола, с удалением из грида верхней части.
    Даже в ширину не обязательно все выводить, можно не самые критичные данные скрыть за кнопочкой "подробнее" и подгружать для просмотра по клику как дополнительные данные.
    Ответ написан
    Комментировать
  • Вопросы по Clean Architecture?

    @kttotto
    пофиг на чем писать
    Хочу пруфлинк, от куда такая инфа, что сущности не могут быть моделями ORM и иметь внешние ключи. Как по мне, то это полный бред, потому что сущностями как раз называют базовые модели предметной области, которые как раз зачастую являются мапингом таблиц из БД, а соответственно имею внешние ключи.

    Именно поэтому основная ORM в .net носит название Entity Framework, а ее модели называют сущностями.

    Вот определение модели-сущности:

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

    Сущность (entity) - это объект, который может быть идентифицирован неким способом, отличающим его от других объектов. Примеры: конкретный человек, предприятие, событие и т.д.

    Набор сущностей (entity set) - множество сущностей одного типа (обладающих одинаковыми свойствами). Примеры: все люди, предприятия, праздники и т.д. Наборы сущностей не обязательно должны быть непересекающимися. Например, сущность, принадлежащая к набору МУЖЧИНЫ, также принадлежит набору ЛЮДИ.

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

    И напоследок тут.
    Ответ написан
    7 комментариев
  • На чём переписать desktop приложение в браузерное?

    @kttotto
    пофиг на чем писать
    У Вас же нет условия, что это должен быть SPA? Админку для бд можно сделать на стандартном Razor движке в ASP MVC или уже сразу в ASP Core. Будет минимум js, все просто и быстро.
    Ответ написан
    Комментировать
  • Как в RabbitMQ, или без него, настроить классическую очередь?

    @kttotto
    пофиг на чем писать
    Не совсем понятно, зачем очередь на каждом компьютере? По сути очередь нужна только на компьютере №2. Все клиенты отправляют на него отчет, отчеты кладутся в очередь, компьютер №1 забирает их из этой очереди. И очередь для того и нужна, чтобы не зависеть, в сети ли компьютер №1. Все сообщения будут лежать в очереди, пока первый их не заберет. Если в течении какого то времени сообщение не забрали, клиенту дается ответ, что первый не доступен и клиент через таймаут шлет очередное сообщение.

    Каждый клиент имеет свой идентификатор, каждый отчет свой идентификатор и если в очереди оказалось несколько сообщений от одного клиента и с одним идентификатором отчета, то учитывается последний по дате. Ну в принципе и все.
    Ответ написан