WCF и модель предметной области - разве она не должна быть анемичной? - PullRequest
2 голосов
/ 24 марта 2011

Вот аргумент против Анемичной доменной модели , представленной Мартином Фаулером (читай ссылка ).

Теперь, исходя из этого описания, можно ожидатьбизнес-объект должен иметь не только геттеры и сеттеры, но и поведение, как показано ниже.

    public class Student
{
    private List<Course>_courses = new List<Course>();
    public string Name{get; set;}
    public ReadOnlyCollection<Course> Courses {
        get{ return _courses.AsReadOnly();}
    }
    public void Add(Course course)
    {
        if (course != null && _courses.Count <= 3)
        {
            _courses.Add(course);
        }
    }
    public bool Remove(Course course)
    {
        bool removed = false;
        if (course != null && _courses.Count <= 3)
        {
            removed = _courses.Remove(course);
        }
        return removed;
    }
}

Но такой объект, как Student, как описано выше, не может быть правильно представлен посредством вызова службы WCF (Курсывыставляется только через свойство только для чтения).Что означало бы, что мне нужно иметь средство получения и установки курса, которое возвращает список

. Разве модель Anemic домена не подходит для WCF, а модель надлежащего домена подходит только тогда, когда клиент действительно может использовать код (Asp.net, когда на стороне сервера или в бизнес-объектах на стороне клиента при использовании Silverlight и т. д.).

1 Ответ

1 голос
/ 24 марта 2011

Так что модель Anemic domain не подходит для WCF

В этом контексте то, что вы называете анемичной моделью данных, я бы назвал объектом передачи данных.

Модель предметной области фиксирует поведение и данные, которые определяют поведение. Часто представление доменной модели «как есть» через удаленную конечную точку часто страдает от слишком сильной связи и наталкивается на практические проблемы.

Часто объекты передачи данных (DTO) (http://martinfowler.com/eaaCatalog/dataTransferObject.html) - это хороший способ решения этого конструктивного напряжения.

В конечном итоге это будет код, который обходит свойства модели вашего домена и копирует данные в соответствующий DTO для возврата вызывающей стороне вашей службы WCF.

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