wiem, że to nie jest odpowiedź na pytanie całkowicie, ale chciałbym podzielić się moim doświadczeniem.
Mam aplikację konsoli systemu Windows, która po zaplanowaniu wywołuje usługi WCF hostowane w usługach IIS. W tej architekturze usługi IIS są całkowicie niepotrzebne i stanowią jedynie dodatkowy komponent ogólnego rozwiązania. To było naprawdę zawarte w rozwiązaniu z powodów marketingowych, aby wzmocnić produkt, a nie ze względów technicznych.
Oto główne problemy, przed którymi stoję i dlaczego uniknęłabym używania IIS, jeśli mógłbym z przyczyn technicznych, i dotyczy to mojego doświadczenia. Uwaga: Nie mówię, że hosting usług WCF w IIS to zły pomysł. Po prostu przekazuję swoje myśli z produktu, nad którym obecnie pracuję.
- Posiadanie IIS w pętli oznacza posiadanie innego systemu w ogólnym rozwiązaniu. To z kolei zwiększa złożoność wdrożenia. Niektórzy klienci mają inne wersje IIS6 7. Podczas gdy te różnice mogą wydawać się niewielkie na powierzchni. Nie popełnij błędu, wciąż są różne, co oznacza, że dodajesz większy potencjał różnic w środowisku, jeśli wdrażasz produkt na różnych klientach.NIE ignoruj tych różnic. Mam nawet klientów próbujących uruchomić moje usługi WCF wewnątrz kolekcji witryn SharePoint (duh!), Chodzi o DUŻO więcej niż myślisz może pójść źle.
- Usługi IIS uwzględniają również AppPool, który może wymagać skonfigurowania w zależności od złożoności produktu. Że AppPool potrzebuje tożsamości do działania, dodając więcej kompleksowości do twojego ogólnego rozwiązania.
- Mam kilka problemów, w których usługa z pojedynczym wątkiem czasami ma "interesujące" - wątek przerwać wiadomości. Podczas gdy wciąż próbuję znaleźć dokładną przyczynę, w głębi duszy mam szczerą nadzieję, że nie jest to w jakiś sposób powiązane z IIS. Chodzi o to, że nie wziąłbym tego pod uwagę, gdybym wyeliminował IIS z ogólnego rozwiązania.
- Słyszałem dyskusje, że usługi IIS są bardziej odpornym środowiskiem hostingowym dla usług WCF w porównaniu z usługami hostowanymi samodzielnie. Nie jestem do końca pewien, czy ma to jakąkolwiek wagę. Jeśli wiesz, co robisz, nie powinno być żadnego powodu, aby twoja usługa hostowana była niewiarygodna. Ale myślę, że jest więcej pracy z góry do wdrożenia niektórych funkcji automatycznych, które można uzyskać w IIS, na przykład recyklingu WP.
- Nie jestem ogólnie niezadowolony z usług IIS w pętli, ale jest to trudne, gdy przekazuję produkt do wdrożenia, a konsultanci bez silnego zaplecza technicznego muszą skonfigurować aplikację IIS. Zwykle coś może się nie udać i wymaga kogoś, kto ma więcej doświadczenia technicznego, aby wejść i rozwiązać. Jeśli zarządzasz samoukiem, możesz znacznie łatwiej spakować aplikację do wdrożenia.
- Przepraszam, że muszę powtórzyć, ale jeśli wybierzesz IIS, będziesz mieć 2 aplikacje w swoim rozwiązaniu, a nie 1, nawet jeśli strona biznesowa Twojej organizacji będzie postrzegana tylko jako jedna jednostka biznesowa, zasadniczo nie rozumiejąc pełnej złożoności rozwiązania, które wdrażasz. Na przykład: Dlaczego mamy 2 pliki konfiguracyjne? Dlaczego musimy dwukrotnie konfigurować pocztę? Dlaczego musimy wdrażać biblioteki DLL w 2 lokalizacjach. Te pytania są często zadawane.
- W końcu pomyślałem, że wspomnę, jeśli pracujesz zdalnie lub przez VPN, aby wdrożyć u klientów, sytuacja staje się jeszcze gorsza, czasami konsultant ma dostęp do wrażliwych obszarów, których nie masz. Jako programista staraj się wyeliminować jak najwięcej dodatkowego bagażu z ogólnego rozwiązania. Powiedzmy też, że administrator sys może czasami wygodnie resetować IIS, jeśli twoja aplikacja jest hostowana razem z innymi, zresetuje twoje usługi.
Mniej systemów na moim doświadczeniu = mniej może się nie udać. Ale musisz zdecydować, czy masz umiejętności, aby wdrożyć niezawodne usługi samoobsługowe. Wszystko to z kolei bezpośrednio wiąże się z kosztami opracowania, wdrożenia i utrzymania.
OK .. Zgadzam się, że wszelkie prawdziwe wąskie gardło będzie pochodzić z rodzaju używanego wiązania, określone ustawienia w konfiguracji. Po pewnym czasie używania WCF w obu stylach serwisowych, doszedłem do wniosku, że wydajność wynika z czynników innych niż zawartość usługi i wiele więcej do zrobienia ze stylem konfiguracji. Dzięki Brad. –