2010-02-16 14 views
5

Współpracownik i ja rozmawiamy o usługach WFC, gdy pojawia się temat "kosztu".Jak drogie są? - Hostowane usługi WCF?

Kwestia jest taka:

Zważywszy, że usługa WCF IIS gospodarzem i Windows-Service-hosted usług WCF zrobić dokładnie to samo, co usługa będzie bardziej "drogi" w odniesieniu do pamięci i procesora cykle, jeśli obaj akceptują ten sam ładunek?

Nie jesteśmy zaniepokojeni początkowym kodowaniem, instalacją lub konfiguracją (do której IIS wydaje się mieć na celu zapewnienie prostszych wrażeń), po prostu koszty związane z uruchomieniem usług.

Odpowiedz

3

Nie mogę podać konkretnych liczb, ale jeśli jest to poważny problem, zdecydowanie powinieneś wykonać testy wydajności. W przypadku typowej usługi WCF opartej na protokole HTTP wszystkie żądania będą początkowo obsługiwane przez plik http.sys w systemie Windows, a następnie wysyłane do odpowiedniego procesu. To, czy twoja usługa jest hostowana w IIS czy autonomicznym, nie będzie miało znaczenia prawie tak samo jak ustawienia konfiguracji specyficzne dla WCF, z których korzystasz, w odniesieniu do konfiguracji dla połączenia, sesji i pojedynczej konfiguracji oraz limitów żądań i żądania ograniczania przepustowości.

Skoncentruję się na użyteczności i to, co ma większy sens, niż na liczbach wydajności, ponieważ powinny być prawie takie same.

Dolna linia: użyj tego, co jest wygodniejsze, sprawdź działanie, jeśli to konieczne.

+0

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. –

2

Jednym z bardzo istotnych względów wydajności między usługami hostingowymi opartymi na usługach IIS lub Windows dla WCF jest typ wiążący. Usługi IIS obsługują tylko powiązania WCF, które działają za pośrednictwem protokołu HTTP, na przykład wsHttpBinding. basicHttpBinding itp

innych niż HTTP Wiązania są ogólnie wiadomo, że mają lepsze osiągi, takie jak netTcpBinding (wymaga zarówno usługi i klienta WCF być oparte wierzę) lub netNamedPipeBinding (najszybsza, ale obsługa/klient musi być na ta sama maszyna). Mają one oczywiście swoje własne ograniczenia, zwłaszcza z elastycznością.

Oto dobry przegląd: http://weblogs.asp.net/spano/archive/2007/10/02/choosing-the-right-wcf-binding.aspx

Nastąpił bardzo podobna dyskusja tutaj: WCF Binding Performance

2

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ę.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.

Powiązane problemy