2016-02-28 6 views
1

В настоящее время я поддерживаю приложение, которое работает как служба Windows, считывает сообщения с сервера очереди сообщений, обрабатывает их и возвращает результат на сервер очереди сообщений. Но он также содержит компонент мониторинга работоспособности, доступный через веб-API. Он реализован как консольное приложение, которое использует Katana для самостоятельной установки подсистемы мониторинга работоспособности.Является ли ASP.NET Core на платформе .NET Core моделью консоли или хостинговой моделью IIS?

Теперь я пытаюсь выяснить, можем ли мы перенести это на .NET Core и ASP.NET Core после их RTM. Я знаю, что часть службы Windows не может быть перенесена, но я также могу запустить консольное приложение в качестве отдельного контейнера Docker, чтобы в основном добиться того же, с точки зрения основных функций. Но как будет работать мониторинг состояния здоровья? Из того, что я вижу, проект Katana был обновлен до ASP.NET 5 (который, я думаю, является ASP.NET Core 1 перед большим переименованием), но он не работает в .NET Core CLR. Катане потребуется полная CLR. Значит, Катана нет.

Означает ли это, что способ создания нашего приложения невозможно с помощью .NET Core? Или хостинг приложения через Kestrel не исключает возможности запуска кода до первого запроса? С IIS приложение не будет работать до первого запроса (если вы не используете автозапуск, но это скорее оптимизация скорости, чем приложение ведет себя как «allways-running-app»), и, как правило, приложение является запросом- и не постоянно работает. Фоновые потоки в размещенном IIS приложении - действительно плохая идея. Это то же самое с Kestrel? Или DNX запустит ваше приложение и продолжит его работу до тех пор, пока он не выключится, как консольное приложение, чтобы мы могли запускать все фоновые потоки, которые мы хотим?

+1

https://github.com/aspnet/Hosting/tree/dev/src/Microsoft.AspNetCore.Hosting.WindowsServices – davidfowl

+0

Это очень интересная ссылка. Благодаря! –

ответ

1

Это следует за консольной моделью приложения. Катана на самом деле больше духовный предшественник пустельги. Он вызывается для обычных проектов ASP.NET Core из метода Main с обычным вызовом метода. Существует множество руководств по настройке сервера в RC1 (см. Метод Startup.cs Main), а некоторые - для предстоящего RC2 (для него есть построитель). Это позволит вам делать как приложение, так и ваш веб-мониторинг на основе api в консольном приложении. Kestrel и DNX вовсе не сервер приложений, как IIS. Kestrel - это простая HTTP-серверная библиотека и ничего больше. Вы начинаете его, и он слушает с этого момента.

Тем не менее, вам необходимо настроить приложение на основе WebApi 2 и Katana на новые интерфейсы ASP.NET Core и концепцию промежуточного программного обеспечения. Но это должно быть легко по сравнению с адаптацией очередей сообщений.

+0

Недавно я видел видео из НДЦ, где Дэвид Фаулер и Дамиан Эдвардс беседуют с ASP.NET Core, и они упоминают, что он действительно просто использует основную функцию. И это должно быть более заметным на RC2. Поэтому я буду ждать, чтобы посмотреть, как это сделать. Но пустельга не является продолжением Катаны. Это даже не связано. Пустельга - это что-то новое. Katana по-прежнему поддерживается как проект, как я уже упоминал в моем вопросе, он просто не поддерживает .NET Core, а только полную инфраструктуру .Net. –

+0

Правильно ... Катана была духовным предшественником. Моя формулировка действительно точна. Из-за Катаны весь основной объект Asp.net был проектом K, а ранним инструментом было K KVM и т. Д. Хорошее видео BTW. Видел это и раньше. – Thomas

+0

Это ссылка [https://vimeo.com/153212604] на упомянутый выше разговор. – paulroho