Обновить
1.15

ASP *

Технология создания веб-приложений и веб-сервисов

Сначала показывать
Порог рейтинга
Уровень сложности

Внедрение зависимости и реализация единицы работы с помощью Castle Windsor и NHibernate

Время на прочтение15 мин
Охват и читатели5.2K
В этой статье я продемонстрирую реализацию внедрения зависимости, репозитория и единицы работы, используя Castle Windsor в качестве DI-контейнера и NHibernate как инструмент объектно-реляционного отображения (ORM).


Читать дальше →

Открытый веб-интерфейс для .NET (OWIN)

Время на прочтение6 мин
Охват и читатели16K
Привет, Хабр! ASP.NET Core поддерживает открытый веб-интерфейс для .NET (OWIN), а OWIN позволяет отвязывать веб-приложения от веб-серверов. Он определяет стандартный способ использования связующего ПО при обработке запросов и соответствующих ответов. Приложения ASP.NET Core и связующее ПО совместимы с приложениями, серверами и связующим ПО на базе OWIN. Подробнее об этой паре читайте под катом.


Читать дальше →

Производительность выгрузки большого количества данных из Mongo в ASP.NET Core Web Api

Время на прочтение5 мин
Охват и читатели6.5K

Возникла необходимость выгрузки большого количества данных на клиент из базы MongoDB. Данные представляют собой json, с информацией о машине, полученный от GPS трекера. Эти данные поступают с интервалом в 0.5 секунды. За сутки для одной машины получается примерно 172 000 записей.


Серверный код написан на ASP.NET CORE 2.0 с использованием стандартного драйвера MongoDB.Driver 2.4.4. В процессе тестирования сервиса выяснилось значительное потребление памяти процессом Web Api приложения — порядка 700 Мб, при выполнении одного запроса. При выполнении нескольких запросов параллельно объем памяти процесса может быть больше 1 Гб. Поскольку предполагается использование сервиса в контейнере на самом дешевом дроплете с оперативной памятью в 0.7 Гб, то большое потребление оперативной памяти привело к необходимости оптимизировать процесс выгрузки данных.

Читать дальше →

Путь разработчика ASP.NET → PHP

Время на прочтение6 мин
Охват и читатели30K
Так получилось, что в сентябре прошлого года назад я перешел в компанию, где основным языком бэкенд-разработки был PHP 7. До этого технологии с которыми я работал ограничивались C#, ASP.NET, Javascript (JQuery, Angular 1.x, Typescript), MS SQL, IIS и Windows Server. Теперь же предстояло погружение в новый стек. Данная статьи — не очередной наброс на вентилятор для поддержки холивара. Постараюсь отметить, что показалось необычным или непривычным. Статья обращена к .net разработчикам, но, надеюсь, будет интересна и PHP сообществу.
image

Начнем с сессии

Читать дальше →

Подборка полезных материалов: Микросервисы на .NET Core

Время на прочтение3 мин
Охват и читатели22K
Хабр, привет! Сегодня хотим поделиться полезным контентом по разработке микросервисов на .NET Core: доклады с конференции .NET Conf 2017, Net Core microservices on Service Fabric, курс Microsoft Virtual Academy для новичков, список обучающих материалов, а также пламенная сибирская конференция D2D DevPRO’17. Обо всем этом читайте после ката.


Читать дальше →

Проблемы понимания MVC в ASP.NET MVC и не только

Время на прочтение8 мин
Охват и читатели26K

Случалось ли вам делать рефакторинг "толстых" контроллеров? Приходилось ли создавать многоэтажные модели представлений? Добавлять в представление данные и переписывать при этом код контроллера? Казалось ли вам, что что-то идёт неправильно?


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

Читать дальше →

Нужен ли метод OPTIONS в REST-сервисах?

Время на прочтение5 мин
Охват и читатели75K
Согласно стандарту HTTP/1.1 метод OPTIONS может быть использован клиентом для определения параметров или требований, связанных с ресурсом. Сервер также может отправлять документацию в удобочитаемом формате. Ответ на запрос OPTIONS может содержать список допустимых методов для данного ресурса в хедере Allow.

То есть этот метод мог бы стать отличным средством для документирования наших REST-сервисов с одной стороны, и быть существенным дополнением к архитектурному ограничению HATEOAS с другой.

А теперь давайте отвлечёмся от страшных слов типа “HATEOAS” и зададимся вопросом: а есть ли какая-нибудь практическая польза от использования метода OPTIONS в веб-приложениях?
Читать дальше →

Авторизуем ресурсы в REST-сервисе

Время на прочтение11 мин
Охват и читатели9K
В мире ASP.NET существуют мощные и гибкие механизмы авторизации. Например, ASP.NET Core 2.0 предоставляет разработчику возможность использования политик авторизации, обработчиков и т.д.

Но как реализовать метод GET, возвращающий список ресурсов? А если этот метод к тому же должен возвращать не все ресурсы, а лишь специфицированную страницу? Каждый пользователь должен видеть только те ресурсы, к которым у него есть доступ. Можно получать из базы каждый раз полный список и затем фильтровать его на основе прав текущего пользователя, но это будет слишком неэффективно – количество ресурсов может быть очень велико. Предпочтительно решать вопросы авторизации и разбиения на страницы на уровне запроса к базе данных.

В этой статье описывается подход к решению проблемы авторизации в REST сервисе на базе ASP.NET Web API 2 с использованием Entity Framework.
Читать дальше →

Sharing общих сборок между процессами и доменами в IIS

Время на прочтение8 мин
Охват и читатели7K

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


В этой статье будут показаны пути оптимизации исключительно за счет настроек сервера, таким образом переписывание и перекомпиляция приложений не потребуется. Будет достигнут результат 25 Мб в среднем на один микросервис.

Читать дальше →

Реализация мультизагрузки файлов с индикаторами выполнения на ASP.NET

Время на прочтение10 мин
Охват и читатели4.2K
В этой статье Марк Салливан рассказывает, как с помощью ASP.NET и библиотек Uploadify реализовать мультизагрузку файлов с динамическими индикаторами выполнения. Созданный в процессе класс Http-обработчика, наряду с классом элемента управления, подойдет для любого другого приложения на ASP.NET, что делает этот код, с одной стороны, полезным plug-in-play решением, а с другой – наглядной демонстрацией работы с Http-обработчиком. Он также добавил ряд дополнительных функций на уровень ASP.NET, таких как фильтрация по расширению файла, обратная передача по завершении и безопасность на основе сеансов.


Читать дальше →

Переход с ASP.NET к ASP.NET Core 2.0

Время на прочтение8 мин
Охват и читатели34K

Эта статья является переводом справочного руководства по переносу приложений из ASP.NET в ASP.NET Core 2.0. Ссылка на оригинал


Содержание


  1. Требования
  2. Выбор Фреймворка
  3. Различия в структуре проекта
  4. Замена Global.asax
  5. Хранение конфигураций
  6. Встроенный механизм Dependency Injection
  7. Работа со статическими файлами

Требования


• .NET Core 2.0.0 SDK или более поздняя версия.


Выбор фреймворка


Для работы с ASP.NET Core 2.0 проектом, разработчику предстоит сделать выбор – использовать .NET Core, .NET Framework или использовать сразу оба варианта. В качестве дополнительной информации можно использовать руководство Choosing between .NET Core and .NET Framework for server apps (вкратце можно сказать что .NET core является кроссплатформенной библиотекой, в отличие от .NET Framework) для того чтобы понять, какой Фреймворк для вас окажется наиболее предпочтительным.
После выбора нужного Фреймворка в проекте необходимо указать ссылки на пакеты NuGet.
Использование .NET Core позволяет устранить многочисленные явные ссылки на пакеты, благодаря объединенному пакету (мета пакету) ASP.NET Core 2.0. Так выглядит установка мета пакета Microsoft.AspNetCore.All в проект:

Читать дальше →

Переход с ASP.NET к ASP.NET Core 1.1

Время на прочтение2 мин
Охват и читатели1.8K

Переход с ASP.NET к ASP.NET Core 1.1


Содержание:


  1. Введение
  2. Сравнение стеков технологий
  3. Полезные команды
  4. Сборка и запуск проекта
  5. Entity Framework Core
  6. Введение

Одним из направлений деятельности нашей компании является веб-разработка. Для разработки сайтов мы используем ASP.NET MVC, и, по обыкновению, хостингом для нашего добра служит Windows Server. Но время идет, появляются новые технологии, а старые технологии эволюционируют, как, впрочем, и желания наших клиентов.       


Со временем возникла нужда запустить новый проект на хостинге linux. Все бы ничего, задача, казалось бы, относительно тривиальная.  Но в потребностях значилось использование нашей CMS, написанной на стеке ASP.NET MVC 5, что значительно усложняло задачу.


Поразмышляв, мы решили что наиболее подходящим вариантом будет перенос наших наработок на стек ASP.NET Core. В процессе миграции на рельсы новых технологий возникло достаточно много интересных моментов и сложностей.


Сравнение стеков технологий


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


  • Windows Server 2008 — Debian 8.8
  • IIS 7 — Kestrel в связке Nginx 1.12
  • .NET framework 4.5 — .NET Core
  • ASP.NET MVC 5 — ASP.NET Core 1.1
  • Microsoft SQL — .NET Core 1.1
  • Entity Framework 6.0 — Entity Framework 1.1
  • Встроенный механизм для создания бандлов и минификации — WebPack 2

Полезные команды


Сборка и запуск проекта


Для запуска и сборки проекта можно использовать dotnet run. Можно немного облегчить задачу и использовать команду dotnet run -watch. Данная команда запускает dotnet в

Читать дальше →

Параллелизм против многопоточности против асинхронного программирования: разъяснение

Время на прочтение4 мин
Охват и читатели166K
Хочу представить вашему вниманию перевод статьи Concurrency vs Multi-threading vs Asynchronous Programming: Explained.

В последние время, я выступал на мероприятиях и отвечал на вопрос аудитории между моими выступлениями о Асинхронном программировании, я обнаружил что некоторые люди путали многопоточное и асинхронное программирование, а некоторые говорили, что это одно и тоже. Итак, я решил разъяснить эти термины и добавить еще одно понятие Параллелизм. Здесь есть две концепции и обе они совершенно разные, первая синхронное и асинхронное программирование и вторая – однопоточные и многопоточные приложения. Каждая программная модель (синхронная или асинхронная) может работать в однопоточной и многопоточной среде. Давайте обсудим их подробно.
Читать дальше →

Ближайшие события

Логическая игра с нуля на ASP.NET Core 2, поиграем?

Время на прочтение5 мин
Охват и читатели17K
Современные веб-фреймворки в основном используются для написания корпоративных приложений, но они давно уже достаточно гибки и функциональны и для других областей. Попробуем написать логическую казуальную игру на ASP.NET Core 2. Рассмотрим процесс создания игрового проекта, а так же новшества фреймворка и сопутствующих инструментов.

ДЕМО
Исходники
Читать дальше →

JetBrains Rider 2017.1 — первый релиз новой кроссплатформенной .NET IDE

Время на прочтение2 мин
Охват и читатели43K
Несколько дней назад мы выпустили первую версию JetBrains Rider — новой кроссплатформенной IDE для .NET-разработки на базе IntelliJ-платформы и ReSharper. Rider теперь можно не только загрузить, но и купить. Rider входит в подписку All Products Pack, так что если она у вас есть — загружайте и пользуйтесь, ничего не доплачивая.

Rider 2017.1 - кроссплатформенная среда .NET-разработки

Что еще за Rider?


Rider — это IDE для .NET-разработки, которой можно пользоваться на Windows, Mac и Linux. Rider подходит для многих видов .NET-приложений, в том числе ASP.NET, .NET Core, .NET Framework, Xamarin и Unity.

Переход с ASP.NET на Angular2 с особенностями (личный опыт)

Время на прочтение7 мин
Охват и читатели12K
Развернутая тема: разделение ASP.NET на Front-End (Angular) и Back-End (WebApi)

Особенности: корпоративная разработка (следовательно основной браузер — IE, веб сервер — IIS, среда — Windows); это частичный рефакторинг, а скорее редизайн веб части (имеется legacy код, ориентация на имеющийся UX);

Причины и цели: Цель — редизайн архитектуры веб составляющей (в текущей версии ASP.NET Forms + WCF), по причине невозможности/сложности решения возникших проблем и новых требований (полное обновление страниц после постбэка, повторная отправка формы, сложная навигация и связанные с этим проблемы с данными в формах).
image

Все описанное базируется на личном опыте (или, соответственно, его отсутствии — еще месяц назад о Node.js и Angular я не знал ничего кроме названия). Если краткое описание статьи заинтересовало — начнем.
Читать дальше →

Открытая трансляция DotNext 2017 Piter: Jon Skeet, Sasha Goldshtein и Андрей Акиньшин в прямом эфире

Время на прочтение4 мин
Охват и читатели8K
Мы продолжаем наш цикл открытых трансляций для всех желающих проводить субботы с пользой! До этого мы делали вещание с Mobius 2017 и JPoint 2017 (доступ к ней уже закрыли вроде) В этот раз у нас есть кое-что интересное для .NET-разработчиков.

Сегодня в 10 утра начнется бесплатная YouTube-трансляция первого трека DotNext 2017 Piter!



Первый трек – самый большой и популярный среди наших участников, а значит спикеры и темы соответствующие. Оцените сами:

  • Sasha goldshtn Goldshtein – The Performance Investigator's Field Guide
  • Jon Skeet – The changing state of immutability C#
  • Tomas Herceg – Entity Framework Core: Is It Ready Yet?
  • Андрей DreamWalker Акиньшин – Поговорим про память
  • Игорь Лабутин – Межпроцессные разговоры: причины и способы
  • Алексей Савватеев – Задача о коллективной ответственности

Кроме того, утром в 10:10 вы сможете посмотреть live-интервью с Джоном Скитом, а также еще пяток интервью с другими нашими спикерами. Будет круто!

Ссылка на YouTube-трансляцию под катом.

ASP.NET Core: Создание справочных страниц веб-API ASP.NET с помощью Swagger

Время на прочтение10 мин
Охват и читатели57K
При создании высоконагруженных приложений бывает сложно разобраться в различных API. Сформировать качественную документацию и справочные страницы в рамках веб-API посредством Swagger с интеграцией Swashbuckle .NET Core так же просто, как добавить пару пакетов NuGet и изменить Startup.cs.


Читать дальше →

ASP.NET Core: Разработка приложений ASP.NET Core с помощью dotnet watch

Время на прочтение3 мин
Охват и читатели15K
В этом руководстве мы воспользуемся существующим приложением WebApi (оно вычисляет сумму и произведение двух чисел), чтобы продемонстрировать варианты использования dotnet watch. Образец приложения специально содержит ошибку, которую мы исправим во время изучения.


Читать дальше →

Создаем веб приложение используя VueJS и .NET

Время на прочтение10 мин
Охват и читатели43K
Данная стать является переводом вот этой статьи. В ней я расскажу вам как удобно использовать Vue.js фреймворк при разработке приложения на ASP.NET MVC
image
Читать дальше →