Обзор В
моей предыдущей статье было представлено введение в WCF (Windows Communication Framework). Теперь мы обсудим различия между концепциями веб-сервисов и WCF.
Веб-службы (ASMX)
Веб-службы используются для отправки / получения сообщений с использованием простого протокола доступа к объектам (SOAP) только через HTTP.
Он доступен в пространстве имен «System.Web.Services. WebService Class »с конструктором, методами, процветанием и событиями.
Код
using System; using System.Collections.Generic; using System.Web; using System.Web.Services; namespace HelloWorldServices { /// <summary> /// Summary description for Service1 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] public class Service1 : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } } }
WCF
WCF используется для обмена сообщениями в любом формате через любой транспортный протокол, такой как HTTP, TCP / IP, MSMQ, именованные каналы и т. Д. Его формат по умолчанию — SOAP.
Примечание. Microsoft Message Queuing (MSMQ) — это службы очереди сообщений, разработанные Microsoft.
Простой объектный протокол доступа (SOAP) — это протокол обмена сообщениями, разработанный W3C.
Код: IService1.cs
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Web; using System.Text; namespace HelloWorldWCFService { // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together. [ServiceContract] public interface IService1 { [OperationContract] string GetData(int value); [OperationContract] CompositeType GetDataUsingDataContract(CompositeType composite); // TODO: Add your service operations here } // Use a data contract as illustrated in the sample below to add composite types to service operations. [DataContract] public class CompositeType { bool boolValue = true; string stringValue = "Hello "; [DataMember] public bool BoolValue { get { return boolValue; } set { boolValue = value; } } [DataMember] public string StringValue { get { return stringValue; } set { stringValue = value; } } } }
Service1.svc
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Web; using System.Text; namespace HelloWorldWCFService { // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together. public class Service1 : IService1 { public string GetData(int value) { return string.Format("You entered: {0}", value); } public CompositeType GetDataUsingDataContract(CompositeType composite) { if (composite == null) { throw new ArgumentNullException("composite"); } if (composite.BoolValue) { composite.StringValue += "Suffix"; } return composite; } } }
Различия между веб-сервисами и таблицей WCF
S.Number | функции | WCF |
1 | Он доступен в пространстве имен «System.Web. Services.WebService Class». | Он доступен в пространстве имен «System.ServiceModel» |
2 | Поддерживается хостинг только IIS | Поддерживаются такие хостинги, как IIS, Self Hosting (консольный хостинг), службы активации Windows, службы Windows |
3 | Используется только для сериализатора XML | Используется только для DataContractSerializer |
4 | Поддерживается односторонняя связь и запрос-ответ | Поддерживается односторонняя, двусторонняя (дуплексная) связь и запрос-ответ |
5 | Поддерживается привязка, такая как XML 1.0, механизм оптимизации передачи сообщений (MTOM), пользовательский | Поддерживается привязка, такая как XML 1.0, механизм оптимизации передачи сообщений (MTOM), двоичные и пользовательские |
6 | Поддерживается транспортный протокол, такой как HTTP, TCP и пользовательский. | Это поддерживаемый транспортный протокол, такой как HTTP, TCP, Именованные каналы, MSMQ, P2P и пользовательский. |
7 | Поддерживается протокол безопасности | Это поддерживаемый протокол безопасности, транзакции и надежное сообщение |
Заключение
Эта статья поможет понять различия между веб-сервисами и WCF в .NET.