Trzeba po prostu patrzeć na trzech opcji:
1) hostingu w IIS6 (Windows Server 2003/2003 R2): w tym scenariuszu można tylko obsługiwać protokoły HTTP - nic innego. To jest samo w sobie ograniczenie, nie można użyć np. netTcp dla scenariuszy intranetowych.
2) Hosting w IIS7/WAS (Vista, Server 2008): daje to więcej opcji w zakresie obsługiwanych protokołów, a środowisko hostingowe na początku wygląda jak zwycięzca.
3) Samoaprowadzanie: w tym scenariuszu od Ciebie zależy, co należy zrobić, aby hostować i uruchamiać usługi.
Jeśli na razie wyrzucisz opcję # 1 (jeśli masz dostęp tylko do IIS6, zawsze korzystam z samoobsługi), to zależy od IIS7 kontra samo-hostingu.
IIS7 zapewnia "aktywację na żądanie", np. Twój kod serwisowy nie jest w pamięci przez cały czas, ale zostanie załadowany i utworzony w momencie zgłoszenia żądania. To może być plus.
Z drugiej strony hosting w usługach IIS7/WAS pozbawia użytkownika możliwości określania własnych punktów końcowych - punkt końcowy, a tym samym adres usługi, to katalog wirtualny, w którym znajduje się plik "MyService.svc" - okres. Nie możesz tego zmienić w żaden sposób, kształcie ani formie.
Samo-hosting może wyglądać na dużo pracy - ale daje najlepszą elastyczność: możesz wybrać protokoły, jak chcesz, możesz ustawić własny schemat adresowania, tak jak lubisz, i masz całkowita kontrola nad tym, co zostanie zrobione, kiedy. Możesz wprowadzić własny niestandardowy ServiceHost, jeśli potrzebujesz dodatkowej pracy dla usług hosta i tak dalej.
Chyba że po prostu bawisz się z WCF, zawsze polecałbym i głosowałbym na samo-hostowanie - jeśli potrzebujesz usługi WCF przez cały czas, wewnątrz usługi Windows NT (to najlepsze rozwiązanie w środowiskach produkcyjnych), a jeśli tworzysz/debugujesz, możesz całkowicie obsługiwać swoje usługi WCF w aplikacji konsolowej, którą możesz uruchomić i zatrzymać w wolnym czasie.
Krótko mówiąc: jeśli naprawdę chcesz kontrolować to, co się dzieje, zawsze polecam samodzielny hosting.
Ten może zostać zmieniony po dodaniu nowego "Dublina" Add-on-serwer Microsoftu - jakiś czas po uruchomieniu .NET 4, prawdopodobnie na początku 2010 roku - ale jest jeszcze za wcześnie, by o tym mówić.
Mam nadzieję, że to pomoże.
Marc
Naprawdę znasz swoje WCF. – Contango
@Gravitas: dzięki! Nauczyłem się od Mistrza WCF :-) (Juval Lowy) –
Witam, prawie 5 lat później, czy mógłbyś zaktualizować swoją odpowiedź za pomocą najnowszej wersji WCF i IIS? Czy sądzisz, że funkcje Windows Services Recycling są równie wydajne, co usługi IIS? Dzięki! – Nock