У меня есть существующее базовое веб-приложение ASP.NET, работающее как докер-контейнер, и я хотел бы предоставить его в качестве пограничного модуля, работающего в Azure IoT Edge.
Из документов, которые я знаю, я могу запускать функции Azure, Stream Analytics и пользовательские модули (которые, насколько я понимаю, являются просто консольными приложениями, интегрированными с Azure IoT Edge Runtime).
Как лучше всего превратить мое ASP.NET Core Web App в пограничный модуль и взаимодействовать с Edge Hub?
Будет ли наилучшим подходом использовать пользовательский модуль в качестве шаблона, переместить мой проект ASP.NET Core в соответствии с файловой структурой и отредактировать файлы docker для запуска моей основной сборки ASP.NET Core?
Спасибо за любые советы!
Обновление:
Я следовал подходу, изложенному выше. Я создал пользовательский пограничный модуль и попытался преобразовать его в самое простое из возможных ASP.NET Core Web App, выполнив следующие действия:
- Добавить ссылку на пакет
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" />
Добавить класс запуска
публичный класс Startup
{
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.Run(async r => await r.Response.Body.WriteAsync(Encoding.UTF8.GetBytes("seas")));
loggerFactory.AddConsole();
}
}
Добавить этот метод в Program.cs:
публичная статическая IWebHostBuilder CreateWebHostBuilder (string [] args) =>
WebHost.CreateDefaultBuilder (арг)
.UseStartup ();
Заменить содержимое Main на CreateWebHostBuilder(args).Build().Run();
Я могу запустить контейнер как часть Azure IoT Edge, но контейнер постоянно перезапускается, поэтому я предполагаю, что мой подход был не совсем правильным. К сожалению, я также не могу получить доступ к консоли контейнера, потому что он перезапускается каждые несколько секунд ...
вывод команды sudo docker ps
...
4b23cdad5bc5 localhost:5000/simpleweb:0.0.1-amd64
"dotnet SimpleWeb.dll" 5 minutes ago Restarting (150) 58 seconds ago
...
PS: я использую контейнер iot edge dev для тестирования после этого быстрого запуска:
https://github.com/Azure/iotedgedev/wiki/quickstart-with-iot-edge-dev-container