2013-04-11 44 views
1

我正在尋找一種將AOP概念應用於Web服務的方法。創建普通類很容易。將面向方面編程應用於Web服務

例MyClass的

通常情況下,你可以創建一個類的新實例這樣

MyClass NewClass = new MyClass(); 

爲了創建這個類與它使用AOP圍繞一個方面的實例,你通常有一個庫,您可以指定要應用的類類型和方面。

例MyClass的

MyClass NewClass = MyProxyClassManager.CreateNewAOPClass(typeof(MyClass)); 

然而,這證明了試圖在此爲連接到您的Web服務的類時,是具有挑戰性的。 我需要一種方法,而不是返回附加到Web服務的普通類,我可以返回基於Web服務類的代理類。

順便說一句:我正在應用AOP使用城堡項目。 http://www.castleproject.org/projects/dynamicproxy/

回答

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... 
    } 
}