Usługa sieci Web a usługa WCF

Odpowiedzi:

67

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”

rbrayb
źródło
2
W przypadku każdego nowego projektu opartego na podejściu SOA deweloper powinien wybrać WCF za pośrednictwem usług sieci Web. Ponieważ zapewnia elastyczność i skalowalność do wykorzystania w przyszłości. Jest tylko jeden wyjątek: jeśli klient nie obsługuje komunikacji z usługami wcf, np. Flash AS2.
Lalit
WCF 1) Jest to architektura wielowarstwowa 2) Zapewnia pojedynczą ujednoliconą platformę (interoperacyjną) lub strukturę do tworzenia aplikacji zorientowanych na usługi do komunikacji przy użyciu różnych protokołów sieciowych. 3) WCF zapewnia większe bezpieczeństwo i niezawodność w porównaniu z usługami sieciowymi lub usługami ASMX 4) Obsługa zwykłych usług sieci Web XML, Ajax i REST 1) Jest to proste 2) Napisz funkcję i podłącz ją do atrybutu [WebMethod] i jest gotowy do służby
Arun Banik
Jak odpowiedział Joe -> Artykuł jest replikowany na codeproject.com/Articles/139787/…
Bernhard
33

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, DataContractSerializerktóry jest lepszy pod względem wydajności w porównaniu z XmlSerializer.

Joe
źródło
2
Losowa uwaga: duża różnica między DataContractSerializer i XmlSerializer polega na tym, że DCS wymaga zamawiania w terenie - dlatego nie używam DCS do ciągłej serializacji lub kontraktów! W ten sposób możliwe jest przerwanie usługi używanej przez klientów, którzy nie używają ustalonej kolejności podczas przechodzenia do DCS (lub przechodzą do DCS, ale w innej kolejności niż poprzednio). To prawda, powinno to być wyrażone w schemacie, ale ...
user2246674
1
Także, proszę cytować / źródła link i wskazać ekstraktów i / lub podjąć oryginalnej informacji i napisać coś nowego z nim. Kradzież jest niegrzeczna. Dodałem dla Ciebie link, ale pamiętaj, aby podać kredyt tam, gdzie jest to należne! (Chciałbym downvote na tej podstawie, czy mogę downvote w ogóle.)
user2246674
32

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.

CSK
źródło
Usługa WCF może również odbierać / wysyłać żądania / odpowiedzi HTTP w formacie JSON i bez używania protokołu SOAP / schemas (obecnie?).
Efrain
Punkt szczegółowy: SOAP obsługuje HTTPS. Kodowanie odbywa się w warstwie transportowej, więc klient jest wobec niej agnostyczny - klient wysyła żądania XML i otrzymuje odpowiedzi XML i nie wie ani nie dba o to, czy po drodze był to zwykły-ol-http, czy zaszyfrowany-https.
Jinlye
16

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.

Imran Ghani
źródło
4

Jaka jest różnica między usługą sieci Web a usługą WCF?

  1. 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).

  2. 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;
      }
    }
  3. Usługa sieci Web nie jest bardziej solidna architektonicznie. Jednak usługa WCF jest bardziej niezawodna architektonicznie i promuje najlepsze rozwiązania.

  4. 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?

  5. 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ą

Ali Azam
źródło
2

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.

user5898334
źródło