2012年5月18日 星期五

.NET 中使用 COM 物件

Interoperation

Managed vs Unmanaged

  • Managed 程式碼:在執行階段(CLR)控制之下執行的程式碼,如 C#/VB.NET 等語言所開發的程式碼。
  • Unmanaged 程式碼:如 VB6/C/C++ 等語言所開發的程式碼。或者 COM 元件、ActiveX 介面及 Win32 API 函式,都是 Unmanaged 程式碼。

Interoperation 泛指由 Managed 程式碼與 Unmanaged 程式碼的互動。

COM 中使用.NET 元件

上一篇介紹如何在 .NET 中使用 COM ,這一篇將討論如何公開 .NET 元件給 COM 使用。

使用 Unmanaged 程式碼

除了舊有的 COM 元件是 Unmanaged 程式碼之外,在 Windows 系統底下還有許多的 Windows APIs 是 .NET Framework 沒有包裝的。 這個章節就是要來認識如何叫用 Windows APIs.

2012年5月17日 星期四

委派的演變

委派是一種定義方法簽章的型別,隨者 C# 版本的演變,它的使用方法也有些許的變化。 例如:具名方法,匿名方法,Lambda表示法。

2012年5月16日 星期三

LINQ 入門(三)關連性查詢

跨 Table 的關聯性查詢

直接使用物件模型中的關連

如果在資料庫中 Catalog 和 Documents 之間已經建立了關連性(外部索引鍵),在 linq 語法中,此時不需要在 Catalog 和 Documents 之間使用「聯結」(Join), 就可以直接從 Catalog 物件存取 Documents 物件。

2012年5月15日 星期二

LINQ 入門(一)

LINQ 簡介

MS 在 .NET Framework 3.5 版中,引進一個新的功能,稱之為 LINQ (Language Integrated Query)。 它是一種針對集合元素進行查詢的語言,如此一來,不管你使用何種資料來源,只要該資料是實作 IEnumerable 介面的物件,都可以使用單一的 LINQ 語法去查詢處理。

LINQ 使用類似 SQL 查詢的語法:
from 子句指定查詢來源;
where 子句設定篩選條件;
order by 子句做排序;
group by 子句對資料分組,
select 子句回傳資料。
而且,LINQ 查詢也支援複雜的 join 語法,這樣就可以在程式語言中,直接執行複雜的連結運算,以達到資料搜尋的目的。

2012年5月10日 星期四

傳遞參數

使用 ref 和 out 傳遞參數

ref vs out

refout 這二個關鍵字都是用來宣告使用傳址 (By Reference) 方式傳遞參數。使用上也都必須明確使用 ref 或 out 關鍵字。

二者之間最主要的差異在於:

  • 使用 ref 修飾詞的參數,其參數傳送前必須要有值。
  • 使用 out 修飾詞的參數,其參數回傳前必須要有值。

2012年5月9日 星期三

使用者的驗證與授權

存取控制清單

存取控制清單 (Access Control List, ACL)

前一章節中,我們透過 RBS 架構下的驗證與授權機制 (Principal Permission),達到限制特定使用者或群組對程式碼的存取。

存取控制清單 (ACL) 也是一種權限控管的機制,是作業系統用來管控資源的使用權限檔案,如:資料夾、印表機、註冊機碼等。 它是由存取控制項 (ACE) 所組成,每一項 ACE 指明了某物件是否可被存取。 例如,若想阻止系統管理員以外的任何人讀取某個檔案,就可以建立一個特定的 ACE,並套用到該檔案的存取控制清單 (ACL) 即可。

ACL 包含二種類型:

  • discretionary access control list (DACL):自主式存取控制清單
  • system access control list (SACL):系統存取控制清單

資料的加密與解密(1)-對稱金鑰加密演算法

當資料被永久性的儲存下來後或者於網路上傳輸的時候,都是很容易遭受攻擊的。 雖然有 CAS 可以用來控管應用程式的存取,或者 ACLs 可以用來保護資料,但是對有能力存取硬碟或網路的駭客而言,想要穿透軟體保護、截取資料或者修改資料是不難辦到的。 因此,對於一些隱私的資料,還必須使用加密的技術,進一步保護資料的完整性。 .Net Framewrok 提供數種加解密類別,可以用來支援各種型態的加解密需求,例如:對稱和非對稱加密、雜湊、數位簽章。

資料的加密與解密(2)-非對稱金鑰加密演算法

二、非對稱金鑰加密 ( Asymmetric Key Encryption )

對稱加密法有個不好的問題,就是加密子與解密子雙方都要共享同一個金鑰。 非對稱加密法主要就是要克服這個弱點,它將金鑰分成公開金鑰 (public key) 與私密金鑰 (private key),所以一般也稱公開金鑰加密法。 該演算法中的公開金鑰是對外開放的,私密金鑰必須妥善保存,絕不可外洩;而使用公開金鑰加密的資料,必須使用相對應的私密金鑰才能解密,反之亦同。 所以,對稱加密法,其操作過程,通常雙方必須先交換公開金鑰,然後發送端使用對方的公開金鑰將明文轉成密文,接收端收到密文後,再以自已的私密金鑰進行解密。

資料的加密與解密(3)-雜湊

三、使用雜湊(Hash)驗證資料的完整性

由書上截取二句話:

  • A hash is a checksum that is unique to a specific file or piece of data.
  • A hash is a one-way operation.

所以說,雜湊(Hash)是將一堆資料進行一個總和運算後所得到的一個唯一檢查碼,又稱為雜湊值 (Hash Value) 。
雜湊演算是單向作業,不可逆的,也就是無法將雜湊值反導出原始資料,不像先前的加密作業,還可以解密回去。

資料的加密與解密(4)-數位簽章

當我們去銀行提款時,通常都需要蓋個章,用以保證這是你本人送交的東西。 在網路上傳送資料給對方,為了確保這資料是由你本人送出的,所以也需要在資料中蓋個章,這就是「數位簽章」的概念。 數位簽章相當於個人之印鑑,憑證相當於此印鑑之印鑑證明。電子化網路環境下,可利用憑證來驗證個人之數位簽章,以確認個人身分。