Шаблоны проектирования для объектов в REST API? - PullRequest
4 голосов
/ 08 февраля 2012

Я создал REST API с помощью предварительного просмотра WCF Web API, и я хочу создать библиотеку с классами, которые вы передаете этому API (просто для облегчения жизни разработчиков .Net). Это должны быть простые классы POCO без особой функциональности.

Но на стороне получателя было бы целесообразно добавить некоторые функции в эти классы. У меня есть пример ниже:

[WebInvoke(UriTemplate = "", Method = "POST")]
public Supertext.API.Order Create(Supertext.API.Order apiOrder)
{

И это пример класса POCO:

public class Order
{
    public string Service { get; set; }

    public string OrderTitle { get; set; }

    public string Currency { get; set; }
}

Теперь, каков хороший способ расширить этот класс на стороне сервера?
Я думаю, что использование подкласса не будет работать. Делегаты?
На самом деле есть две разные версии класса? Один для клиентов и один для сервера?

Что делают другие люди?

1 Ответ

2 голосов
/ 08 февраля 2012

Проблема с добавлением дополнительных функций в этот класс POCO заключается в том, что вы превращаете его в объект домена.Природа этого объекта предметной области теперь будет ограничена тем фактом, что, по сути, этот класс действует как определение интерфейса в операции.Изменение сведений об этом классе может привести к поломке клиентов.

Гораздо более чистая модель - хранить этот класс исключительно в качестве объекта передачи данных, единственной обязанностью которого является содействие соединению формата проводника с объектами и использование такого преобразователя, каккак AutoMapper , чтобы отобразить данные из DTO в реальный объект домена.Реальный доменный объект полностью находится под вашим контролем, и вы можете с радостью выполнить его рефакторинг, не угрожая каскадному эффекту для ваших потребителей услуг

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...