IIS i obsługa Web Api etc. jak to działa w praktyce

0

Cześć,
powiedzmy, że stworzyłem jakieś web api w C# i chciałbym je teraz upublicznić (nadać dostęp do danych z zewnątrz). W tym celu potrzebuję np. IIS-a w którym wskazuję moją aplikację, która ma zwracać odpowiednie wyniki klientowi. Jest to API, więc będzie zwracać konkretne dane (JSON / gRPC) a nie całe pliki typu strona www - czy w takim razie to będzie działać w ramach FTP czy jakoś inaczej?.
Drugie pytanie jest takie: jak to działa w praktyce? Tzn. czy za każdym razem, gdy przychodzi mi request z zewnątrz to IIS pobiera z dysku moją aplikację a następnie "odpala"/uruchamia ją, a następnie przekazuje jej żądanie i ostatecznie zwraca wynik?
Czy może moja aplikacja jest cały czas uruchomiona w tle i jakoś komunikuje się z IIS?
Czy może IIS trzyma sobie moją aplikację jakoś w pamięci i w momencie requesta uruchamia ją, ale robi to znacznie szybciej niż w pierwszym przypadku (gdy pobiera ją z dysku)?
Dlaczego w ogóle ASP.NET nie może działać bez IIS-a lub innego narzędzia tego typu? Czy jest szansa, że w najbliższej przyszłości to się zmieni i wystarczy tylko uruchomić na serwerze stworzoną aplikację?
Z góry dziękuję za wyjaśnienie moich wątpliwości.

0
  1. Spore braki w podstawach jak działa hosting www i tutaj .NET nie ma nic do tego.
  2. Na necie jest pierdyliard tutoriali jak hostować ASP .NET na IIS, a już sama dokumentacja Microsoftu wyczerpuje na 10000% temat.
  3. Co do twojego "dostęp z zewnątrz" - dobrze jest mieć domene, która wskazuje na publiczny adres IP na któym stoi IIS, zrobić przekierowanie na routerze do tej maszyny, na której stoi IIS po porcie 80 (http) i 443 (https), ale to też mam wrażenie, że twoje braki wiedzy jak to wszystko faktycznie działa.
  4. Jeśli chodzi o hosting to IIS jest dla Windows. Jeśli chodzi o alternatywy to chyba wtedy zadziała tylko na Linuxach i są to - docker, nginx oraz apache
0

@AdamWox dziękuję za Twoją wypowiedź. Szkoda tylko, że nie odpowiedziałeś na żadne z zadanych przeze mnie pytań...
Ad 1) Tak, masz rację, że mam spore braki, ale w przeciwieństwie do Ciebie ja nie zajmuję się zawodowo programowaniem - robię to tylko hobbystycznie, w wolnym czasie.
Ad 2) Na pewno jest sporo tutoriali jak skonfigurować IIS-a, natomiast nie widziałem, aby ktoś to wyjaśniał "od środka". A mi chodzi właśnie o wyjaśnienie jak to działa od środka.
Ad 3) Tak, wiem, że domena się przydaje oraz wiem, że trzeba przekierować porty, ale o to nie pytałem.
Ad 4) Tak, wiem, że poza IIS-em są również alternatywy, ale to nie było przedmiotem tego wątku.

0

No ale nikt "hobbystycznie, w wolnym czasie" nie będzie pisał tutaj połowy internetu i za ciebie szukał w internecie jak działa IIS. Forum jest od rozwiązywania problemów programistycznych, a nie od opisywania ciekawostek technologicznych.

Napisałem takie punkty, bo tak zrozumiałem twój "problem". Jest jeszcze opcja, aby uruchomić ASP NET jako Usługa Windows, wtedy nie trzeba IISa

3

Dlaczego w ogóle ASP.NET nie może działać bez IIS-a lub innego narzędzia tego typu? Czy jest szansa, że w najbliższej przyszłości to się zmieni i wystarczy tylko uruchomić na serwerze stworzoną aplikację?

ASP.NET Core od początku swojego istnienia nie wymaga IIS, a potrafi działać "samodzielnie", i nawet standardowo jest w pełni samodzielnym serwerem HTTP – aczkolwiek często używa się IIS, nginx czy innego Apache jako reverse-proxy i np. dla obsługi połączeń TLS.

Jest to API, więc będzie zwracać konkretne dane (JSON / gRPC) a nie całe pliki typu strona www - czy w takim razie to będzie działać w ramach FTP czy jakoś inaczej?

WebAPI i gRPC działają po HTTP. Zasadniczo dla HTTP nie ma znaczenia czy to plik HTML, czy generowane dane HTML, czy też JSON. FTP nie ma z tym nic wspólnego.

1

@Ktos bardzo dziękuję za te informacje! Byłem przekonany, że IIS lub coś analogicznego jest potrzebne a tu taka miła niespodzianka :).
Czyli innymi słowy: piszę API -> kompiluję -> uruchamiam -> przekierowuję porty i już powinno działać? :-)

1

Tak. Co najwyżej musisz jeszcze sobie wysterować, na jakim porcie i adresie ma nasłuchiwać – przez konfigurację lub parametry uruchomieniowe.

https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-8.0

0

@Ktos dziękuję za wyjaśnienie :-) Już wszystko jasne!

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