NGÔN NG C# V I KI N TRÚC .NETỮ Ớ Ế
10/08/2007 08:17 AM
Tôi mu n nh n m nh r ng đ ng bao gi xem xét ngôn ng C#ố ấ ạ ằ ừ ờ ữ
m t cách tách bi t, nó luôn đ ng hành v i "B khung .NET". C#ộ ệ ồ ớ ộ
là m t trình biên d ch h ng .NET, nghĩa là t t c các mã c aộ ị ướ ấ ả ủ
C# luôn luôn ch y trên trên môi tr ng .NET Framework.ạ ườ
Đi u đó d n đ n 2 h qu sau: ề ẫ ế ệ ả
* C u trúc và các l p lu n C# đ c ph n ánh các ph ng pháp lu nấ ậ ậ ượ ả ươ ậ
c a .NET ng m bên d i. ủ ầ ướ
* Trong nhi u tr ng h p, các đ c tr ng c a C# th m chí đ cề ườ ợ ặ ư ủ ậ ượ
quy t đ nh d a vào các đ c tr ng c a .NET, ho c th vi n l p c sế ị ự ặ ư ủ ặ ư ệ ớ ơ ở
c a .NET. ủ
Chính b i t m quan tr ng c a .NET, nên các b n c n ph i bi t sở ầ ọ ủ ạ ầ ả ế ơ
qua v .NET tr c khi đi vào ngôn ng C#. Đây cũng chính là m cề ướ ữ ụ
đích c a ch ng này. ủ ươ
Chúng ta s tìm hi u xem chuy n gì s x y ra khi mã c a các ngônẽ ể ệ ẽ ả ủ
ng h ng .NET (bao g m C#) đ c biên d ch và th c thi. Đây làữ ướ ồ ượ ị ự
m t lĩnh v c r ng, chúng ta s tìm hi u kĩ h n v Microsoftộ ự ộ ẽ ể ơ ề
Intermediate Language (MS-IL), ngôn ng trung gian trong .NET mãữ
c a các ngôn ng khác đ u ph i đ c biên d ch v ngôn ng nàyủ ữ ề ả ượ ị ề ữ
tr c khi th c thi. C th chúng ta s tìm hi u xem cách th c màướ ự ụ ể ẽ ể ứ
MS-IL v i ph n dùng chung Common Type System (CTS) vàớ ầ
Common Language Specification (CLS) có th cung c p cho chúngể ấ
ta s t ng ho t gi a các ngôn ng h ng .NET. Chúng ta cũng sự ươ ạ ữ ữ ướ ẽ
trình bày các ngôn ng bi t .NET khác bao g m VB và C++. ữ ế ồ
Sau đó chúng ta s xem xét các đ c tr ng khác c a .NET, bao g mẽ ặ ư ủ ồ
các assembly, các namespace, và th vi n l p c b n c a .NET.ư ệ ớ ơ ả ủ
Chúng ta s k t thúc ch ng này b ng vi c li t kê v n t t v cácẽ ế ươ ằ ệ ệ ắ ắ ề
lo i ng d ng mà chúng ta có th t o ra trong C#.ạ ứ ụ ể ạ
M i quan h gi a C# và .NET: ố ệ ữ
C# là m t ngôn ng l p trình m i, và đ c bi t đ n v i hai l i chào: ộ ữ ậ ớ ượ ế ế ớ ờ
* Nó đ c thi t k riêng đ dùng cho Microsoft's .NET Frameworkượ ế ế ể
(M t n n khá m nh cho s phát tri n, tri n khai, hi n th c và phânộ ề ạ ự ể ể ệ ự
ph i các ng d ng) ố ứ ụ
* Nó là m t ngôn ng hoàn toàn h ng đ i t ng đ c thi t k d aộ ữ ướ ố ượ ượ ế ế ự
trên kinh nghi m c a các ngôn ng h ng đ i t ng khác. ệ ủ ữ ướ ố ượ
M t đi u quan tr ng c n nh C# là m t ngôn ng đ c l p. Nó đ cộ ề ọ ầ ớ ộ ữ ộ ậ ượ
thi t k đ có th sinh ra mã đích trong môi tr ng .NET, nó khôngế ế ể ể ườ
ph i là m t ph n c a .NET b i v y có m t vài đ c tr ng đ c h trả ộ ầ ủ ở ậ ộ ặ ư ượ ỗ ợ
b i .NET nh ng C# không h tr và b n cũng đ ng ng c nhiên khiở ư ỗ ợ ạ ừ ạ
có nh ng đ c tr ng C# h tr mà .NET không h tr (ch ng h nữ ặ ư ỗ ợ ỗ ợ ẳ ạ
nh quá t i toán t ) ư ả ử
Đ t o đ c nh ng ng d ng mang tính hi u qu cao, chúng ta c nể ạ ượ ữ ứ ụ ệ ả ầ
tìm hi u k h n v .NET:ể ỹ ơ ề
1. Các D ch v c a .NET:ị ụ ủ
Đ th c thi mô hình .NET, m t vài kh i h p nh t (building block) cể ự ộ ố ợ ấ ơ
s ph i đ c đ t đúng ch (các block này đ nh rõ các d ch v Webở ả ượ ặ ỗ ị ị ụ
đ c xây d ng nh th nào). Các d ch v này c g ng đ tr giúpượ ự ư ế ị ụ ố ắ ể ợ
các nhà phát tri n xây d ng các ng d ng .NET. Microsoft đ nhể ự ứ ụ ị
nghĩa các d ch v kh i h p nh t .NET sau đây:ị ụ ố ợ ấ
- Authentication: Khi s d ng các công ngh Authenticationử ụ ệ
(ch ng th c) cũng nh Passport (h chi u) c a Microsoft các nhàứ ự ư ộ ế ủ
phát tri n t o ra các d ch v cho riêng mình và b o v các d ch vể ạ ị ụ ả ệ ị ụ
nh mong mu n.ư ố
- Messaging: Các đ c tính Messaging (truy n thông đi p)ặ ề ệ
c a .NET đ c xây d ng trên MSN Hotmail Web ã d a vào d ch e-ủ ượ ự ự ị
mail, Microsoft Exchange Server 2000, và Instant Messaging (truy nề
thông đi p t c thì). Nh ng h th ng truy n thông đi p này và nh ngệ ứ ữ ệ ố ề ệ ữ
đ c tính có th đ c phân tán đ n b t kì thi t b nào do tính khôngặ ể ượ ế ấ ế ị
ph thu c n n t ng c a chúng.ụ ộ ề ả ủ
- Personalized Experience (kinh nghi m cá nhân): .NET choệ
ng i dùng nhi u ki m soát h n thông qua các qui t c x lý d li uườ ề ể ơ ắ ử ữ ệ
và quy n u tiên mà nó xác đ nh rõ d li u ph i đ c di chuy n vàề ư ị ữ ệ ả ượ ể
qu n lý nh th nào.ả ư ế
- XML (Extensible Markup Language): XML đ c xem nh m tượ ư ộ
ngôn ng chung mà nó cho phép d li u đ c di chuy n t d ngữ ữ ệ ượ ể ừ ạ
này sang d ng khác trong khi b o trì tính toàn v n c a nó. Cùng v iạ ả ẹ ủ ớ
SOAP[5], XML có th cung c p m t d ch v linh ho t đ qu n lý vàể ấ ộ ị ụ ạ ể ả
đi u khi n d li u. ề ể ữ ệ
M t trong nh ng th c thi (implementation) đ u tiên đ c đ ngh c aộ ữ ự ầ ượ ề ị ủ
d ch v .NET là Microsoft HailStorm. HailStorm là m t d ch v trungị ụ ộ ị ụ
tâm-ng i dùng (user-centric), nó cung c p cho nh ng ng i-dùng-ườ ấ ữ ườ
cu i kh n ng l u tr thông tin cá nhân nh các cu c h n, l ch hayố ả ǎ ư ữ ư ộ ẹ ị
các thông tin tài chính. K t qu vi c m t ng i dùng đ ng kí d ch vế ả ệ ộ ườ ǎ ị ụ
này là thông tin đ c chia s v i các ng d ng khác (thông tin dùngượ ẻ ớ ứ ụ
chung) theo ý mu n c a h , và nó tr thành m t ph n c a ng iố ủ ọ ở ộ ầ ủ ườ
dùng khi đi u khi n các ho t đ ng trên Web. Trong th i gian t i b nề ể ạ ộ ờ ớ ạ
s đ c ti p c n các d ch v t ng t đ c đ xu t trên Web b iẽ ượ ế ậ ị ụ ươ ự ượ ề ấ ở
các công ty bán cho b n thông qua vi c đ ng kí vào d ch v c a h .ạ ệ ǎ ị ụ ủ ọ
Nh chúng ta đã th y .NET đã chu n b cho vi c s d ng m t sư ấ ẩ ị ệ ử ụ ộ ố
công ngh c a Microsoft mà nó b t đ u thích nghi và đ c s ch pệ ủ ắ ầ ượ ự ấ
nh n b i c ng đ ng tin h c và Internet.ậ ở ộ ồ ọ
2. Các Thành Ph n c a .NET Framework:ầ ủ
a. Th c thi ngôn ng chung CLR (Common Language Runtime)ự ữ
T t c các ngôn ng l p trình đ u có m t runtime (thi hành),ấ ả ữ ậ ề ộ
m t d ch v ho t đ ng cùng v i ngôn ng l p trình. Commonộ ị ụ ạ ộ ớ ữ ậ
Language Runtime (CLR là b thi hành ngôn ng chung) là m tộ ữ ộ
thành ph n c t lõi (c b n nh t) c a .NET. Nó cung c p n n c sầ ố ơ ả ấ ủ ấ ề ơ ở
mà trên đó các ng d ng cho. NET đ c xây d ng. CLR qu n líứ ụ ượ ự ả
nhi u khía c nh c a chu trình phát tri n theo quan đi m c a ng iề ạ ủ ể ể ủ ườ
phát tri n. Ch ng h n, khi làm vi c v i COM, các nhà phát tri n ph iể ẳ ạ ệ ớ ể ả
l u tâm đ n v n đ qu n lí b nh , nh ng s kh i t o lu ng (thread)ư ế ấ ề ả ộ ớ ữ ự ở ạ ồ
và lo i b nó, các thành ph n b o m t và nh ng v n đ t ng t .ạ ỏ ầ ả ậ ữ ấ ề ươ ự
Đi u đó gây ra m t s khó kh n do các nhà phát tri n ph i tiêu t nề ộ ố ǎ ể ả ố
quá nhi u th i gian vào các v n đ này. B thi hành ngôn ng chungề ờ ấ ề ộ ữ
CLR qu n lí t t c các v n đ n y sinh đó m t cách t đ ng và gi iả ấ ả ấ ề ả ộ ự ộ ả
phóng cho các nhà phát tri n t p trung vào vi c x lý giao d ch logic.ể ậ ệ ử ị
CLR cung c p m t runtime chung mà nó đ c s d ng v i t t cấ ộ ượ ử ụ ớ ấ ả
các ngôn ng . Thành ph n này làm cho .NET có m t kh n ng "hữ ầ ộ ả ǎ ỗ
tr m i ngôn ng " (language-free).ợ ọ ữ
b. Các l p l p trình h p nh t (Unified Progrgamming Classes)ớ ậ ợ ấ
Nh ng th vi n l p l p trình hay các giao di n l p trình ngữ ư ệ ớ ậ ệ ậ ứ
d ng (API) đ c s d ng b i nhi u ngôn ng khác nhau. Đ sụ ượ ử ụ ở ề ữ ể ử
d ng nh ng ngôn ng l p trình khác nhau, các nhà phát tri n nghiênụ ữ ữ ậ ể
c u các b th vi n l p khác nhau đ làm vi c v i các ngôn ng l pứ ộ ư ệ ớ ể ệ ớ ữ ậ
trình khác nhau. V n đ này đã làm ch m quá trình phát tri n ngấ ề ậ ể ứ
d ng và làm cho công vi c phát tri n tr nên t ng t và lãng phí kháụ ệ ể ở ẻ ắ
nhi u th i gian. .NET cung c p các l p l p trình h p nh t v i m t bề ờ ấ ớ ậ ợ ấ ớ ộ ộ
API dùng chung cho m i ngôn ng l p trình. Các ngôn ng có thọ ữ ậ ữ ể
t ng tác v i m t ngôn ng khác và các l p l p trình h p nh t nàyươ ớ ộ ữ ớ ậ ợ ấ
cho phép các nhà phát tri n l a ch n b t c ngôn ng nào mà hể ự ọ ấ ứ ữ ọ
mu n trong khi ch c n duy nh t m t b API mà thôi.ố ỉ ầ ấ ộ ộ
c. ASP.NET (Active Server Pages .NET)
ASP.NET đ c s d ng chung v i các l p l p trình mà nó cóượ ử ụ ớ ớ ậ
th t o các ng d ng Web m t cách d dàng cho ng i l p trình.ể ạ ứ ụ ộ ễ ườ ậ
ASP.NET cung c p cách truy c p giao di n HTML chung và nó ch yấ ậ ệ ạ
trên ch ng trình máy ph c v nh ng th hi n k t qu thông quaươ ụ ụ ư ể ệ ế ả
HTML (ví d nh text box ch ng h n). Giao di n ASP.NET làm choụ ư ẳ ạ ệ
vi c phát tri n các ng d ng Web tr nên nhanh h n do b i các đ iệ ể ứ ụ ở ơ ở ố
t ng đi u khi n chung này. Nh m t k t qu (c a) các l p l p trìnhượ ề ể ư ộ ế ả ủ ớ ậ
chung và nh ng đ c tính chu n c a ASP.NET, các nhà phát tri nữ ặ ẩ ủ ể
tiêu t n ít th i gian h n khi vi t các mã m i và c n nhi u th i gianố ờ ơ ế ớ ầ ề ờ
h n khi s d ng các mã đã có. ASP.NET đ c s d ng ph n trênơ ử ụ ượ ử ụ ở ầ
c a hai thành ph n th c thi ngôn ng chung CLR và các ngôn ngủ ầ ự ữ ữ
l p trình h p nh t đ t o ra các d ch v Web.ậ ợ ấ ể ạ ị ụ