5

Obecnie staram się znaleźć sposób, aby zbudować aplikację na pulpicie, które odbywają się okno przeglądarki i wykorzystuje JavaScript do komunikowania się z lokalną podstawowej ASP.NET Web API jako „backend”:Czy jest możliwe korzystanie z interfejsu API ASP.NET Core Web bez usług IIS w aplikacji pulpitu Windows?

enter image description here

Wszystkie moje wyszukiwania prowadzą do sugestii, że powinienem używać serwera internetowego IIS Express.

Niestety, IIS Express ma nie pasuje do mojego scenariusza, ponieważ chcę, aby cała aplikacja mogła być instalowana i uruchamiana przez użytkowników bez uprawnień administratora.

Ponieważ usługa IIS Express wymaga uprawnień administracyjnych do zainstalowania, jest to poza zasięgiem.

Moje pytanie:

Czy istnieje inny sposób przy użyciu IIS Express do uruchomienia projektu ASP.NET Web API rdzenia?

Przeczytałem o Kestrel server, który wydaje się być być tym, czego szukam, ale nadal nie dostaję tutaj dużego obrazu.

Edit 1:

Poprosiłem nieco releated question over at SE Software Recommendations.

+1

Kestrel będzie dobrze działać tutaj, czy próbowałeś? – DavidG

+0

Dzięki, @ DavidG - Wciąż próbuję zrozumieć, czym jest Kestrel _really_. Czy mam rację, że jest on dostarczany jako część .NET Core? Mogę więc po prostu wysłać moją aplikację z tymi MB plików .NET Core i włączyć Kestrel? Obawiam się również, że jest to rodzaj serwera "proof-of-concept", który nie jest wystarczająco szybki/wystarczająco dojrzały, aby mógł być realizowany w prawdziwym świecie? –

+1

Tak, to prawie to, co to jest. Jest to także platforma międzyplatformowa, więc Twoja aplikacja będzie działać prawie wszędzie. – DavidG

Odpowiedz

2

Jestem pewna, że ​​Kestrel będzie działać dobrze w tej sytuacji. Jest to wieloplatformowy serwer sieciowy oparty na libuv, co oznacza, że ​​jest super szybki. Model official benchmarks pokazuje, ile przewyższa standardowe standardy IIS.

+0

Zrobiłem kilka prostych porównań między interfejsem API usług IIS Express i interfejsem API Kestrel. Nazwałem oba z Apache Bench ('ab.exe'). Wyniki: IIS Express: ** 4013,10 [Prośby/s] (średnie) **, Pustułka: ** 435,13 [wnioski/s] (średnie) **. Więc nie _ to duża różnica. –

+1

Najprawdopodobniej istnieje tu inne wąskie gardło. Kestrel znacząco przewyższa IIS i IIS Express. być może trafiasz na lokalny dysk komputera, CPU lub limit sieciowy. Benchmarking w ten sposób jest niesamowicie zniuansowany i trudny. – DavidG

+1

Tylko dla zapisów: Możliwe jest również użycie serwera Kestrel w "normalnym" projekcie .NET Framework, np. .NET 4.6.1. Po prostu dodaj pakiet 'Microsoft.AspNetCore.Server.Kestrel'NuGet jako odniesienie. –

0

Aby dodać do odpowiedzi DavidG.

Kestral jest poprawnym rozwiązaniem IFF, które chcesz uruchomić ASP.Net bez IIS.

Wymaga to jednak otwarcia portu TCP. Oznacza to, że jeśli spróbujesz powiązać Kestral z portem 80, AND użytkownik ma zainstalowane usługi IIS. Kestral nie uda się uruchomić.

Możesz obejść ten problem, używając Katana do wiązania witryny z podkatalogiem w ramach IIS. Niestety często będzie to wymagało uprawnień administratora.

Ogólnie można zasadniczo użyć dowolnego serwera OWIN, który chcesz.

Można nawet wprowadzić kod, aby wybrać serwer OWIN, którego używasz, w zależności od okoliczności.

+0

Jakie są inne serwery OWIN, do których się odwołujesz? –

+0

@UweKeim Jest ich wiele. Dobra lista jest w http://owin.org/ – Aron

+2

Kestrel jest również odpowiedzią, jeśli chcesz uruchomić * z * IIS. Musisz ustawić IIS jako odwrotnego proxy. – DavidG