Caliburn / Castle WCF Средство управления EndpointNotFoundException - PullRequest
1 голос
/ 22 декабря 2010

Я использую Caliburn (фреймворк MVVM) в сочетании с Castle Windsor и WCF Facility.

Мой класс Presenter имеет конструкторскую зависимость, которая фактически является контрактом WCF, который будет предоставлен контейнером Windsor.

Чего я хотел бы достичь, так это если конечная точка не найдена, что докладчик явно не может быть отображен, я хотел бы, чтобы отображалось представление с объяснением «Сетевая служба, необходимая для отображения этой формы, не может быть найдена. Пожалуйста, попробуйте снова позже. ".

Как лучше всего подключиться к Castle / Caliburn для централизации этого кода, чтобы отображалось одно и то же сообщение об ошибке, независимо от того, где в приложении не удалось разрешить докладчика из-за исключения EndpointNotFoundException?

Есть идеи?

Я хочу избежать необходимости помещать конечную точку try / catch-not-found вокруг всех разрешений докладчика, ТОЛЬКО УВЕЛИЧИТЬ, ЧТО ЭТО ЗАВИСИТ ОТ WCF ....

1 Ответ

1 голос
/ 22 декабря 2010

Быстрое (но, на мой взгляд, немного грязное) решение могло бы заключаться в том, чтобы украсить фильтром Rescue все вызывающие презентаторы, что позволит методу спасения перехватить это конкретное исключение.Применение фильтра ко всем докладчикам может быть относительно простым, если у вас есть общий базовый класс (вам просто нужно применить его к общему предку), в противном случае вам придется либо применить фильтр вручную, либо настроить маршрутизируемый стек сообщений (что немногосложнее).

Вы также можете создать своего рода "ленивую реализацию", используя прокси вместо реального сервиса.В этом прокси вы можете разрешить реальную службу WCF с помощью обработчика try / catch, открывая информационное окно в случае сбоя внутреннего разрешения.Мне не очень нравится это решение, потому что у вас нет подсказок по контексту вызова, поэтому вы можете показывать информацию пользователю, даже если она будет неуместной.

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

...