2009-06-03 4 views
2

Что лучше всего подходит для создания обертки для вызова службы WCF? Я думаю, что нужно отслеживать все звонки в одном и том же месте, я думаю использовать этот код, это правильная идея?WCF Service Call Wrapper

RetType t = ServiceExecutionContext<IServiceChanel>.Execute(s=>s.GetServiceMethod()); 


Какие обертки вы используете в ваших корпоративных приложений?
Спасибо большое!

+2

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

+0

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

+0

Если бы это было «необходимо», то это было бы в рамках. Даже если бы это было в рамках, это могло бы быть сделано не через обертки. Серьезно, вы видели, как кто-то еще говорил о создании оберток для всего? Если нет, то ты первый. Думали ли вы, что вы, вероятно, первыми найдете что-то «необходимое»? Через три года, когда WCF был там? –

ответ

6

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

Here is a good MSDN article о том, как создать пользовательское поведение для служб WCF.

+0

Я прочитал статью, но я ничего не видел о проблеме службы WCF, которая могла бы выдать исключение в распоряжение. Вы бы рекомендовали оболочку службы для обработки этой неудачной реализации Dispose? –

+0

Мы просто используем конвенцию. Это хорошо известная ситуация и довольно легко отлаживается. Обертка - это опция, но использовать такое обертку так же просто, как и для вызова Dispose в блок catch try вместо используемого блока. просто мой .02 –

1

Если вам нужно, напишите Message Inspector.

WCF также есть message logging встроенный. По умолчанию вы можете легко записывать файл в файл System.Diagnostics.XmlWriterTraceListener, однако, если вам нужно написать журнал в другом месте (скажем, в базе данных), вы можете написать свой собственный trace listener.

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