我正在寻找一种将AOP概念应用于Web服务的方法。创建普通类很容易做到这一点。
示例MyClass
通常,您可以通过这种方式创建类的新实例
MyClass NewClass = new MyClass();
要使用AOP创建此类的实例以及它周围的方面,您通常会有一个库,您可以指定类类型和要应用的方面。
示例MyClass
MyClass NewClass = MyProxyClassManager.CreateNewAOPClass(typeof(MyClass));
然而,在为Web服务附加的类尝试此操作时,这证明是具有挑战性的。 我需要一种方法,而不是返回附加到Web服务的普通类,我可以返回基于Web服务类的代理类。
BTW:我正在使用城堡项目申请AOP。 http://www.castleproject.org/projects/dynamicproxy/
答案 0 :(得分:0)
我不确定您的完整技术堆栈,但使用WebAPI,您可以创建自定义DelegatingHandler
来包装服务调用。有关详细信息,请参阅the official website
示例处理程序:
public class MessageHandler1 : DelegatingHandler
{
protected async override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
Debug.WriteLine("Process request");
// Call the inner handler.
var response = await base.SendAsync(request, cancellationToken);
Debug.WriteLine("Process response");
return response;
}
}
处理程序注册
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MessageHandlers.Add(new MessageHandler1());
// Other code not shown...
}
}