Jak utworzyć aplikację WCF bez użycia narzędzia svcutil.exe?Tworzenie aplikacji WCF bez svcutil.exe?
Odpowiedz
Jaką wersję Visual Studio używasz?
VS2008 zawiera funkcjonalność narzędzia svcutil. Aby wygenerować proxy, kliknij Eksplorator rozwiązań i wybierz "Dodaj referencje serwisowe", możesz wpisać adres URL serwera, nadać nazwę przestrzeni nazwiskom i zacząć.
Być może zechcesz rozwinąć swoje pytanie, aby podać więcej szczegółów na temat tego, co chcesz osiągnąć.
Narzędzie svcutil.exe (i równoważne funkcje w VS2008) są zwykle używane w ten sposób: -
wskazywać go w opisie usługi (dokument WSDL) i generuje kod po stronie klienta i config pomóc klientowi, który może komunikować się z usługami opisanymi w WSDL. Narzędzia mogą również wykonywać inne czynności, ale do tego są najczęściej używane. Zakładam, że to właśnie jest użycie svcutil.exe, do którego się odwołujesz.
Więc jeśli masz istniejącą usługę, być może napisaną przy użyciu innego stosu (nie WCF), użycie svcutil uprości twoje życie, inaczej byłoby inaczej. Pamiętaj jednak, że wygenerowany kod i konfiguracja mogły zostać napisane przez ciebie. Zwykle konfiguracja wygląda na pełną, ponieważ narzędzie umieszcza tam wszystkie ustawienia domyślne. Jeśli sam napisałeś konfigurację, prawdopodobnie możesz pominąć większość z nich.
Jeśli sam piszesz klienta i usługi, używając WCF, prawie nie ma powodu, dla którego użyłbyś svcutil.exe. Po zdefiniowaniu [ServiceContract] możesz użyć tej samej definicji zarówno w kliencie, jak i usłudze. Podczas tworzenia pliku konfiguracyjnego usługi jest to proste zadanie, aby na jego podstawie utworzyć plik konfiguracyjny klienta - większość zawartości jest taka sama.
Podsumowując, nie ma podstaw, aby zrozumieć, co właściwie oznacza cały kod/konfiguracja wygenerowana przez svcutil.exe. Wtedy będziesz w stanie pracować bez niego.
Jednym ze sposobów na zbudowanie klienta WCF bez użycia svcutil.exe jest użycie ChannelFactory. To, co musisz zrobić, to zbudować interfejs usługi WCF w oddzielnym zestawie od implementacji usługi. Następnie można odwołać się do tego zestawu interfejsu zarówno od klienta, jak i od usługi.
Gdy masz odniesienia, można użyć następującego kodu, aby utworzyć klienta WCF:
var factory = new ChannelFactory<IMyWcfService>();
var wcfClient = factory.CreateChannel();
bool closedSuccessfully = false;
try
{
// Now you can make calls on the wcfClient object
((ICommunicationObject)wcfClient).Close();
closedSuccessfully = true;
}
finally
{
if (!closedSuccessfully)
{
((ICommunicationObject)wcfClient).Abort();
}
}
Uwaga rutynowego czyszczenia. Nie można użyć instrukcji using w celu wyczyszczenia zmiennej wcfClient. Jeśli to zrobisz, a obiekt jest w stanie błędu, otrzymasz wyjątek wygenerowany, gdy blok using() wykracza poza zakres i Dispose() zostanie wykonane na zmiennej wcfClient. Zobacz Jesse Ezell's blog
- 1. Generowanie proxy WCF: svcutil.exe vs wsdl.exe
- 2. Tworzenie mechanizmu ponawiania w MSMQ bez WCF
- 3. Gdzie jest svcutil.exe w Windows 7?
- 4. Tworzenie klienta WCF programowo
- 5. /sharedtites odpowiednik dla svcutil.exe?
- 6. Svcutil.exe dla .NET 4.0?
- 7. svcutil.exe i parametr przestrzeni nazw
- 8. Transakcje WCF bez MSDTC
- 9. WCF bez NET 3.0
- 10. Jak ustawić obszar nazw bez zastępowania nazwy konfiguracji usługi za pomocą SvcUtil.exe?
- 11. Tworzenie kontekstowego gadżetu Gmaila bez domeny aplikacji Google?
- 12. Tworzenie aplikacji bez interfejsu na maszynie programistycznej z asp.net
- 13. Tworzenie aplikacji Windows 8 Metro (HTML5) bez programu Visual Studio
- 14. Swift - Tworzenie kontrolera nawigacji bez scenorysów w Delegacie aplikacji
- 15. Ustawianie poświadczeń dla aplikacji WCF?
- 16. Usługa WCF nie działa bez uprawnień administratora
- 17. WCF uzyskania certyfikatu zakodowana wartość
- 18. Wymyślanie: Tworzenie użytkowników bez hasła
- 19. Tworzenie aplikacji konsolowej ZF3
- 20. Tworzenie samodzielnych aplikacji python
- 21. Przekazywanie nazwy użytkownika i hasła do svcutil.exe?
- 22. Jak uruchomić svcutil.exe zza uwierzytelniania proxy
- 23. Tworzenie wielodotykowej aplikacji Qt 5.1
- 24. Czy można serializować obiekty bez konstruktora bez parametrów w WCF?
- 25. Rozszerzenia WCF bez uwzględnienia wersji montażowej
- 26. WCF: operacje bez parametrów nie są obsługiwane
- 27. Wywołanie usługi WCF bez generowania zespołu
- 28. Tworzenie bez podpisu wdrożeń ClickOnce z MageUI
- 29. sqlite3: tworzenie tabeli bez kolumn
- 30. ExtJS Tworzenie tagfield bez listy
+1. Wygląda na to, czego szukałem. Czy ChannelFactory odczyta wszystkie ustawienia z App.config jak normalna klasa proxy? –
Uwaga: Wywołanie CreateChannel zwróci coś, co implementuje IMyWcfService. Nie będzie to miało metod Zamknij i Przerwij - musisz zadzwonić do nich bezpośrednio w fabryce –
Tak, ChannelFactory odczyta ustawienia z app.config. Sądzę, że jedno z przeciążeń pozwala ci określić, której konfiguracji klienta użyć po nazwie. Możesz także zrobić wszystko w kodzie, przekazując wiązanie kanału do użycia i całkowicie zignorować konfigurację. Jeśli chodzi o zamykanie proxy klienta (IMyWcfService), można go rzucić do ICommunicationObject i wywołać Close() na tym obiekcie. –