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ônngủ ầ ự ữ ữ l p trình h p nh t đ t o ra các d ch v Web.ậ ợ ấ ể ạ ị ụ . 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& quot; 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. .NET& quot;. 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