[Перевод] Начинаем делать RESTful web-сервисы на WCF и Nelibur
WCF — реально мощная штука, но раз за разом для новых проектов мы вынуждены создавать новые, похожие друг на друга веб-сервисы. В этой статье (переводе) мы увидем, как создать повторно используемый веб-сервис с помощью Nelibur. Nelibur — это Message based web service framework на чистом WCF. Давайте посмотрим, как начать создание web-сервисов на WCF с использованием Nelibur.Шаг 1. Создание приложенияДля простоты хостить WCF-сервис будет консольное приложение. Так что просто добавляем новый консольный проект.Шаг 2. Инсталлируем Nelibur Самый простой способ установить Nelibur — воспользоваться NuGet package manager.То же самое можно сделать с помощью Package Manager Console
Теперь мы готовы создать RESTful WCF message based сервис.
Шаг 3. Создаем WCF-сервис Для примера, возмем следующие требования к WCF-сервису: Nelibur уже содержит нужную нам реализацию: JsonServicePerCall.Итак, добавляем код запуска нашего сервиса. internal class Program { private static WebServiceHost _service;
private static void Main () { _service = new WebServiceHost (typeof (JsonServicePerCall)); _service.Open ();
Console.WriteLine («ShipTrackingService is running»); Console.WriteLine («Press any key to exit\n»);
Console.ReadKey ();
_service.Close ();
}
}
Прописываем конфигурацию
public object Get (ShipLocationQuery request) { if (_ships.ContainsKey (request.ShipId)) { return new ShipLocation { Location = «Sheldonopolis», ShipId = request.ShipId }; } throw new WebFaultException (HttpStatusCode.BadRequest); }
public object Post (AddShipCommand request) { var ship = new Ship (request.ShipName, Guid.NewGuid ()); _ships[ship.Id] = ship; return new ShipInfo { Id = ship.Id, Name = ship.Name }; } } Связываем команду и запрос с обработчиком internal class Program { private static WebServiceHost _service;
private static void ConfigureService ()
{
NeliburRestService.Configure (x =>
{
x.Bind
private static void Main () { ConfigureService ();
_service = new WebServiceHost (typeof (JsonServicePerCall)); _service.Open ();
Console.WriteLine («ShipTrackingService is running»); Console.WriteLine («Press any key to exit\n»);
Console.ReadKey (); _service.Close (); } } Все, сервис закончен. Как вы заметили, вы можете добавлять любые операции без изменения WCF-сервиса…Клиент, использующий наш WCF-сервис В качестве клиента можно использовать: Fiddler Добавление нового корабля (с помощью POST-запроса): Получение корабля по ShipId (с помощью GET-запроса):
JsonServiceClient
Для создания своего клиента — добавляем еще одно консольное приложение.Вот код клиента:
internal class Program
{
private static void Main ()
{
var client = new JsonServiceClient (Settings.Default.ServiceAddress);
var shipInfo = client.Post
var shipLocation = client.Get
Console.ReadKey (); } } Запускаем наш клиент и видим результат выполнения: На стороне сервиса
На стороне клиента
Дополнительная литература Вот и все Я надеюсь, вам понравилось. Спасибо за чтение статьи (перевода).Исходники можно скачать с оригинала.