Цикл статей по ASP.NET Core
1. ASP.NET Core на Nano Server.
2. Создание внешнего интерфейса веб-службы для приложения.
3. Создание первого веб-API с использованием ASP.NET Core MVC и Visual Studio.
4. Развертывание веб-приложения в службе приложений Azure с помощью Visual Studio.
5. Ваше первое приложение на Mac c использованием Visual Studio Code.
Подготовка среды разработки и формирование шаблонов приложений с помощью Yeoman
Для начала вам необходимо загрузить и установить .NET Core и Visual Studio Code с расширением C#.
Проект ASP.NET Core, необходимо создать по этой инструкции.
Разработка приложений ASP.NET Core на Mac с помощью Visual Studio Code
Запустите Visual Studio Code.
Выберите пункт File > Open и перейдите к пустому приложению ASP.NET Core.
В Терминале или оболочке bash выполните команду
dotnet restore
, чтобы восстановить зависимости проекта. Другой способ — выполнить команду command shift p
в Visual Studio Code и затем ввести dot
, как показано ниже:Можно выполнять команды прямо в Visual Studio Code, в том числе
dotnet restore
и использовать другие инструменты, указанные в файле project.json, а также выполнять задачи, указанные в файле .vscode/tasks.json.Этот пустой шаблон проекта просто отображает «Hello World!». Откройте Startup.cs в Visual Studio Code, чтобы посмотреть, как он сконфигурирован:
Для тех, кто только приступает к использованию Visual Studio Code (или Code, для краткости), следует заметить, что данный продукт не только имеет удобный, простой и отзывчивый интерфейс, обеспечивающий быструю работу с файлами, но он также предоставляет инструменты для наиболее эффективного написания кода.
В левой панели навигации находятся четыре значка, представляющие четыре viewlet:
- Explore
- Search
- Git
- Debug
- Extensions
Explore viewlet позволяет быстро перемещаться по системе каталогов, а также облегчает обзор файлов, с которыми вы работаете. При наличии несохраненных изменений в файлах специальный значок на экране будет уведомлять об этом; упрощается процесс создания новых файлов и папок (для этого не надо открывать новое окно). Также удобно пользоваться командой Save All (Сохранить все), доступной в меню, которое появляется при наведении курсора мыши.
Code интегрируется с Git, если он установлен на вашем компьютере. При помощи Git viewlet можно создавать новые репозитории, подтверждать изменение кода, отправлять изменения.
Debug viewlet поддерживает интерактивную отладку приложений.
Кроме того, в редакторе Code есть множество замечательных функций. Вы увидите, что неиспользованные операторы using будут подчеркнуты и могут быть удалены автоматически при помощи
command .
, если значок лампочки отображается на экране. Также можно видеть, сколько ссылок на классы и методы есть в проекте. Если вы переходить с Visual Studio, то вы можете использовать многие знакомые сочетания клавиш, например, command k c
, чтобы закомментировать блок кода или command k u
, чтобы раскомментировать его.Локальный запуск при помощи Kestrel
В данном примере мы используем Kestrel в качестве веб-сервера. Его конфигурация хранится в файле project.json, в котором он указан как зависимость.
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
}
}
- Выполните команду
dotnet run
, чтобы запустить приложение. - Введите в адресной строке
localhost:5000
. - Чтобы остановить веб-сервер, нажмите
Ctrl+C
.
Публикация в Azure
После создания приложения можно использовать интеграцию с Git, встроенную в Visual Studio Code, для отправки обновлений в Microsoft Azure.
Инициализация Git
Инициализируйте Git в папке, в которой вы работаете. Нажмите на Git viewlet, затем нажмите на кнопку
Initialize Git repository
.Добавьте сообщение подтверждения и нажмите enter, или нажмите на «галочку», чтобы подтвердить файлы.
Git отслеживает изменения, поэтому если вы обновили файл, Git viewlet отобразит файлы, которые изменены с момента последнего подтверждения.
Инициализация веб-сайта Azure
Развернуть приложение в Azure Web Apps можно при помощи Git.
- Создайте новое веб-приложение в Azure. Если у вас нет учетной записи в Azure, вы можете создать бесплатную пробную учетную запись.
- Включите для веб-приложения в Azure поддержку непрерывного развертывания при помощи Git.
Запишите URL Git для веб-приложения на портале Azure:
В окне Терминала добавьте удаленный репозиторий
azure
с URL-адресом Git, который вы записали ранее.git remote add azure https://ardalis-git@firstaspnetcoremac.scm.azurewebsites.net:443/firstaspnetcoremac.git
Чтобы развернуть приложение, отправьте его в репозиторий master.
git push azure master
Откройте в браузере только что развернутое приложение. Должна отобразиться надпись
Hello World
!Комментарии (18)
Diaskhan
24.11.2016 06:29Вообще прозвучит странно, Но предположу ответить следующей формулировкой, net core отличается своей быстротой в отличие от старшего брата, на Techempower он действительно быстр
Прирост производительности был 2,120 rps на Mono, а стал 1,822,366 rps Феноменальный прирост 85,900%.
https://www.techempower.com/blog/2016/11/16/framework-benchmarks-round-13/
То есть в виду того что ASP был сломан уже два раза, можно считать что netcore это микрофреймворк по аналогии
как Laravel и Lumen.
Из ORM только недавно починили интеграцию с EF. Когда будет поддерживать другие ОРМ один бог знает.
Господа Net.core это микрофреймворк со вытекающими отсюда последствиями.dotnetdonik
24.11.2016 09:57-1Тест tech empower по text plain Json, не лучший пример, они используют не свои сокеты, а p/invoke Libuv- посмотрите как он с базой работает, полагаю со своим .net I/o уступая в 5-6 раз конкурентам.
dotnetdonik
24.11.2016 10:13и опять же, не следует забывать что в Asp.net со статическим httpcontext и велосипедом под него в виде aspnetsynccontext были очень грубые ошибки дизайна которые просто удивительно как прожили 15 лет, то что их убрали и теперь используют что бы продать новый Фреймворк не очень честно со стороны мс
Razaz
24.11.2016 14:57Plain-Text показывает производительность чистого решения. С базой там от многих факторов зависит. Сейчас вроде как либы подтягивают. На Windows Там совсем другая картина. Жалко что в тесты не попало.
Razaz
24.11.2016 15:04Кстати будет интересно посмотреть на перформанс когда System.IO.Pipelines зарелизят.
Razaz
24.11.2016 15:02А какие последствия? И почему микро? Там есть все кроме прибитого гвоздями ОРМа и это очень классно.
Да и Dapper не ОРМ уже?
В моем понимании микро это Nancy.
dotnetdonik
24.11.2016 10:03Vs code становится приятней, но подсветка работает не всегда правильно, solution на несколько проектов Omni sharp не всегда подхватывает с первого раза с intelli sense по другим проектам, приходится переключатся между проектам, или реалоадить солюшин постоянно добавив проект и reference, не удобно.
kxl
24.11.2016 10:40Да, тоже обнаружил, что новый solution с проектами по .Net Core, созданный в VS2015, не подхватывается Omni Sharp вообще… Отправил Issue на Github, поставили статус Bug — там действительно странный Linq на получение файлов проектов — не все варианты отрабатывает. Назначили исправление к версии 1.6 (текущая 1.5.3), но, может, раньше починят…
Да, JetBrains Rider вообще эксепшены выдает на этом solution — так разработчики сослались на то, что у них не поддерживается установленная у меня версия .Net Core SDK. Я вообще не понимаю как так закладываться на какую-то старую версию, может к тому времени как Rider родится SDK уже несколько мажорных версий перешагнет…kxl
26.11.2016 18:47По моему Issue баг пофиксили и у меня теперь всё работает как надо!
Кто хочет протестировать на своём проекте — вот ссылка на Issue
Ссылка на бета-версию 1.6.
Как ставить бету здесь.
0xFE
28.11.2016 01:54проект ASP.NET Core, необходимо создать по этой инструкции.
а «dotnet new -t web» не проще?
TSR2013
А не подскажете, а когда будет исправлено https://github.com/dotnet/cli/issues/3185
В кратце в Ubuntu 14.04(libcurl 7.35.0) происходит segfault на dotnet restore в libcrypto
Razaz
Вроде закрыт уже?
TSR2013
Ну у меня libcurl 7.35. Я обновил до preview3 и ничего не поменялось. Возможно просто пора перебираться на 16.04
Razaz
https://github.com/dotnet/cli/issues/4109 Вот тут еще про него. Может обновить libcurl до 7.38.0 попробовать?
TSR2013
Ubuntu 14.04 поддерживает максимально 7.35.0. Можно конечно альтернативные репозитории поискать либо из исходников собрать, но мне кажется проще наверное обновить до 16.04