Asp.net INotifyPropertyChanged на объектах домена
Что произойдет, если объект домена в asp.net реализует INotifyPropertyChanged и инициирует событие PropertyChanged для установщиков свойств?
У меня есть общий слой домена для системы Silverlight WebForms. Чтобы Silverlight получил всю магию привязки, домен теперь делает уведомления о свойствах.
Моя система веб-форм, похоже, не подвержена влиянию (все по-прежнему работает), но я беспокоюсь, что что-то происходит за кулисами, чего я не понимаю.
Я мог бы создать специальный слой домена Silverlight, который расширяет исходные доменные объекты и переопределяет свойства для создания уведомлений, но нужно ли это? т.е. я добавляю дополнительный слой кода без причины.
Загрязнение моего домена материалом ComponentModel действительно выглядит ужасно.
2 ответа
Ничего плохого, вероятно, не произойдет, но это не лучший подход..
Я мог бы создать специальный слой домена Silverlight, который расширяет исходные доменные объекты и переопределяет свойства для создания уведомлений, но нужно ли это? т.е. я добавляю дополнительный слой кода без причины.
Первое, на что следует обратить внимание, это то, что ваш пользовательский интерфейс в Silverlight не должен быть привязан к доменным объектам. Фактически, ваши представления связаны с ViewModel, и эта модель должна содержать Models.
Модель пользовательского интерфейса!= Модель домена
Загрязнение моего домена материалом ComponentModel действительно выглядит ужасно.
Если вы добавите логику представления в свои доменные модели, уровень бизнес-логики может превратиться в беспорядок, и вы потеряете абстракцию, поскольку он связан с уровнем представления. Только представьте, что через 2 года вы перейдете на другую веб-среду, которая нуждается в особой логике в моделях, добавите ли вы больше логики в бизнес-объекты?
На мой взгляд, доменные модели должны быть изолированы от других слоев и не должны зависеть от технологии (в данном случае от Silverlight)
Я бы добавил новый слой, который преобразует ваши доменные объекты в модели Silverlight. Это может выглядеть как накладные расходы, но в этом случае ваша система будет чистой и с четко изолированными слоями.
Есть инструменты, которые могут помочь вам сделать это сопоставления без особых усилий, например, AutoMapper
Если никто не подписывается на событие, то ничего не произойдет в результате его проведения.
Маловероятно, что ваше серверное приложение ASP.NET подпишется на эти события, что объясняет, почему ничего не происходит.