company_banner

ASP.NET Core: Ваше первое приложение на Mac c использованием Visual Studio Code

  • Tutorial
Представляем вам последнюю статью из цикла по разработке на ASP.NET Core. В данной статье вы узнаете как можно написать свое первое приложение ASP.NET Core на Mac.



Первый цикл статей по 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!
Microsoft 378,32
Microsoft — мировой лидер в области ПО и ИТ-услуг
Поделиться публикацией
Комментарии 18
  • 0

    А не подскажете, а когда будет исправлено https://github.com/dotnet/cli/issues/3185
    В кратце в Ubuntu 14.04(libcurl 7.35.0) происходит segfault на dotnet restore в libcrypto


    (gdb) bt
    #0  0x00007f177e2bdd4d in ?? () from /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
    #1  0x00007f177e2b8c6b in X509_verify_cert () from /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
    #2  0x00007f179fee7925 in ?? ()
    #3  0x00007f175f132c00 in ?? ()
    #4  0xbafbcb4b7ab40f52 in ?? ()
    #5  0x000000000003ac21 in ?? ()
    #6  0x00007f1818856f90 in vtable for InlinedCallFrame () from /home/john/dev/tools/dotnet/shared/Microsoft.NETCore.App/1.0.1/libcoreclr.so
    #7  0x00007f175f1335e8 in ?? ()
    #8  0x00007f17a000cec0 in ?? ()
    #9  0x00007f17a000cec0 in ?? ()
    #10 0x00007f175f132c00 in ?? ()
    #11 0x00007f179fee7925 in ?? ()
    #12 0x00007f175f132ca0 in ?? ()
    #13 0x00007f17a000cec0 in ?? ()
    #14 0x00007f17803b9e60 in ?? ()
    #15 0x00007f1774087ef0 in ?? ()
    #16 0x0000000000000000 in ?? ()
    • 0
      Вроде закрыт уже?
      Problem was resolved by downgrading to libcurl3=7.38.0 (Jessie's version), per @tomciaaa's suggestion (after reading the last sentence carefully).
      • 0

        Ну у меня libcurl 7.35. Я обновил до preview3 и ничего не поменялось. Возможно просто пора перебираться на 16.04

        • 0
          https://github.com/dotnet/cli/issues/4109 Вот тут еще про него. Может обновить libcurl до 7.38.0 попробовать?
          • 0

            Ubuntu 14.04 поддерживает максимально 7.35.0. Можно конечно альтернативные репозитории поискать либо из исходников собрать, но мне кажется проще наверное обновить до 16.04

    • –2

      del

      • 0

        Вообще прозвучит странно, Но предположу ответить следующей формулировкой, 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 это микрофреймворк со вытекающими отсюда последствиями.

        • –1
          Тест tech empower по text plain Json, не лучший пример, они используют не свои сокеты, а p/invoke Libuv- посмотрите как он с базой работает, полагаю со своим .net I/o уступая в 5-6 раз конкурентам.
          • 0
            и опять же, не следует забывать что в Asp.net со статическим httpcontext и велосипедом под него в виде aspnetsynccontext были очень грубые ошибки дизайна которые просто удивительно как прожили 15 лет, то что их убрали и теперь используют что бы продать новый Фреймворк не очень честно со стороны мс
            • 0
              Plain-Text показывает производительность чистого решения. С базой там от многих факторов зависит. Сейчас вроде как либы подтягивают. На Windows Там совсем другая картина. Жалко что в тесты не попало.
              • 0
                Кстати будет интересно посмотреть на перформанс когда System.IO.Pipelines зарелизят.
              • 0
                А какие последствия? И почему микро? Там есть все кроме прибитого гвоздями ОРМа и это очень классно.
                Да и Dapper не ОРМ уже?
                В моем понимании микро это Nancy.
              • +2
                очень хочется увидеть статью про dotnet core 1.1
              • 0
                Vs code становится приятней, но подсветка работает не всегда правильно, solution на несколько проектов Omni sharp не всегда подхватывает с первого раза с intelli sense по другим проектам, приходится переключатся между проектам, или реалоадить солюшин постоянно добавив проект и reference, не удобно.
                • 0
                  Да, тоже обнаружил, что новый solution с проектами по .Net Core, созданный в VS2015, не подхватывается Omni Sharp вообще… Отправил Issue на Github, поставили статус Bug — там действительно странный Linq на получение файлов проектов — не все варианты отрабатывает. Назначили исправление к версии 1.6 (текущая 1.5.3), но, может, раньше починят…
                  Да, JetBrains Rider вообще эксепшены выдает на этом solution — так разработчики сослались на то, что у них не поддерживается установленная у меня версия .Net Core SDK. Я вообще не понимаю как так закладываться на какую-то старую версию, может к тому времени как Rider родится SDK уже несколько мажорных версий перешагнет…
                  • 0
                    По моему Issue баг пофиксили и у меня теперь всё работает как надо!
                    Кто хочет протестировать на своём проекте — вот ссылка на Issue
                    Ссылка на бета-версию 1.6.
                    Как ставить бету здесь.
                • 0
                  проект ASP.NET Core, необходимо создать по этой инструкции.

                  а «dotnet new -t web» не проще?

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое