Статьи

Создать WCF RESTful Сервис

обзор

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

Теперь удалите файлы IService.cs и Service.cs.

Обслуживание клиентов

Теперь щелкните правой кнопкой мыши проект в обозревателе решений и выберите «Добавить новый элемент», затем выберите «Служба WCF» и назовите его «Служба поддержки клиентов».

WCF SErvice

Теперь я создам Контракт с данными 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 .

ADO DOT 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 /

WCF REST сервис

Вы увидите следующий вывод http: // localhost: 1040 / CustomerService.svc / GetAllCustomer /

Вы увидите ниже вывод

Вы увидите следующий вывод http: // localhost: 1040 / CustomerService.svc / CustomerDetails / ALFKI

выход

Я надеюсь, что эта статья полезна. Если у вас есть другие вопросы, пожалуйста, укажите это в разделе комментариев.