Alternatywy do IIS - hosting dla API i aplikacji klienckiej

0

Witam.
W poprzednim wątku walczyłem z uruchomieniem API w IIS. Komplikacji ciąg dalszy. Moje API jest troszkę bardziej skomplikowane. W związku z tym, że nie można łączyć plików .dll z aplikacjami net core, potrzebuje osobnej aplikacji konsolowej, którą uruchamiam z poziomu API, z odpowiednimi parametrami. Niestety IIS ma z tym problem, nie wiem czy to ścieżka, czy zabezpieczenia, nie drąże, bo nie chce IISa.
Czy może mi ktoś zarzucić alternatywą do IIS, gdzie mogę hostować aplikację NET Core + Angular 7?
Czy można jakoś użyć komendy dotnet i hostować aplikację tym sposobem?

0

Możesz używać IIS jako reverse proxy, a hostować aplikację ASP.NET "wbudowanym" serwerem Kestrel. Masz wtedy możliwość użycia UseIISIntegration, żeby pewne rzeczy działy się automatycznie: https://docs.microsoft.com/pl[...]2.2#application-configuration (out of process integration).

0

@Ktos: To w dalszym ciągu jest IIS. Aplikacja tylko informuje, że korzysta z Kestrela, ale oprogramowanie, które hostuje to IIS. Ja wiem, że to Microsoft, jego technologia, jego oprogramowanie, ale dla porównania zobacz sobie ile programów/serwerów jest do PHP... Pewnie to kwestia popularności. Mam nadzieje, że skoro MS poprawia, robi nowe narzędzia programistyczne to zrobi też nowego IISa.

2

Ale Kestrel to self-hosting. Aplikacja działa i słucha na porcie jakimś, a IIS tylko przekazuje połączenia do back-endu. Ale nie musisz używać IIS w ogóle, możesz polegać całkowicie na Kestrelu. Robisz dotnet run i działa. Przez UseUrls (albo parametry uruchomienia) możesz sobie skonfigurować na jakim hoście i porcie on będzie słuchał.

ale dla porównania zobacz sobie ile programów/serwerów jest do PHP

nginx i Apache to dwa najpopularniejsze. Używa się czegoś jeszcze? I obydwa też mogą bez problemu pracować jako reverse-proxy dla aplikacji ASP.NET samohostującej się przez Kestrel. Wiem, bo używam nginxa właśnie do tego :-)

0

Nie jest tak, że nginx jest tylko na Linuxa? Ja potrzebuje alternatywy na Windows. Jeśli miałbym robić z pomocą dotnet run to jak to połączenie utrzymać? Wystarczy zrobić usługę w Windows, która w odpowiedniej ścieżce odpali tą komende za pomocą Process.Start? Zdecydowanie najszybsze rozwiązanie, choć domyślam się, że niestabilne.

1

Nie jestem pewien czy rozumiem Twój problem.

.Net Core może być hostowane przez windows service. https://docs.microsoft.com/pl[...]s-service?view=aspnetcore-2.2

Nginx jest też dla Windows.

Jeśli, jak piszesz, nie chcesz się cofać i koniecznie ma to być Core to przepisz swoje dll na Core. Jak postęp to postęp.
Jeśli dll wymagają .net Framework to może jakiś zwykły (nie Core) mikro service hostowany też przez Windows Service ale to nieco perwersyjne.

0

Jeśli miałbym robić z pomocą dotnet run to jak to połączenie utrzymać?

Jak utrzymać? Dopóki aplikacja uruchomiona przez dotnet run działa, dopóty przyjmuje nowe połączenia. Jak ją zakończysz, skończy.

Zdecydowanie najszybsze rozwiązanie, choć domyślam się, że niestabilne.

Nie było zalecane do rozwiązań produkcyjnych (po to się stosuje właśnie cały ten reverse proxy), ale jeżeli nie masz tam dziesiątek klientów naraz to nie będzie tutaj problemu.

0

@jacek.placek: Nie mogę tego przepisać na net core. Nie mam dostępu do kodu, to są cudze pliki .dll. Poczytam i spróbuje ten hosting w Windows Service.

@Ktos Z tym utrzymaniem to mi chodzi o to, że jak odpalam sobie komendę z konsoli to to okno jest widoczne. Potrzebuje czegoś, czego użytkownik nie będzie w stanie ruszyć/widzieć. Najlepiej usługa, ponieważ drugim problemem jest kontynuowanie hostowania jeśli maszyna się uruchomi ponownie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0