成本

2011-04-27 35 views
1

什麼是使用動態代理的成本是多少?成本

我不想用接口實現混淆我的項目,所以我正在考慮使用由LinFu,Castle,Unity等第三方庫創建的動態代理。他們是否爲每個接口生成一個實例,每次通話。

這是一個Web應用程序,所以什麼從長遠來看性能問題。

我也使用EF 4.1(CTP5的時刻),所以如果不創建代理類本身,這使我不知道我是否可以使用EF自身的動態代理創建工具。

P.S.是的,我的接口是由具體類以及其他接口和基類實現的,但有時候我只需要它的接口部分而不是具體類的附加東西。

所有接口都聲明EF4.1 POCO的只是一些部分。所以只有getters和setter。

回答

0

看起來你需要更多的存根,而不是動態代理。也許你可能想看看Moq。據我所知,每次創建模擬時都會創建一個不同的實例,但不知道內部是否保留某種類型的緩存。請注意,因爲它是一個針對單元測試的庫,所以這種使用可能是非正統的。

1

開源Impromptu-Interface需要c#4.0,併爲您使用的每個接口和實現類型組合創建一個輕量級代理類型,並保存它們的緩存。

因此,創建一個圍繞給定實現的接口代理(無論您如何設置ExpandoObject計算爲一種類型)都會產生代理類型的一次性成本,每次創建代理類型都需要一次Activator.CreateInstance代理(這是不壞),併爲每個調用會有一個靜態調用它是你必須與出代理+這是非常優化的感謝微軟DLR動態調用什麼。