2009-08-11 93 views
1

我一直在用ASP.NET構建網站一段時間。起初,我避免瞭解ASP.NET提供者模型的複雜性。相反,我在必要時使用了罐頭提供者,並且大量依賴於依賴注入框架來滿足我所有的其他需求。自定義提供程序,最佳實踐和配置Conflaguration

最近,我一直在爲ASP.NET編寫可插入的組件,當然爲了實現這一點,我還寫了很多基於自定義提供程序的解決方案。然而,我很快就明白了很多initialization code is being duplicated,這是一件壞事。

所以......

  1. 是否有已經出現了關於如何避免配置麪條代碼的最佳做法?
  2. 你有沒有建立或者有任何實例(base/helper類,自定義屬性,反射)來共享抽象的基本初始化代碼,所以構建自定義提供者更容易?

注:

請不要試圖把我送到Provider Toolkit網站。我已經用盡了這個資源,這就是爲什麼我轉向SO社區:)

+1

我想提供一些幫助,但是我對某些東西並不十分清楚。您正在爲ASP.NET編寫「可插入組件」,並且「當然」正在編寫大量基於自定義提供程序的解決方案......我不確定可插入組件的含義,或者爲什麼很明顯您會編寫不同的提供程序爲每個組件。你能否澄清你在做什麼?爲什麼你需要爲每個組件提供不同的提供者?我會看看我能否提供一些幫助。 – jrista 2009-08-28 15:52:15

+0

你見過ELMAH嗎?我一直在努力編寫跨領域的組件,而不是針對特定領域/應用程序。模塊,處理程序等......如果他們觸及任何類型的存儲,他們需要利用提供者模型才能真正可插拔(machine.config/web.config)。這不是問題,但我注意到你最終編寫了很多代碼來管理配置。我只是想知道是否有人做了這個足以提出一些最佳做法,或者甚至一些實用的方法來一般處理這種類型的管道代碼。 – Josh 2009-08-29 16:03:39

+0

這就像在Web環境中進行緩存的雙重鎖定模式。如果你對緩存做任何事情,你最終都會寫這些代碼,但是你通常會將它分解到一些實用程序類中來爲你做繁重的工作,所以你不需要再寫兩遍。在管理配置部分的時候,你最終會做很多事情,我只是想知道是否有任何模式專門針對這個問題出現。我只想盡可能地幹。 – Josh 2009-08-29 16:06:44

回答

0

我剛剛做了一個粗略的實現,而基本實現了成員和角色提供者,並且我沒有任何代碼重複所有!

我已經劃分到一切三個項目(加上測試):

  • 應用 - asp.net MVC應用程序。模型,控制器等
  • 基礎設施 - 國際奧委會和接口
  • Infrastructure.Web - 供應商

用戶和角色模型實現從基礎設施的接口和這些類網站註冊並在國際奧委會應用程序啓動。然後供應商要求IoC解決這些課程並做到這一點。這樣我可以使用相同的提供程序將事物添加到模型和用戶界面。我注意到的一個問題是,由「ASP.NET Configuration」按鈕啓動的Web不能使用提供程序,因爲安裝程序正在Application_Start中完成,「ASP.NET Configuration」是另一個Web 。儘管如此,我並不認爲這是一個問題。

+0

我特別試圖構建可插入任何ASP.Net項目的可插入組件。我很樂意使用IoC,但是這將排除單個DLL可以放入項目並工作的能力。 – Josh 2009-08-24 11:07:06

+0

在你的組件中包含一個迷你IoC,讓應用程序註冊一個在你的組件中實現一個接口的工廠,並公開構建相應類的方法。 – svinto 2009-08-24 11:58:42