Есть ли.net-эквивалент сервлета инициализации Java?
Есть ли.net-эквивалент сервлета инициализации Java?
Пока мы на это, эквивалент фильтра?
И, наконец, если что-то существует (фильтры), могут ли они выполняться до / после запроса к службе WCF?
2 ответа
Хотя вы можете использовать событие OnStart HttpApplication для перехвата при запуске службы, а также IHttpModule для перехвата запросов, это неправильный способ выполнения этих перехватов в WCF.
Единственная причина, по которой эта рекомендация работает, заключается в том, что вы размещаетесь в IIS и используете специфические для IIS хуки. Однако службы WCF могут быть размещены где угодно, и вы можете обнаружить, что вы перемещаете свою службу в процесс службы, а также меняете привязки (вы можете использовать net-tcp вместо http, например, в этом случае, как бы вы читать содержимое, поступающее через реализацию IHttpModule? Вы не смогли бы), что привело бы к разрыву этих хуков.
Тем не менее, в идеале вы должны выполнить любую инициализацию перед созданием экземпляра ServiceHost. Тем не менее, поскольку у вас нет доступа к экземпляру ServiceHost в WCF в IIS, вам придется реализовать пользовательский ServiceHostFactory и указать эту фабрику в файле SVC (см. Раздел "Использование пользовательского ServiceHost в IIS или WAS"). Принимая этот подход сделает его портативным.
Что касается перехвата вызовов, вы можете сделать это на клиенте и на стороне службы. На стороне клиента вы бы реализовали IClientMessageInspector, а на стороне сервера вы бы хотели IDispatchMessageInspector (я полагаю, вам нужен последний).
Чтобы "внедрить" этот инспектор на стороне службы, вы должны будете использовать поведение конечной точки (которое будет применяться к конкретной конечной точке службы, реализацию IEndpointBehavior) или поведение службы (которое применяется ко всем конечным точкам на сервис, через реализацию интерфейса IServiceBehavior).
Именно с помощью этих реализаций вы обращаетесь к ServiceEndpoint (для поведения конечных точек) или к классу ServiceDescription, чтобы применить реализацию вашего инспектора, или к любой из других хуков, доступных в WCF.
Вы можете прочитать "Написание инспектора сообщений WCF" Паоло Пиалорси, чтобы получить полное представление о том, как собрать все это вместе, и дать вам представление о нестандартном поведении в WCF.
Ну, я не знаю Java-фреймворки, но по звукам вы можете искать Global.asax HttpApplication.Application_OnStart
событие для инициализации.
А фильтры? Пытаться IHttpModule
,