Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure Service Fabric — это платформа распределенных систем для развертывания масштабируемых и надежных микрослужб и контейнеров и управления ими.
В этом кратком руководстве показано, как развернуть первое приложение .NET в Service Fabric. По завершении у вас есть приложение для голосования с веб-интерфейсом ASP.NET Core, который сохраняет результаты голосования в серверной службе с отслеживанием состояния в кластере.
С помощью этого приложения вы узнаете, как:
- Создание приложения с помощью .NET и Service Fabric
- Использование ASP.NET ядра в качестве веб-интерфейса
- Хранение данных приложения в службе с отслеживанием состояния
- Отладка приложения локально
- Масштабирование приложения путем подключения дополнительных узлов
- Выполнение последовательного обновления приложения
Предпосылки
Чтобы завершить этот ускоренный курс:
Установите Visual Studio 2019 с рабочими нагрузками разработки Azure и ASP.NET и веб-разработки .
Выполните следующую команду, чтобы включить развертывание Visual Studio в локальном кластере Service Fabric:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force -Scope CurrentUser
Создание кластера
После установки среды выполнения, пакетов SDK, средств Visual Studio, Docker и запуска Docker создайте локальный кластер разработки с пятью узлами.
Примечание.
Причина запуска Docker при создании кластера заключается в том, чтобы кластер был создан с включенными функциями контейнера. Если Docker не запущен, необходимо повторно создать кластер, чтобы включить функции контейнера.
Хотя в этом кратком руководстве не требуется, инструкция Docker выполняется при создании кластера в качестве рекомендации.
Проверьте, запущен ли Docker, открыв окно терминала и выполнив команду, чтобы узнать, возникает docker ps
ли ошибка. Если ответ не указывает на ошибку, Docker запущен и готов к созданию кластера.
Откройте новое окно PowerShell с повышенными привилегиями от имени администратора.
Выполните следующую команду PowerShell, чтобы создать кластер разработки:
. "C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup\DevClusterSetup.ps1"
Выполните следующую команду, чтобы запустить средство локального диспетчера кластеров:
. "C:\Program Files\Microsoft SDKs\Service Fabric\Tools\ServiceFabricLocalClusterManager\ServiceFabricLocalClusterManager.exe"
Примечание.
Пример приложения в этом кратком руководстве использует функции, недоступные в Windows 7.
Скачивание примера
В командном окне выполните следующую команду, чтобы клонировать пример репозитория приложений на локальный компьютер.
git clone https://github.com/Azure-Samples/service-fabric-dotnet-quickstart
Локальное запуск приложения
Щелкните правой кнопкой мыши значок Visual Studio в меню "Пуск" и выберите "Запуск от имени администратора". Чтобы подключить отладчик к службам, необходимо запустить Visual Studio от имени администратора.
Откройте решение Voting.sln Visual Studio из клонированного репозитория.
По умолчанию приложение voting прослушивает порт 8080. Порт приложения задается в файле /VotingWeb/PackageRoot/ServiceManifest.xml . Вы можете изменить порт приложения, обновив атрибут Port элемента Endpoint . Чтобы развернуть и запустить приложение локально, порт приложения должен быть открыт и доступен на компьютере. При изменении порта приложения замените новое значение порта приложения на "8080" в этой статье.
Чтобы развернуть приложение, нажмите клавишу F5.
Примечание.
В окне вывода Visual Studio появится сообщение "URL-адрес приложения не задан или не ЯВЛЯЕТСЯ URL-адресом HTTP/HTTPS, поэтому браузер не будет открыт для приложения". Это сообщение не указывает на ошибку, но браузер не запустится автоматически.
По завершении развертывания запустите браузер и откройте http://localhost:8080
, чтобы просмотреть веб-интерфейс приложения.
Теперь можно добавить набор вариантов голосования и начать принимать голоса. Приложение выполняет и сохраняет все данные в кластере Service Fabric без необходимости в отдельной базе данных.
Обзор примера приложения для голосования
Приложение для голосования состоит из двух служб:
- Веб-интерфейсная служба (VotingWeb) — служба веб-интерфейса ASP.NET Core, которая служит веб-страницей и предоставляет веб-API для взаимодействия с серверной службой.
- Серверная служба (VotingData) — веб-служба ASP.NET Core, которая предоставляет API для хранения результатов голосования в надежном словаре, сохраненном на диске.
При голосовании в приложении происходят следующие события:
JavaScript отправляет запрос на голосование в веб-API в веб-интерфейсной службе в виде HTTP-запроса PUT.
Веб-интерфейсная служба использует прокси-сервер для поиска и пересылки HTTP-запроса PUT в серверную службу.
Серверная служба принимает входящий запрос и сохраняет обновленный результат в надежном словаре, который реплицируется на несколько узлов в кластере и сохраняется на диске. Все данные приложения хранятся в кластере, поэтому база данных не требуется.
Отладка в Visual Studio
Приложение должно работать в порядке, но вы можете использовать отладчик, чтобы узнать, как работают ключевые части приложения. При отладке приложения в Visual Studio вы используете локальный кластер разработки Service Fabric. Вы можете настроить возможности отладки в своем сценарии. В этом приложении данные хранятся в серверной службе с помощью надежного словаря. Visual Studio удаляет приложение по умолчанию при остановке отладчика. Удаление приложения приводит к удалению данных в серверной службе. Чтобы сохранить данные между сеансами отладки, откройте свойства проекта голосования и измените режим отладки приложения на автоматическое обновление.
Чтобы узнать, что происходит в коде, выполните следующие действия.
Откройте файл /VotingWeb/Controllers/VotesController.cs и установите точку останова в методе Put веб-API (строка 69). Вы можете найти файл в обозревателе решений в Visual Studio.
Откройте файл /VotingData/Controllers/VoteDataController.cs и установите точку останова в методе Put этого веб-API (строка 54).
Вернитесь в браузер и выберите вариант голосования или добавьте новый вариант голосования. Вы попали в первую точку останова в контроллере API веб-интерфейса.
Этот шаг заключается в том, что JavaScript в браузере отправляет запрос контроллеру веб-API в интерфейсной службе.
Сначала постройте URL-адрес для обратного прокси нашей серверной службы (1).
Затем отправьте HTTP PUT-запрос в обратный прокси (2).
Наконец, верните ответ серверной службы клиенту (3).
Нажмите клавишу F5 , чтобы продолжить
При появлении запроса в браузере предоставьте группе ServiceFabricAllowedUsers разрешения на чтение и выполнение для режима отладки.
Теперь вы находитесь в точке останова в внутренней службе.
В первой строке метода (1)
StateManager
получает или добавляет надежный словарьcounts
.Для всех взаимодействий со значениями в надежном словаре требуется транзакция, и эта инструкция using (2) создает её.
В транзакции обновите значение соответствующего ключа для параметра голосования и зафиксируйте операцию (3). После возврата метода фиксации данные обновляются в словаре и реплицируются на другие узлы в кластере. Теперь данные безопасно хранятся в кластере, а служба внутренней службы может выполнить отработку отказа на другие узлы, а данные по-прежнему доступны.
Нажмите клавишу F5 , чтобы продолжить
Чтобы остановить сеанс отладки, нажмите клавиши SHIFT+F5.
Выполнение последовательного обновления приложения
При развертывании новых обновлений в приложении Service Fabric развертывает обновление безопасным способом. Пошаговые обновления позволяют избежать простоя во время обновления, а также предлагают автоматический откат в случае возникновения ошибок.
Чтобы обновить приложение, выполните следующие действия.
Откройте файл /VotingWeb/Views/Home/Index.cshtml в Visual Studio.
Измените заголовок на странице, добавив или обновив текст. Например, измените заголовок на "Пример голосования Service Fabric версии 2".
Сохраните файл.
Щелкните правой кнопкой мыши голосование в обозревателе решений и выберите "Опубликовать". Отобразится диалог Опубликовать.
Нажмите кнопку "Версия манифеста" , чтобы изменить версию службы и приложения.
Измените версию элемента Code в разделе VotingWebPkg на "2.0.0", например, и нажмите кнопку "Сохранить".
В диалоговом окне "Публикация приложения Service Fabric " установите флажок "Обновить приложение".
Измените профиль целевого объектана PublishProfiles\Local.5Node.xml и убедитесь, что для конечной точки подключениязадано значение "Локальный кластер".
Выберите "Обновить приложение".
Нажмите кнопку Опубликовать.
Пока обновление выполняется, вы по-прежнему можете использовать приложение. Так как у вас есть два экземпляра службы, работающей в кластере, некоторые из ваших запросов могут получить обновленную версию приложения, а другие могут по-прежнему получить старую версию.
Откройте браузер и перейдите по адресу кластера через порт 19080. Например,
http://localhost:19080/
.Щелкните узел "Приложения" в представлении дерева, а затем Текущие обновления в правой панели. Вы увидите, как обновление проходит через домены обновления в вашем кластере, убедившись, что каждый домен находится в работоспособном состоянии, прежде чем перейти к следующему. Домен обновления на панели выполнения отображается зеленым цветом при проверке работоспособности домена.
Service Fabric обеспечивает безопасность обновлений, ожидая двух минут после обновления службы на каждом узле в кластере. Ожидается, что все обновление займет около восьми минут.
Дальнейшие действия
В этом кратком руководстве вы узнали, как выполнить следующие действия:
- Создание приложения с помощью .NET и Service Fabric
- Использование ASP.NET ядра в качестве веб-интерфейса
- Хранение данных приложения в службе с отслеживанием состояния
- Отладка приложения локально
- Масштабирование приложения путем подключения дополнительных узлов
- Выполнение последовательного обновления приложения
Дополнительные сведения о Service Fabric и .NET см. в этом руководстве: