就是愛分享
.NET Framework概觀
簡單地講.NET Framework就是建置、部署及執行.NET應用程式及XML Web服務的環境。只要安裝VS 2008開發工具之後,所有相關的.NET開發環境自然具備,此時才能做.NET應用程式的開發與執行,下圖是.NET Framework基本的組成元件架構。



.NET Framework與ASP.NET有何不同?
  • .NET Framework主要包含兩大部分,第一部分是CLR(Common Language Runtime),它是.NET程式執行環境及引擎;第二部分是Class Library類別庫。
  • ASP.NET是眾多.NET應用程式類型的一種,它的用途是專注於網頁程式設計。ASP.NET會使用.NET Framework所提供的類別庫,因為.NET Framework類別庫是所有類型應用程式所共用的基礎設施。

所以.NET Framework是所有程式的基礎設施,而ASP.NET則是一種網頁開發的技術,只不過ASP.NET會使用.NET Framework所提供的類別庫,呼叫使用一堆現成的程式功能。

VS 2008偵錯工具
  • 設定程式偵錯之中斷點
  • 加入監看式視窗
  • 以DataTip檢視

物件導向程式
類別(class)與物件(Object)二者實為一體兩面的東西,類別是程式的設計藍圖,而物件則是將此藍圖具體化,轉變成真正能夠執行的程式單位實體,這個實體就叫做物件。

此外,類別是物件導向程式中的最小單位。

方法(Method)就是由一些C#程式碼所組成的區塊(Block),並賦予這個程式區塊一個名稱,這樣日後用名稱便可呼叫這個程式區塊,且可重複呼叫使用此方法。而事實上方法並不是什麼新鮮的概念,在許多程式語言中早就存在了相似的概念,如函式(function)、副程式(subroutine)、程序(procedure)、子程式(subprogram)等等,它們扮演的角色及功能其實是差不多的,只不過稱呼的方式有所差異罷了。

參數傳遞的三種類型
  • 傳值參數(By Value)
    傳值參數是將參數值傳入方法之中,而沒有傳出的動作。傳值參數有時也稱為輸入(in)參數,這是C#語言預設的參數傳遞機制。傳值參數的宣告語法如下:
    修飾詞 方法名稱(參數型別 參數名詞1,參數型別 參數名詞2…)
    {

    }

    使用傳值參數的語法:
    方法(參數);
  • 傳址參數(By Reference)
    傳址參數是將參數的記憶體位址傳入方法之中,讓方法來做運算處理,傳址參數的宣告語法如下:
    方法(ref 參數型別 參數名稱1,ref 參數型別 參數名稱2…)
    {

    }

    使用傳址參數的語法如下:
    方法(ref 參數);

  • 傳出參數(By Output)
    傳出參數指的是從方法傳出參數,並讓外部的變數來做接收這參數。宣告傳出參數的語法如下:
    方法(out參數型別 參數名稱1,out參數型別 參數名稱2…)
    {

    }

    使用傳出參數的語法如下:
    方法(out 參數);

微軟T-SQL三大類的陳述式(Statement)功能
  • 資料定義語言(Data Definition Language,DDL)
    可用來建立或刪除資料庫中的物件,主要是指Create、Drop與Alter三大類的指令。
  • 資料控制語言(Data Control Language,DCL)
    可用來改變user或role對資料庫的存取權限(Permission),主要的指令有Grant、Deny與Revoke三類。
  • 資料操作語言(Data Manipulation Language,DML)
    可用來進行資料的查詢與修改,其實就是指Select、Insert、Update與Delete四大類的指令。

多個資料表的SQL查詢語法
  • Inner Join(內部聯結)
  • Outer Join(外部聯結)。還可進一步細分為Left Outer Join、Right Outer Join、Full Outer Join三種。
  • Cross Join(交叉聯結)。
  • Self Join(自我聯結)。

Pages頁面之間的切換移轉技巧
  • Client端的頁面切換類型
    完全是在Client端進行,不必提交回伺服器處理,直接在前端就能進行網頁的切換移轉,常見的程式指令有:Location.href、Window.navigate()、Window.open()與四種。
  • Server端的頁面切換類型
    是依賴後端伺服器的指令來處理,通常由ASP.NET控制項所引發,進而將Request提交回伺服端,再由伺服端產生網頁切換移轉的指令,常見的程式指令有:Response.Redirect()、Server.Transfer()與跨網頁公佈(Cross-Page Posting)三種。

Web的狀態管理
因為以HTTP技術為基礎的Web Form網頁本身是無狀態(Stateless)的,意思是Web伺服器不會刻意去保留任何的連線或使用者資訊,所以必須隨時視需要,採用不同的狀態管理技術保存網頁資料,以便下次可以將資料再行取出運用,以下介紹四種較為常用的狀態管理技術:
  • Application應用程式狀態管理(Server端),其最大特色是儲存的狀態資料屬於全域的(Global)。因此可以在專案中加入一個Global.asax全域應用程式類別(Global Application Class),在Global之中可以設定整個Web專案層級的事件程式,故可在其中設定Application狀態值,供整個專案程式讀取使用Application狀態資料。
  • Session工作階段狀態管理(Server端),也是屬於可全域存取的,但與Application應用程式狀態最大不同處,在於Application是所有人共享同一份狀態資料,但Session則是每個使用者獨立使用一份Session狀態設定,不同使用者之Session狀態彼此不會互相干擾,並且還會進一步依附在單一的瀏覽器視窗畫面。因此Session狀態是以「單一使用者+單一瀏覽器視窗」為管理單位。
  • View State檢視狀態管理(Client端),以隱藏欄位(Hidden Field)形式,伴隨著網頁HTML碼一併傳送到使用者瀏覽器之中,故使用的是Client端的電腦資源。
  • 常用於Page或控制項保存狀態值資料,當然它也可以保存一般值,且是每個使用者皆有獨立的View State檢視狀態,不同使用者間彼此不共用View State檢視狀態資料。但必須注意只能在同一個Page頁面中儲存與讀取狀態資料,一旦有任何的網頁導向切換,或者是按下瀏覽器的上一頁/下一頁按鈕時,View State檢視狀態資料便會消失,在新的Page頁面亦不認得原本的View State檢視狀態設定值。
  • Cookie狀態管理(Client端),是用來儲存使用者瀏覽網站的一些資訊,其格式為純文字檔。而Cookie的作用在於可儲存使用者喜好等資訊,待下次使用者再次造訪時,就可以直接讀取其電腦中的Cookie檔設定值。不過,絕對不要在Cookie中儲存重要的敏感資料,例如使用者帳號、密碼、信用卡號碼等。

交易(Transaction)
若能於ADO.NET程式中加入資料庫交易的機制,補強數行交易程式碼,則可確保資料交易安全性可達100%保障,即便中間發生任何錯誤,都可以回復至交易前的資料狀態。

所謂的交易是指將一連串的工作視為個邏輯單元(Login Unit),而交易本身必定具備ACID的特性,所謂的ACID是指:
  • 不可部份完成性(Atomicity)
    交易必須將交易程式中所有的工作項目全部完成才算是一個完整交易。
  • 一致性(Consistency)
    交易完成時,全部的資料必須維持一致性的狀態。在關聯式資料庫(Relation Database)中,必須將所有的規則(Rule)套用於交易的修改,以維護所有的資料整合性(Integrity)。所有的內部資料結構,例如B型樹狀結構索引(B-tree Index)或是雙向連結串列(Doubly-Linked List),在交易終止時必須是正確的。
  • 隔離性(Isolation)
    並行的交易所作的修改,必須與其他任何並行的交易所做的修改隔離。交易所辨識的資料不是處於另一筆並行的交易修改資料之前的狀態,就是處於第二筆交易完成後的狀態,但是卻無法辨識中繼狀態,這稱為序列化能力(Serializability),因為這樣可以產生重新載入起始資料並重新執行一系列的交易,以便讓資料最終能夠與原始交易執行後的狀態相同的能力。
  • 耐久性(Durability)
    交易完成之後,其作用便永遠存在於系統之中。即使系統發生失敗的事件,但修改仍會保存。

<節錄 ASP.NET 3.5完美入門(使用C#) >
標籤: | edit post
0 Responses