Есть ли .net-эквивалент сервлета инициализации Java? - PullRequest
1 голос
/ 09 ноября 2010

Существует ли .net-эквивалент сервлета инициализации Java?

Пока мы на этом, эквивалент фильтра?

И, наконец, если упомянутая вещь существует (фильтры), могут ли они работать до / после запроса к службе WCF?

Ответы [ 2 ]

1 голос
/ 10 ноября 2010

Хотя вы можете использовать событие OnStart HttpApplication для перехвата при запуске службы, а также IHttpModule для перехвата запросов , это , а не правильным способомвыполнить эти перехваты в WCF.

Единственная причина, по которой рекомендация работает, заключается в том, что вы размещены в IIS и используете специфичные для IIS перехватчики.Однако службы WCF могут быть размещены где угодно, и вы можете обнаружить, что вы перемещаете свою службу в процесс службы, а также меняете привязки (вы можете использовать net-tcp вместо http, например, в этом случае, как бы вычитать содержимое, поступающее через реализацию IHttpModule? Вы не могли бы), что могло бы привести к разрыву этих хуков.

При этом в идеале вы должны выполнить любую инициализацию перед созданием ServiceHost пример.Однако, поскольку у вас нет доступа к экземпляру ServiceHost в WCF в IIS, вам придется реализовать пользовательские ServiceHostFactory и , указывающие эту фабрику в файле SVC (см. Раздел, озаглавленный ИспользованиеCustom ServiceHost в IIS или WAS). При таком подходе он станет переносимым.

Что касается перехвата вызовов, вы можете сделать это на клиенте и на стороне службы.На стороне клиента вы бы реализовали IClientMessageInspector , а на стороне сервера вы хотите IDispatchMessageInspector (я полагаю, вы хотите последнее).

Для того, чтобы «внедрить»этот инспектор на стороне службы, вы должны будете использовать поведение конечной точки (которое будет применяться к определенной конечной точке службы, реализацию IEndpointBehavior ) или поведение службы (которое применяется ко всем конечным точкам насервис, через реализацию интерфейса IServiceBehavior ).

Именно через эти реализации вы бы посмотрели на ServiceEndpoint (для поведения конечных точек) или Класс ServiceDescription для применения реализации вашего инспектора или любых других хуков, доступных в WCF.

Вы можете прочитать "Написание инспектора сообщений WCF" Паоло Пиалорси дляполное пошаговое руководство о том, как собрать все это вместе и дать вам представление о нестандартном поведении в WCF..

1 голос
/ 09 ноября 2010

Ну, я не знаю java-фреймворков, но по звукам вы можете искать событие Global.asax HttpApplication.Application_OnStart для инициализации.

И фильтры?Попробуйте IHttpModule.

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