В Wcf REST лучше возвращать большие модели с меньшим количеством запросов или меньшие модели с большим количеством запросов - PullRequest
3 голосов
/ 21 ноября 2011

У меня есть приложение SOA, и у меня начались проблемы с производительностью.

У меня есть модели, вышедшие ОТ ОТДЫХА, похожие на ...

public class Person
{
    public Guid Id { get; set; } 
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public Address Address { get; set; }
    public IEnumerable<Hobby> Hobbies { get; set; }
    public IEnumerable<Interests> Interests { get; set; }
    public IEnumerable<Friends> Friends { get; set; }
}

Превращается в довольно большую модель довольно быстро, когда она возвращается через REST со всеми заполненными полями.

Итак, мой основной вопрос ... Лучше ли передавать большие модели, как указано выше, и использовать вызовы FEWER Rest, или передавать объекты меньшего размера и использовать больше вызовов Rest для извлечения других фрагментов данных . И.Е. есть такая модель ...

public class Person
{
    public Guid Id { get; set; } 
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public AddressId AddressId { get; set; }
    public IEnumerable<Guid> Hobbies { get; set; }
    public IEnumerable<Guid> Interests { get; set; }
    public IEnumerable<Guid> Friends { get; set; }
}

А теперь возьмите другие свойства по мере необходимости ...

Мысли

Ответы [ 2 ]

4 голосов
/ 21 ноября 2011

Лично я предпочитаю возвращать более легкий предмет.Я мог бы объяснить, почему, но эта статья довольно неплохо справляется со мной:

http://davybrion.com/blog/2010/05/why-you-shouldnt-expose-your-entities-through-your-services/

Теперь в вашем случае вы можете возвращать списки внутри ваших объектов, а затем вызовите REST, который примет список идентификаторов (в вашем случае Guids), а затем вернет список объектов, сами по себе облегченные.Это даст вам лучшее из обоих миров - более легкие объекты и меньшее количество вызовов REST.

1 голос
/ 21 ноября 2011

Общая мудрость для вызовов rpc состоит в том, чтобы сделать их короче, но, как и во всем остальном, все зависит от вашей ситуации.IMO, вы должны попытаться сделать его как можно более коротким, не вытягивая слишком много данных :-), поэтому, если у вас есть пользовательский интерфейс или что-то еще, вы должны сосредоточиться на пользовательских задачах, а не на данных, и посмотреть, какие задачи пользователь собирается выполнятьчто пользовательский интерфейс, и сколько данных ему нужно.Вы должны иметь dtos, которые связаны с задачей, и извлекать эти dtos явно, но суть в том, что DTO связаны с задачей, и бизнес-модель живет на сервере (который больше связан с бизнесом).

...