2.16.2006

.NET 2.0 And Configuration 2/4

接下來我們來看針對使用者範疇的三種狀況下,我們的使用者所選定的配色資料到底會跑到哪裡去。

在.NET 2.0 裡面,檔案會放在這個路徑下
\\__\\user.config

我們就解釋其中幾項代表的意義,之後我們會來弄個實作來驗證Configuration System。

首先是,在Windows XP裡,指的就是C:\Documents and Settings下你所登入的User名字的資料匣,當然啦,如果你的系統碟不在C,或是Documents And Setting資料匣路徑有改過,你就要找你所設定的位置。 在你的應用程式裡的這個AssemblyCompanyAttribute,會帶到這個地方。__ 這個就要看你的程式了。 就是程式的版本,這個後續我們會討論到版本變動的問題。

這個路徑不能改變!除非你自己實作自己的SettingProvider,SDK裡面有相關的資訊。

那為甚麼這個路徑不能改變呢?Prabhu並沒有解釋很多,不過這裡倒是有一個面向可以考慮一下。

假設現在公司裡有架AD環境,使用者可以在任何電腦裡面登入,但都會取用他本身所屬的檔案與設定,像我的文件阿!我的最愛之類。那是因為公司裡有一台AD伺服器,會做這些設定的管理。現在問題來了,公司裡的每台電腦的設定與作業系統不一定會相同,當Tom的資料在他本機裡面是放在C:\Documents And Setting\Tom裡面,但是當跑到秘書Emily的電腦時,路徑卻變成D:\WINNT\Profile\Tom...難怪路徑會是固定的形式。至少現階段我打EA Sport的電動,它們的設定檔路徑就是設成這個格式的。

所以就這個面向說來,這應該是作業系統架構的概念上的問題,並不是.NET 2.0 的 Configuration System的問題。不過關於上述的Roaming profile的東西,有一篇關於它的好文章,倒是一定要看一下。http://blogs.msdn.com/oldnewthing/archive/2005/06/30/434209.aspx

2.06.2006

.NET 2.0 And Configuration 1/4

在.Net Framework的時候我是從來沒用過Configuration,一直到了Enterprise Library出來,我才開始使用。就算到了現在,我對Configuration還是不輕易使用,畢竟我還是覺得IO的動作能少就少,講到這個,我還撥不出空去看是不是.Net 2.0之後,Configuration是不是有Cache的動作。

不過老實講,Configuration是有好處的,至少不用透過複雜又難搞的Register來做動作,就只要放在確定的地方,在某種層面來看,Configuration的出現,算是對.Net 宣稱的XCOPY部署作一個良性的相對應。雖然有點馬後炮,不過要是用過Register應該或多或少被搞到一陣子。

Configuration在.NET 2.0做了一些個改變,可以把它想做是把Enterprise Library的Configuration Block吸收進來,然後做了些改進。

之前的Configuration分成Machine.config與ApplicationName.exe.config兩塊,現在分的比較有架構的感覺(不過也有點制式)。

舉個例子來說,現在的Configuration分成兩個部份,假設我們建立了一個程式,這個程式呢,有一些設定可以由使用者變動的,假設說是應用程式的配色方式,當然啦,我們也會有一個預設的設定值。現在我們考慮將這些設定值交給Configuration來儲存使用,首先,Configuration可以分成兩部份,一部分是所謂的應用程式的範疇,另一部份就是使用者的範疇。簡單的說,應用程式的範疇就是預設值,就是應用程式出廠的設定值,可以放在Config檔一起出廠;而使用者的範疇就是使用者自己設定自己喜歡的配色後,所儲存的設定檔。

因為預設值是不給使用者改變的,也就是說在Runtime是不能由應用程式作改變的,所以它是唯讀的。

那使用者的範疇又劃分成none,PerUserRomaing,PerUserRoamingAnaLocal,第一個就是不管他,交給API去處理,後面兩個就是以前.NET 1.0、.NET 1.1沒有的東西了。由字面上來看我們可以知道PerUserRoaming指的是漫遊使用者,第二個就泛指兩者;如果你的Application會在AD的環境下使用,卻對漫遊使用者完全沒頭緒的話,請先研究一下AD。不過我通常會把第二個當作Local User。