搭建系統架構發現的三個Web.Config問題

來源:互聯網
上載者:User
web|問題 --------------------------------<特別聲明,此文檔是轉載,黃勇BLOG的文章>-----------------------------------
搭建系統架構發現的三個Web.Config問題

按照微軟的Duwamish7搭建一個Web系統架構,雖然說是一個現成的架構在旁邊,卻還是遇到一些煩人的小問題,其中有好幾個就是這個Web.Config搞的鬼!
1。搭建好的系統架構運行出錯,報什麼不能正確讀取ApplicationConfiguration配置節,但我的配置節部份完全是從Duwamish7中Copy過來,而且昨天還好好的啊?也不記得弄了多久,試了多少次自己也都覺得不可能的方法,都無功而返。最後,看著它發獃,一籌莫展時,一個念頭閃過:ApplicationConfiguration?是不是太多了。改成AppCofiguration,再試,天啊!竟然成功了!暈!
<configSections>
<section name="AppConfiguration" type="AVWeb.SystemFramework.ApplicationConfiguration, AVWeb.SystemFramework" />
</< SPAN>configSections>
2。也是運行報Web.Config某注釋行出錯,注釋如下:
-- Database type 0--Access 1--SqlServer -->
因為對這個不太熟悉,也是弄了很久才知道:<!-- -->中包含的注釋不能包含有"--"字元
3.想在頁面上調用Javascript寫的一個日曆控制項,其中有中文注釋,把js檔案包括在頁面中,但一運行,怎麼也不能正常裝載,老是報“未結束的字串常量”等錯誤,弄了半天之後,才明白是字元集搞的鬼!
Web.Config檔案中配置的字元集非常重要,也就是這個:<globalization responseEncoding="gb2312" requestEncoding="gb2312" />
如果程式中有中文,但Encoding又不是gb2312的話,可能很多莫名其妙的問題就來了!
Duwamish7學習筆記(二)
SystemFrameWork項目
  SystemFrameWork項目是一個能直接移植到別的應該程式的項目,可以不修改或很少的修改代碼而直接使用。
  項目主要為3個類。
1.ApplicationConfiguration類
此類為應用級的配置類,實現IConfigurationSectionHandler介面。與前面講的DuwamishConfiguration類實現方法類同。主要方法為Create(),OnApplicationStart(),ReadSetting()。
如果要使用此類,需於Global.asax的Application_OnStart事件中調用 ApplicationConfiguration.OnApplicationStart(Context);
public static void OnApplicationStart(String myAppPath)
{
appRoot = myAppPath;
System.Configuration.ConfigurationSettings.GetConfig("ApplicationConfiguration");
System.Configuration.ConfigurationSettings.GetConfig("DuwamishConfiguration");
System.Configuration.ConfigurationSettings.GetConfig("SourceViewer");
}
此方法通用調用ConfigurationSettingis.GetConfig()方法通過Web.Config中的取得對應的解析類,調用相應的Create()方法。如果沒有對應的配置解析類則可直接調用System.Configuration.NameValueSectionHandler類解析,GetConfig("SourceViewer")即是如此。
2.ApplicationAssert類
此類主要用來幫忙開發人員進行錯誤檢查,日誌記錄等。主要有Check(),CheckCondition(),GenerateStackTrace()三方法和LineNumber屬性。
[ConditionalAttribute("DEBUG")]應用於Check(),和GenerateStackTrace()方法,如果Debug常量被定義,此方法可以被調用。
3.ApplicationLog類
此類主要用來進行日誌記錄。
定義Error(1)、Warning(2)、Info(3)、Verbose(4)四個TraceLevel層級記錄日誌調試和跟蹤資訊.具體設定於Web.Config的配置節中定義。此類中所有方法均為static方法,是主要的為static void WriteLog(level,messageText)
如果寫入的TraceLevel不大於配置中定義的層級,則把對應的調試、跟蹤資訊按定義的層級寫入Windows 事件記錄中和定義的追蹤檔案中.
ApplicationLog類的建構函式聲明為private static,在對ApplicationLog類進行第一次調用時從設定檔中取得配置資訊進行初始化。

疑問:
1.在 static ApplicationLog()中運用了System.Threading.Monitor,保證多線程操作的安全性。為什麼對ApplicationLog要進行鎖的控制?
2.對System.Diagnostics命名空間中某些類理解不太清楚。
MSDN協助:
1.Monitor 類
ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemthreadingmonitorclasstopic.htm
2.System.Diagnostics 命名空間(提供特定的類,使您能夠與系統進程、事件記錄和效能計數器進行互動)
ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemdiagnostics.htm
posted on Friday, December 17, 2004 11:27 AM
Duwamish7學習筆記(三)
DataAccess項目
DataAccess項目中共4個類:Books類,Categories類,Customers類,Orders類.均實現了IDisposable介面。用來關閉活動的資料庫連接。
這是MS提倡的一種釋放非託管資源的Dispose模式。有關Dispose模式《.NET架構程式設計(修訂本)》的19章“自動記憶體管理(垃圾收集)”有精採的論述.
  類中通過調用預存程序,封裝了對4個業務對象的Select,Insert,Update操作。
  Select操作通過SqlDataAdapter的Fill方法填充對應的繼承自DataSet的業務實體類,返回給調用者。Books類和Categories類只有Select操作.
 Insert和Update操作通過一個private 函數返回InsertCommand或UpdateCommand對象。再於對外的的Public函數調用Private內建函式完成相應操作。Customers類中實現Insert,Update,Select操作,Orders類只有Insert操作。
在Customers類的LoadCustomerByEmail()方法中有對ApplicationAssert類的CheckCondition()方法調用
ApplicationAssert.CheckCondition(data.Tables[CustomerData.CUSTOMERS_TABLE].Rows.Count <= 1, "Integrity Failure: non-unique e-mail address", ApplicationAssert.LineNumber);
疑問:
1.資料訪問層感覺實現了商務邏輯層的內容,平時如LoadCustomerByEmail()等方法都是寫在商務邏輯層的。
2.是否有必要抽象出一個完全對資料庫操作的基類,實現對資料庫底層的操作?而不是在每個類如:Books,Customers中均一次次重寫如SqlCommand對象,Dispose模式?
Duwamish7學習筆記(四)
BusinessRules項目
1.Customer類
長見識了!在《Duwamish7學習筆記(三)》中還在想商務邏輯層寫些什麼東西。
校正,還是校正!每一行,每一列,包括類型和長度,想想自已在項目的校正,真的有點汗顏!
//----------------------------------------------------------------
// Function Validate:
// Validates and customer
// Returns:
// true if validation is successful
// false if invalid fields exist
// Parameters:
// [in] customerRow: CustomerData to be validated
// [out] customerRow: Returns customer data. If there are fields
//



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。