@Fsharp_chat

Страница 701 из 772
Bonart
08.09.2018
12:44:21
TopShelf?
Оно вроде не дружит с .NET Core

Grigoriy
08.09.2018
12:45:50
TopShelf?
Почитал док, но, как тут уже заметили, про коре ничего не нашёл

Bonart
08.09.2018
12:46:58
Почитал док, но, как тут уже заметили, про коре ничего не нашёл
У меня кто-то из коллег пытался летом и обломался

Google
Grigoriy
08.09.2018
12:47:00
С асп.нет коре всё норм - сервис регистрируется, странички открываются. Скелет готов - надо мясо наращивать

Evgeniy
08.09.2018
12:50:09
Оно вроде не дружит с .NET Core
Кажется, какая-то девелоп ветка дружила. Буду около компьютера -- посмотрю. @fvnever

Friedrich
08.09.2018
12:50:41
Оно вроде не дружит с .NET Core
Есть бетка, которая дружит.

Сервисный режим в ASP.NET Core 2.1 мне не показался достаточным.

Grigoriy
08.09.2018
12:54:17
Да, пока мне непонятно, как стоп и рестарт хэндлить. А топшелф - из девелоп ветки собрать?

Friedrich
08.09.2018
12:54:38
Из нугета бери последний бета-пакет.

https://github.com/ForNeVeR/nightwatch/blob/b059b1094f0bcc13d31916de049a493924402c23/Nightwatch/Nightwatch.fsproj#L23

Grigoriy
08.09.2018
12:54:58
Ок

Friedrich
08.09.2018
12:55:08
Вон та версия точно работает, я тестирую её.

Topshelf.FSharp тоже с ней работает, если чо. Разве что нугет жалуется, что не отмечена совместимость с нетстандартом.

Grigoriy
08.09.2018
12:56:27
Раз уж пошла такая пьянка - я ж всё равно внутри могу асп.нет поднять?

Friedrich
08.09.2018
12:56:41
Внутри чего? Что ты делаешь?

О, спасибо за наводку :) я так понял, что единственный способ сделать вин сервис на .нет коре - это завернуть его в асп.нет.
Не, это неверно. Кроме Topshelf, есть встренные опции, которые (кажется?) не зависят от аспнета.

Google
Friedrich
08.09.2018
12:57:53
Как там этот их новый индепендент-хост называется, я опять забыл.

Вот к нему прикручивается сервисный режим. Во всяком случае, я где-то об этом читал; сам не пробовал пока.

Grigoriy
08.09.2018
12:59:09
Friedrich
08.09.2018
12:59:26
Внутри сервиса
Да, ты можешь разворачивать аспнет внутри сервиса :)

Grigoriy
08.09.2018
13:00:33
Делаю шедулер для всякого с веб-интерфейсом

Grigoriy
08.09.2018
13:01:31
Его ещё нет :) я же говорю - делаю :) а не - сделал

Evgeniy
08.09.2018
13:01:48
Его и показывай.

Grigoriy
08.09.2018
13:02:43
Он в встс. Рабочий акк

Evgeniy
08.09.2018
13:02:49
Ок.

Friedrich
08.09.2018
13:04:21
Давай вместе поищем!

Grigoriy
08.09.2018
13:04:39
Ок.
Пока что оно тайтли каплд с бизнесс-процессами :(

Friedrich
08.09.2018
13:05:42
Итак, эта штука называется GenericHost.

Friedrich
08.09.2018
13:06:27
Ща посмотрю мсдн
https://www.stevejgordon.co.uk/running-net-core-generic-host-applications-as-a-windows-service я тебе нашёл статью!

Посаны грят всё должно работать.

@gsomix, может, ну его нахер, этот топшелф? Перепишем на генерик хост?

Google
Friedrich
08.09.2018
13:07:41
Мне не нравится, что топшелф ограничил нас в передаче аргументов.

Friedrich
08.09.2018
13:08:43
Какое у нас там вообще щас состояние добра? У нас были какие-то незакрытые проблемы с топшелфом?

https://github.com/ForNeVeR/nightwatch/issues/24 похоже, только это.

Лан, неохота пока переписывать, если не видно конкретных проблем.

Я уже забыл, что все проблемы решил и уже смержил :)

Grigoriy
08.09.2018
13:10:07
Нулевая т.е.

Evgeniy
08.09.2018
13:13:29
> Внезапно, F# на хабре. А качество кода в листинге вас не пугает?
Меня смущает, что они форматирование испортили, это важно.

Grigoriy
08.09.2018
13:15:33
https://www.stevejgordon.co.uk/running-net-core-generic-host-applications-as-a-windows-service я тебе нашёл статью!
Начало - вроде как у меня, но я остановился после того, как асп.нет коре встало как сервис.

Grigoriy
08.09.2018
13:16:37
Мне показалось, что для моей задачи достаточно

Но буду копать дальше

Friedrich
08.09.2018
13:24:53
А, хорошо. Я просто решил, что дальше тебе нужна помощь.

Roman
08.09.2018
14:06:10
Привет, Лика!

Vlad
08.09.2018
14:32:27
Почитал док, но, как тут уже заметили, про коре ничего не нашёл
Именно netcoreapp2.1? У меня просто на новом сдк и асп нет коре но с таргетом net47 уже с год сервис висит на топшелфе ( на аспнеткоре, в плане)

Grigoriy
08.09.2018
14:45:57
Да - кореапп.

Google
Grigoriy
08.09.2018
14:47:34
Честно говоря, я не понял требования и почему не на «большом» фреймворке

но, вот, как-то так

Evgeniy
08.09.2018
16:23:25
Тут Adam Granicz не так давно в Казахстане на митапе выступал. https://www.meetup.com/ru-RU/GDG-Almaty/events/253902832/

Есть кто-нибудь из Алматы, кто ходил? :)

Презентация. https://www.slideshare.net/granicz/gdg-almaty-meetup-reactive-fullstack-net-web-applications-with-websharper

Grigoriy
09.09.2018
04:17:48
А, хорошо. Я просто решил, что дальше тебе нужна помощь.
Гудморнинг. Что-то запутался я с той статьёй. Все дело в том, что веб-часть мне тоже нужна поэтому ничего страшного, что сервис будет с асп.нет коре. Но я нашел, как впендюриться в старт/стоп



Friedrich
09.09.2018
04:20:25
Тебе нужно сделать наследника от WebHostService, а в конструктор родителю передавать IWebHost.

Не совсем F#-friendly решение, допустим, но хоть такое!

Grigoriy
09.09.2018
04:24:56
UseStartup<> тоже работает

Я скриншотик запостил

Не совсем F#-friendly решение, допустим, но хоть такое!
Да, с кастом хостом понятно. Тогда наверное и UseStartup не нужен, хотя и он в примере присутствует

Friedrich
09.09.2018
04:30:20
UseStartup<> тоже работает
Это удивительно, кстати.

Как вообще до этого можно было догадаться? Что оно рефлекшеном позовёт твои приватные методы?

Grigoriy
09.09.2018
04:31:23
Оно рефлекшоном позовёт Configure

Friedrich
09.09.2018
04:32:40
А, всё. Я невнимательно смотрел твой код :)

Grigoriy
09.09.2018
04:33:25
Это написано в документации, но там простыня на 10 экранов :( и это написано в сааааамом конце

Ща найду ссыль :)

Google
Grigoriy
09.09.2018
04:34:37
Причём пару раз оно у меня не стартовало и я долго тупил :) пока не посмотрел в ЭвентЛог

Friedrich
09.09.2018
04:34:58
Давай интереса ради посмотрим в сорцы. Кажется, оно делает что-то подобное твоему коду: https://github.com/aspnet/Hosting/blob/master/src/Microsoft.AspNetCore.Hosting.WindowsServices/WebHostService.cs

Grigoriy
09.09.2018
04:35:42
Оказалось, что надо () поставить - иначе конструктора нет :)

Friedrich
09.09.2018
04:36:09
Только оно ещё вайрится к Windows Service System, видишь?

В твоём варианте ты обрабатываешь только события процесса. Твой «сервис» умирает, когда система терминирует процесс.

А здесь сделано наоборот — хендлится событие от ServiceBase, и это вызывает graceful stop вебхоста.

...который потом ещё раз пытается остановить сервис, и для этого подставлен костылец

Я не уверен, что у твоего кода и приведённого тут есть какая-то существенная видимая разница, но подход с WebHostService мне видится более правильным.

Grigoriy
09.09.2018
04:38:32
Ок :)

Friedrich
09.09.2018
04:40:39
С другой стороны, ServiceBase.Run же ведь отвалится, если его стартовать в несервисном режиме?

А у тебя всё будет работать.

Grigoriy
09.09.2018
04:41:47
Я же могу сделать так же, как и в статье ожидают старта, но вставить такой же код в OnStop, чтобы завершить всё, что нужно до полного стопа?

С другой стороны, ServiceBase.Run же ведь отвалится, если его стартовать в несервисном режиме?
Надо проверить - мне несервисный режим тоже нужен - а то замучаешься стоп/старт при разработке и отладке делать

Страница 701 из 772