обзор
WCF
Windows Communication Foundation (WCF) — это распределенная технология, которая предоставляет единую интегрированную платформу или режим, называемый сервисным режимом, для разработки распределенных приложений для Windows. С помощью WCF можно разрабатывать мощные и совместимые сервис-ориентированные приложения. Это объединенная функция веб-службы, удаленного взаимодействия, MSMQ и COM +. WCF обеспечивает общую платформу для всех коммуникаций .NET, а также использует сообщения SOAP для обмена информацией между службой и клиентом.
- Сервисный контракт
Сервисный контракт — это атрибут, применяемый к интерфейсу, такому как IService1. Он описывает, какие операции клиент может выполнять над сервисами. - Операционный контракт
Операционный контракт — это атрибут, применяемый к методам в таких интерфейсах, как IService1. Он определяет метод в интерфейсе. Он определяет входные параметры и тип возврата конкретной операции в сервисе. - Контракт данных
DataContract определяет, какие типы данных передаются в сервис и из него. Он определяет класс, а атрибут DataMember определяет свойства.
ОСТАЛЬНЫЕ
Передача состояния представления (REST) - это протокол для обмена данными в распределенной среде. Основная идея REST заключается в том, что мы должны рассматривать наши распределенные сервисы как ресурс, и мы должны иметь возможность использовать простые протоколы HTTP для выполнения различных операций с этим ресурсом.
JSON
Формат данных JavaScript Object Notation (JSON) , или сокращенно JSON, получен из литералов языка программирования JavaScript. JSON помогает нам представлять и обмениваться данными в информативной, независимой и легкой форме. Эти данные могут быть легко использованы и преобразованы в объекты JavaScript.
В большинстве браузерных приложений WCF можно использовать с помощью JavaScript, jQuery, AngularJs и так далее. Когда клиент делает вызов WCF, в качестве формата сообщения используется JSON или XML. WCF имеет возможность отправить ответ в объекте JSON. Это может быть сконфигурирован с WebGet или WebInvoke атрибутом и WebHttpBinding . Это позволяет вам представить ServiceContract как службу REST, которую можно вызывать с использованием JSON или обычного XML.
- GET: получает информацию.
- PUT: заменяет всю коллекцию другой коллекцией.
- POST: создает новую запись в коллекции.
- УДАЛИТЬ: Удаляет всю коллекцию.
Сначала нам нужно создать службу WCF REST. Так что используйте следующую процедуру.
Откройте Visual Studio и выберите «Файл», затем «Новый» и «Проект …». Затем выберите WCF с левой стороны, щелкните Приложение службы WCF. Нажмите ОК.
Теперь удалите файлы IService.cs и Service.cs.
Теперь щелкните правой кнопкой мыши проект в обозревателе решений и выберите «Добавить новый элемент», затем выберите «Служба WCF» и назовите его «Служба поддержки клиентов».
Теперь я создам Контракт с данными CustomerDataContract .
Щелкните правой кнопкой мыши проект в обозревателе решений и выберите «Добавить новый элемент». Затем добавьте файл .cs и используйте следующий код:
CustomerDataContract.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Web;
namespace WCFRESTfulService
{
[DataContract]
public class CustomerDataContract
{
[DataMember]
public string CustomerID { get; set; }
[DataMember]
public string CompanyName { get; set; }
[DataMember]
public string ContactName { get; set; }
[DataMember]
public string ContactTitle { get; set; }
[DataMember]
public string Address { get; set; }
[DataMember]
public string City { get; set; }
[DataMember]
public string Region { get; set; }
[DataMember]
public string PostalCode { get; set; }
[DataMember]
public string Country { get; set; }
[DataMember]
public string Phone { get; set; }
[DataMember]
public string Fax { get; set; }
}
}
Теперь пришло время добавить вашу базу данных в приложение. Поэтому создайте новую папку с именем Model в вашем проекте.
Теперь щелкните правой кнопкой мыши папку « Модель » и выберите « Добавить» , затем нажмите « Новый элемент» .
Выберите модель данных объекта ADO.NET .
Щелкните правой кнопкой мыши объект «Клиент» и выберите «Создать базу данных из модели» в контекстном меню. Вы увидите диалоговое окно Generate Database Wizard, как показано здесь:
Здесь нажмите «Новое соединение», затем введите сведения о SQL Server и выберите базу данных.
Теперь откройте файл ICustomerService.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 WCFRESTfulService
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "ICustomerService" in both code and config file together.
[ServiceContract]
public interface ICustomerService
{
[OperationContract]
[WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json, UriTemplate = "/GetAllCustomer/")]
List<CustomerDataContract> GetAllCustomer();
[OperationContract]
[WebGet( RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/CustomerDetails/{CustomerID}")]
CustomerDataContract CustomerDetails(string customerID);
}
}
CustomerService.svc
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
//
using WCFRESTfulService.Model;
namespace WCFRESTfulService
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "CustomerService" in code, svc and config file together.
// NOTE: In order to launch WCF Test Client for testing this service, please select CustomerService.svc or CustomerService.svc.cs at the Solution Explorer and start debugging.
public class CustomerService : ICustomerService
{
NorthwindEntities dc;
public CustomerService()
{
dc = new NorthwindEntities();
}
public List<CustomerDataContract> GetAllCustomer()
{
var query = (from a in dc.Customers
select a).Distinct();
List<CustomerDataContract> CustomersList = new List<CustomerDataContract>();
query.ToList().ForEach(x =>
{
CustomersList.Add(new CustomerDataContract
{
CustomerID = Convert.ToString(x.CustomerID),
CompanyName = x.CompanyName,
ContactName = x.ContactName,
ContactTitle = x.ContactTitle,
Address = x.Address,
City = x.City,
Region = x.Region,
PostalCode = x.PostalCode,
Country = x.Country,
Phone = x.Phone,
Fax = x.Fax,
});
});
return CustomersList;
}
public CustomerDataContract CustomerDetails(string customerID)
{
CustomerDataContract Cust = new CustomerDataContract();
try
{
var query = (from a in dc.Customers
where a.CustomerID.Equals(customerID)
select a).Distinct().FirstOrDefault();
Cust.CustomerID = query.CustomerID;
Cust.CompanyName = query.CompanyName;
Cust.ContactName = query.ContactName;
Cust.ContactTitle = query.ContactTitle;
Cust.Address = query.Address;
Cust.City = query.City;
Cust.Region = query.Region;
Cust.PostalCode = query.PostalCode;
Cust.Country = query.Country;
Cust.Phone = query.Phone;
Cust.Fax = query.Fax;
}
catch (Exception ex)
{
throw new FaultException<string> (ex.Message);
}
return Cust;
}
}
}
Теперь внесите следующие изменения в файл web.config приложения WCF:
Теперь наша служба WCF REST готова. Запустите службу WCF REST.
HTTP: // локальный: 1040 / CustomerService.svc / GetAllCustomer /
Вы увидите следующий вывод http: // localhost: 1040 / CustomerService.svc / GetAllCustomer /
Вы увидите следующий вывод http: // localhost: 1040 / CustomerService.svc / CustomerDetails / ALFKI
Я надеюсь, что эта статья полезна. Если у вас есть другие вопросы, пожалуйста, укажите это в разделе комментариев.