У меня есть вопрос, касающийся использования интерфейсов, когда начинают работать неуправляемые ресурсы.
Предположим, у меня есть веб-сервис и сгенерированный клиент WCF. Сервисный контракт выглядит так:
[ServiceContract]
public interface ITestService
{
[OperationContract]
string GetData(int value);
}
На стороне клиента я использую внедрение зависимостей и привязываю интерфейс ITestService к TestServiceClient (генерируется с svcutil
). Однако, когда я создаю ITestService, и это действительно TestServiceClient, он должен быть расположен правильно, но клиенты не знают об этом.
Как вы справляетесь с этой проблемой?
Я думал о генерации прокси-классов следующим образом:
class TestServiceClientProxy : ITestService
{
#region ITestService Members
public string GetData(int value)
{
var client = new TestServiceClient();
bool success = false;
try
{
var result = client.GetData(value);
client.Close();
success = true;
return result;
}
finally
{
if (!success)
{
client.Abort();
}
}
}
#endregion
}
Однако я не думаю, что генерация кода была бы лучшим способом. Должен ли я использовать некоторые AOP Framework или DynamicProxy?
Заранее спасибо за помощь.