Как интегрировать шаблон ASP .Net Model View Presenter (MVP) и методы статической страницы, помеченные как [WebMethod]? - PullRequest
4 голосов
/ 26 сентября 2008

В приложении asp.net я хотел бы объединить использование Фабрики программного обеспечения Webclient (WCSF) и связанного с ним шаблона представления представления модели (MVP) с методом Page Method, который является статическим методом в представлениях .aspx. отмечен атрибутом [WebMethod].

Однако статические методы на странице aspx, по-видимому, нарушают шаблон Presenter Model Viewer, поскольку на странице требуется экземпляр метода, чтобы иметь контекст Presenter и Controller, необходимый для просмотра View.

Как бы можно было расширить шаблон MVP asp .net в WCSF для поддержки [WebMethods] на странице, иначе как View?

Ответы [ 2 ]

4 голосов
/ 27 сентября 2008

У меня недавно была похожая проблема, когда я работал над проектом MVP и хотел много интегрировать с AJAX. Вам лучше всего иметь веб-сервисы, которые соответствуют шаблону MVP, который вы вызываете.

Имейте в виду, что PageMethod - это чуть больше, чем веб-сервис, только на текущей странице. Он не имеет доступа к объектам уровня страницы, поэтому преимущества его наличия минимальны. Я на самом деле думаю, что они невыгодны, они дают разработчикам (которые не знакомы с концепцией) идею, что они могут взаимодействовать с объектами уровня страницы.

Обратная сторона медали - это то, что делает ваш PageMethod, если ваш метод страницы не нуждается во взаимодействии с моделью (скажем, он обрабатывает сложные арифметические вычисления, которые быстрее в C # / VB.NET, чем в JS), то эта операция действительно является операцией на уровне пользовательского интерфейса и, скорее всего, не имеет смысла, если вы хотите превратить приложение в WinForm (или что-то еще).

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

2 голосов
/ 27 сентября 2008

Я думаю, вы могли бы приблизиться к тому, что вы ищете, используя веб-службу ASP.Net AJAX вместо статических методов страниц. Преимущество веб-службы заключается в том, что он не статичен, и в зависимости от того, как реализованы ваши представления (я не знаком со спецификой шаблона WCSF MVP), вы можете сделать веб-службу своим слоем «Вид» ... или по крайней мере, что-то довольно близко.

Я сделал нечто подобное в проекте, над которым я работаю. В итоге мне понадобилось создать тонкий класс только для данных, который сериализовался в JSON веб-службой для переноса данных из модели в «представление», но у веб-службы были, по сути, те же методы, которые будут отображаться в виде событий на вид.

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

...