Asp.net INotifyPropertyChanged на объектах домена

Что произойдет, если объект домена в asp.net реализует INotifyPropertyChanged и инициирует событие PropertyChanged для установщиков свойств?

У меня есть общий слой домена для системы Silverlight WebForms. Чтобы Silverlight получил всю магию привязки, домен теперь делает уведомления о свойствах.

Моя система веб-форм, похоже, не подвержена влиянию (все по-прежнему работает), но я беспокоюсь, что что-то происходит за кулисами, чего я не понимаю.

Я мог бы создать специальный слой домена Silverlight, который расширяет исходные доменные объекты и переопределяет свойства для создания уведомлений, но нужно ли это? т.е. я добавляю дополнительный слой кода без причины.

Загрязнение моего домена материалом ComponentModel действительно выглядит ужасно.

2 ответа

Решение

Ничего плохого, вероятно, не произойдет, но это не лучший подход..

Я мог бы создать специальный слой домена Silverlight, который расширяет исходные доменные объекты и переопределяет свойства для создания уведомлений, но нужно ли это? т.е. я добавляю дополнительный слой кода без причины.

Первое, на что следует обратить внимание, это то, что ваш пользовательский интерфейс в Silverlight не должен быть привязан к доменным объектам. Фактически, ваши представления связаны с ViewModel, и эта модель должна содержать Models.

Модель пользовательского интерфейса!= Модель домена

Загрязнение моего домена материалом ComponentModel действительно выглядит ужасно.

Если вы добавите логику представления в свои доменные модели, уровень бизнес-логики может превратиться в беспорядок, и вы потеряете абстракцию, поскольку он связан с уровнем представления. Только представьте, что через 2 года вы перейдете на другую веб-среду, которая нуждается в особой логике в моделях, добавите ли вы больше логики в бизнес-объекты?

На мой взгляд, доменные модели должны быть изолированы от других слоев и не должны зависеть от технологии (в данном случае от Silverlight)

Я бы добавил новый слой, который преобразует ваши доменные объекты в модели Silverlight. Это может выглядеть как накладные расходы, но в этом случае ваша система будет чистой и с четко изолированными слоями.

Есть инструменты, которые могут помочь вам сделать это сопоставления без особых усилий, например, AutoMapper

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

Маловероятно, что ваше серверное приложение ASP.NET подпишется на эти события, что объясняет, почему ничего не происходит.

Другие вопросы по тегам