Odpowiedzi:
Ta odpowiedź jest oparta na artykule, który już nie istnieje:
Streszczenie artykułu:
„Zasadniczo WCF to warstwa usług, która umożliwia tworzenie aplikacji, które mogą się komunikować przy użyciu różnych mechanizmów komunikacyjnych. Dzięki niemu można komunikować się za pomocą sieci peer to peer, nazwanych potoków, usług sieci Web i tak dalej.
Nie można ich porównać, ponieważ WCF to platforma do tworzenia aplikacji współdziałających. Jeśli chcesz, możesz myśleć o tym jako o umożliwieniu SOA. Co to znaczy?
Cóż, WCF jest zgodne z czymś znanym jako ABC, gdzie A to adres usługi, z którą chcesz się komunikować, B oznacza powiązanie, a C oznacza kontrakt. Jest to ważne, ponieważ można zmienić powiązanie bez konieczności zmiany kodu. Kontrakt jest znacznie mocniejszy, ponieważ wymusza oddzielenie kontraktu od realizacji. Oznacza to, że umowa jest definiowana w interfejsie i istnieje konkretna implementacja, do której konsument jest zobowiązany, korzystając z tej samej idei umowy. Model danych jest wyodrębniony ”.
... później ...
„Powinien używać WCF, gdy musimy komunikować się z innymi technologiami komunikacyjnymi (np. Peer to Peer, Named Pipes) zamiast z usługą sieci Web”
Od Jaka jest różnica między WCF i Web Services?
WCF jest zamiennikiem wszystkich wcześniejszych technologii usług sieci Web firmy Microsoft. Robi też dużo więcej niż to, co tradycyjnie uważa się za „usługi sieciowe”.
„Usługi sieci Web” programu WCF są częścią znacznie szerszego spektrum komunikacji zdalnej włączonej za pośrednictwem usługi WCF. Uzyskasz znacznie wyższy stopień elastyczności i przenośności, wykonując czynności w programie WCF niż za pomocą tradycyjnego ASMX, ponieważ WCF jest zaprojektowany od podstaw w celu podsumowania wszystkich różnych infrastruktur programowania rozproszonego oferowanych przez firmę Microsoft. Punkt końcowy w programie WCF można komunikować równie łatwo za pośrednictwem protokołu SOAP / XML, jak za pośrednictwem protokołu TCP / binarnego, a zmiana tego medium jest po prostu modyfikacją pliku konfiguracyjnego. Teoretycznie zmniejsza to ilość nowego kodu potrzebnego podczas przenoszenia lub zmiany potrzeb biznesowych, celów itp.
ASMX jest starszy niż WCF, a wszystko, co może zrobić ASMX, może obsługiwać WCF (i nie tylko). Zasadniczo możesz postrzegać WCF jako próbę logicznego zgrupowania razem wszystkich różnych sposobów uzyskania komunikacji między dwiema aplikacjami w świecie firmy Microsoft; ASMX był tylko jednym z tych wielu sposobów, dlatego jest teraz zgrupowany w ramach możliwości WCF.
Dostęp do usług sieci Web można uzyskać tylko za pośrednictwem protokołu HTTP i działają one w środowisku bezstanowym, w którym usługa WCF jest elastyczna, ponieważ jej usługi mogą być hostowane w różnych typach aplikacji. Typowe scenariusze hostingu usług WCF to IIS, WAS, samodzielne hosting, zarządzana usługa systemu Windows.
Główna różnica polega na tym, że korzystanie z usług sieci Web
XmlSerializer
. Ale WCF używa,DataContractSerializer
który jest lepszy pod względem wydajności w porównaniu zXmlSerializer
.
Usługa internetowa oparta jest na protokole SOAP i zwraca dane w postaci XML. Obsługuje tylko protokół HTTP. To nie jest oprogramowanie typu open source, ale może być używane przez każdego klienta, który rozumie XML. Może być hostowany tylko w usługach IIS.
Usługa WCF jest również oparta na protokole SOAP i zwraca dane w postaci XML. Jest to ewolucja usługi sieciowej (ASMX) i obsługuje różne protokoły, takie jak TCP, HTTP, HTTPS, Named Pipes, MSMQ. Głównym problemem związanym z WCF jest jego żmudna i rozbudowana konfiguracja. To nie jest oprogramowanie typu open source, ale może być używane przez każdego klienta, który rozumie XML. Może być hostowany w aplikacji lub w usługach IIS lub przy użyciu usługi okna.
Podstawowa i podstawowa różnica polega na tym, że usługa sieciowa ASP.NET jest zaprojektowana do wymiany komunikatów SOAP tylko przez HTTP, podczas gdy usługa WCF może wymieniać wiadomości przy użyciu dowolnego formatu (domyślnie SOAP) za pośrednictwem dowolnego protokołu transportowego, tj. HTTP, TCP, MSMQ lub NamedPipes itp.
Jaka jest różnica między usługą sieci Web a usługą WCF?
Usługa sieciowa używa tylko protokołu HTTP podczas przesyłania danych z jednej aplikacji do drugiej.
Jednak usługa WCF obsługuje więcej protokołów do transportu komunikatów niż usługi sieci Web ASP.NET. Usługa WCF obsługuje wysyłanie wiadomości przy użyciu protokołu HTTP, a także protokołu kontroli transmisji (TCP), nazwanych potoków i usługi Microsoft Message Queuing (MSMQ).
Aby opracować usługę w usłudze sieciowej, napiszemy następujący kod
[WebService]
public class Service : System.Web.Services.WebService
{
[WebMethod]
public string Test(string strMsg)
{
return strMsg;
}
}
Aby opracować usługę w WCF, napiszemy następujący kod
[ServiceContract]
public interface ITest
{
[OperationContract]
string ShowMessage(string strMsg);
}
public class Service : ITest
{
public string ShowMessage(string strMsg)
{
return strMsg;
}
}
Usługa sieci Web nie jest bardziej solidna architektonicznie. Jednak usługa WCF jest bardziej niezawodna architektonicznie i promuje najlepsze rozwiązania.
Usługi sieci Web używają XmlSerializer, ale WCF używa DataContractSerializer. Który jest lepszy pod względem wydajności w porównaniu z XmlSerializer?
W przypadku wewnętrznych (za zaporą) połączeń usługa-usługa używamy powiązania net: tcp, które jest znacznie szybsze niż SOAP.
Usługa WCF jest o 25% -50% szybsza niż usługi sieci Web ASP.NET i około 25% szybsza niż usługa zdalna .NET.
Kiedy wybrałbym jedno zamiast drugiego?
WCF służy do komunikacji między innymi aplikacjami, które zostały opracowane na innych platformach i przy użyciu innych technologii.
Na przykład, jeśli muszę przesyłać dane z platformy .net do innej aplikacji, która działa na innym systemie operacyjnym (jak Unix lub Linux) i używają innego protokołu transferu (jak WAS lub TCP), to jest możliwe tylko przesyłanie danych przy użyciu WCF.
Tutaj nie ma ograniczeń co do platformy, protokołu transferu aplikacji podczas przesyłania danych między jedną aplikacją do drugiej.
Bezpieczeństwo jest bardzo wysokie w porównaniu z usługą sieciową
Główną różnicą jest przekroczenie limitu czasu, usługa WCF przekroczyła limit czasu, gdy nie ma odpowiedzi, ale usługa sieci Web nie ma tej właściwości.