• Как правильно хранить логин и пароль для Админа в Asp.Net Identity?

    Михаил добрый день! А чем Вас смущает хранение пары логин-пароль в web.config?
  • C#: Реализация UnitOfWork factory?

    WhiteNinja добрый день! Если честно, не уверен, но можно попробовать обернуть using(var uow = ...) в TransactionScope. И после (или даже вместо) uow.Commit вызвать метод Commit у экземпляра TransactionScope... (сам так сделать пока что не могу)
  • C#: Реализация UnitOfWork factory?

    WhiteNinja и снова добрый день! :) Повторяете ошибку - не должны бизнес-сервисы знать друг о друге. Если в TicketService нужен NotificationService, значит, NotificationService не является компонентом того же уровня, что и TicketService. Т.е. NotificationService является компонентом более низкого уровня по иерархии (причем он может быть расположен как в слое бизнес-логики, так и в слое DAL), чем TicketService. А значит, название NotificationService будет приводить к путанице.
  • C#: Как правильно организовать сервисы в Business Logic Layer с помощью DI?

    heartdevil
    Этого можно добиться, передав необязательный параметр в метод CreateFoo, для указания сохранения или не сохранения

    Этот код начинает "попахивать". Так делать не рекомендуется, потому что метод должен выполнять 1 логическую операцию. Передав булевский параметр, он станет выполнять уже 2 логических операции (почитайте Мартина "Чистый код").
  • Стоит ли в геттере использовать проверку на null?

    GavriKos ну, я имею в виду, что вот такая запись, которую привел в своем вопросе Noortvel, принята за некий шаблон, best practices для Unity...
  • Стоит ли в геттере использовать проверку на null?

    GavriKos согласен, выглядит как-то сомнительно. И очень уж похоже на реализацию паттерна Singleton, только через свойство. Возможно, конечно, что в Unity3D такая реализация принята за некий шаблон?
  • Я не умею готовить репозиторий или он просто не очень?

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

    Maa-Kut теперь понял. Получается, что как раз-таки эту проблему и решает шаблон "Спецификация". Класс-спецификация знает, например, условия выборки пользоватетей, а репозиторий уже вытягивает из хранилища по этим условиям конкретные объекты пользователей. При этом в случае изменения механизма фильтрации мы вносим эти изменения только в 1 место - в класс-спецификацию.
  • Я не умею готовить репозиторий или он просто не очень?

    Maa-Kut согласен с Вами - я привел первое и самое простое, что пришло в голову.
    Во-вторых, вылезает наружу логика доступа к данным, которую репозиторий по-хорошему должен инкапсулировать.
    Вот здесь я немного Вас не понял - можете пояснить?
    Скажем, появится какой-нибудь флажок типа IsActive или IsDeleted, который тоже нужно учитывать - и придется шерстить весь проект, править вышеозначенные запросы.
    На такой случай фильтры можно заменять специальными классами, следуя шаблону "Спецификация" (blog.byndyu.ru/2011/01/domain-driven-design-reposi... - этот блог мне очень нравится, потому что очень многие вещи очень доступны для понимания и популярно объяснены, https://habrahabr.ru/post/171559/ ну и просто погуглить). Скажу честно - шаблон "Спецификация" я пока что применять не начал, и спасибо Вам, Maa-Kut, что Вы мне про него напомнили!
  • Я не умею готовить репозиторий или он просто не очень?

    Михаил ну, можно воспользоваться поиском - по запросу "unitofwork generic repository" выводится достаточно результатов. Если хотите, могу опубликовать на GitHub реализацию, которую, на данный момент своего развития я вижу работоспособной и юнит-тестируемой (в том плане, что ее легко изолировать - с помощью Moq, например). Заодно и более опытные коллеги смогут ее оценить - а это было бы очень полезно!
  • Правильное использование UnitOfWork в сервисах?

    WhiteNinja за прошедший год, я понял, что подход, который я привел в ответе - через синглтон-класс Endpoint - приводит к очень сильному связыванию компонентов системы между собой. Т.е. этот подход я бы не рекомендовал в применении в enterprise-системах. При его использовании если нужно что-то поменять в логике системы, то нужно менять это в нескольких местах, да еще и вероятность регресса значительно повышается. Если Вам нужно в одном сервисе использовать методы другого сервиса, то это говорит о том, что "они слишком много знают друг о друге", и нужно провести рефакторинг. Например, эти общие методы можно вынести: 1) либо в базовый класс; 2) либо как отдельные компоненты, которые через DependencyInjection будут подключаться в каждом сервисе. В итоге у вас появятся новые компоненты - и это хорошо, потому что: а) мы приблизимся к соблюдению принципа единственной ответственности из SOLID; б) мы сможем покрыть эти компоненты юнит-тестами и снизить риск возникновения регресса. Также ваши сервисы станут менее связанными друг с другом, а чем меньше связь между компонентами системы, тем проще эти компоненты покрыть юнит-тестами, тем ниже вероятность регресса и ниже затраты ресурсов (времени и денег) на внесение изменений в систему. Соответственно, задачи решаются быстрее с сохранением достаточно низкого уровня риска регресса. А это означает, что для Вас как разработчика внесение изменений в систему будет дешевле. А раз внесение изменений дешевле, то Ваша прибыль больше.
  • Как выбрать систему сборки: на сервере (ASP.NET) или на клиенте(Gulp, Webpack)?

    zalenski добрый день! Что Вы имеете в виду под "система сборки на сервере"?
  • Login failed на сайте на ASP + MS SQL Server?

    Макс Трофей Добрый день! Под ошибкой "login failed" может быть все что угодно. Приведите значения Ваших строк подключения + подробное описание ошибки в MS SQL Server, потому что на Тостере экстрасенсов мало.
  • Что учить ASP.NET MVC 5 или ASP.NET Core?

    Вадим Маткаримов да, Вы, оказывается, правы. Я в конце августа - начале сентября мониторил вот эту страничку - https://ef.readthedocs.io/en/latest/providers/inde..., и там в списке провайдеров MySQL значился как "Comming soon". Сейчас же авторы обновили документацию. Насчет SignalR для .NET Core - я правильно понимаю, что это SignalR Server (https://github.com/aspnet/SignalR-Server)?
  • Авторизация вконтакте без api на c#?

    ArteSDeveloper добрый день! Почему через http лучше не делать?
  • Что думаете о .Net Core и какие его перспективы?

    Dima Zherebko насчет enterprise разработки на .NET Core - я с Вами абсолютно согласен насчет сроков. Я тоже придерживаюсь мнения, что примерно через год можно будет рассматривать разработку на .NET Core (и всех сопутствующих технологиях вроде ASP.NET Core, EF Core, SignalR, Identity) как на уже полноценном и стабильном фреймворке.
  • Что думаете о .Net Core и какие его перспективы?

    Coder321 Dima Zherebko - по поведению на linux могу добавить следующее: 1) приложение на Ubuntu 14.04 не взаимодействует с БД MS SQL Server 2008 под управлением ОС Windows Server 2008 - возникает SqlException "Connection timed out"; 2) приложение на Ubuntu 14.04 взаимодействует с БД PostgreSQL (с применением Npgsql) только если добавить чуть-чуть магии - а именно, выполнив команду "sudo ln -s /usr/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Native.so /usr/lib/libSystem.Native.so". Без выполнения этой магической команды (которая, как мне кажется, обязательно должна быть указана в документации по .NET Core или ASP.NET Core) будет NpgqlException "Connection timed out". В первой ситуации использовался EF Core, во второй - и EF Core, и Dapper. Так что я бы сказал, что проблемы все-таки есть.
  • Что учить ASP.NET MVC 5 или ASP.NET Core?

    Вадим Маткаримов, Вы описали, что ASP.NET 5 и ASP.NET Core - это одно и то же - согласен. Но автор спрашивает про ASP.NET MVC 4/5 и ASP.NET Core. Поэтому позволю себе дополнить Ваш ответ. Из своего опыта работы с ASP.NET Core могу сказать следующее: 1) ASP.NET Core на Linux работает только с некоторыми СУБД (SQLite, MS SQL Server, PostgreSQL и я до сих пор в возмущении, что Oracle вместе с MySQL игнорирует .NET Core) да и то с особенностями (например, приложение ASP.NET Core на Ubuntu 14.04 не будет взаимодействовать с БД MS SQL Server 2008 на Windows Server 2008 - во всяком случае, мне это не удалось); 2) для .NET Core отсутствует какой-либо спектр библиотек по работе с Excel, PDF; 3) .NET Core пока что не поддерживает работу с изображениями; 4) рефлексия в .NET Core тоже чуть отличается от .NET Full; 5) EF Core ужасно сырой; 6) SignalR отсутствует вовсе. Исходя из этого, лично я сделал следующий вывод: если нужно разработать полноценное коммерческое веб-приложение по автоматизации бизнес-процессов с последующей модернизацией и сопровождением (где, например, обязательно нужна работа с Excel - а она нужна в большинстве проектов, потому что заказчикам отчетность жизненно необходима), то выбор за ASP.NET MVC (и лучше 5 версии). Если же Вы хотите разработать какой-нибудь сайт или достаточно простое веб-приложение (особенно если Вы делаете это для себя), то можно попытаться реализовать это на ASP.NET Core. Думаю, что полноценные коммерческие разработки по автоматизации бизнес-процессов на ASP.NET Core будут иметь место минимум через год - к тому времени и EF Core стабилизируется (сейчас, насколько вижу, на GitHub идет активная работа по исправлению ошибок и улучшениям), и библиотеки для работы с Office появятся, и .NET Core в целом будет более полноценным, и различные нюансы работы с Linux будут устранены. bogdanstefanjuk - отвечаю на Ваш вопрос: сейчас я бы посоветовал Вам в первую очередь изучить и набраться опыта разработки веб-приложений на ASP.NET MVC 5 + Full .NET - все-таки, это уже стабильный фреймворк. И уже потом можно изучать ASP.NET Core. Потому что ASP.NET Core хоть и релизный, но вспомогательные технологии, которые сильно упрощают жизнь (EF Core, Identity, SignalR, поддержка СУБД), пока что сырые и требуют значительной стабилизации.
  • Как задеплоить .net core WebApp на Ubuntu?

    Sergey Mozhaykin добрый день! Скажите, пожалуйста, какие именно проблемы возникли с nginx? Я сейчас пытаюсь развернуть приложение asp.net core на ubuntu 14.04 с использованием nginx (через dotnet publish), но при обращении к сайту получаю 502 bad gateway от nginx. Такое ощущение, что либо некорректная конфигурация nginx, либо я как-то не так использую dotnet publish. (Строка "UseIISIntegration" из Program.cs убрана).