Dot Net-Bài1-.Net Framework
Tham khảo tài liệu 'dot net-bài1-.net framework', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Bài 1
Microsoft .NET Framework
Cài đặt Visual Studio.NET Beta 2
Visual Studio.NET nằm trong 3 CDs, gồm có 4 files:
• EN_VS_NET_BETA2_WINCUP.exe
• EN_VS_NET_BETA2_CD1.exe
• EN_VS_NET_BETA2_CD2.exe
• EN_VS_NET_BETA2_CD3.exe
Chạy EN_VS_NET_BETA2_WINCUP.exe để Unzip nó vào một folder trong một
harddisk (eg: E:\CD\WINCUP) .
Lần lượt chạy EN_VS_NET_BETA2_CD1.exe, EN_VS_NET_BETA2_CD2.exe và
EN_VS_NET_BETA2_CD3.exe để Unzip chúng vào chung một folder trong một
harddisk (eg: E:\CD ).
Việc Unzip files có thể rất lâu, bạn phải kiên nhẫn chờ cho đến khi nó kết thúc. Nếu
không, khi cài đặt có thể bị than phiền là thiếu files.
Kế đó, trước hết chạy Setup.exe của Windows Component Update như dưới đây, click
No khi Warning dialog hiện ra:
Tiếp theo, chạy Setup.exe của Visual Studio.NET:
Bạn nên có CPU Pentium III, 500MHz trở lên, với 256 MB RAM và ít nhất 10GB
Harddisk. Về OS bạn nên dùng Windows 2000 (Professional hay Server) hay
Windows XP. Lý do chính là các versions Windows nầy hổ trợ Unicode và có Internet
Information Server (IIS) hổ trợ ASPX để ta dùng cho ASP.NET.
Mở các Samples của QuickStart
Trước khi expand Samples của Quickstart bạn cần phải cài đặt IIS. Nếu chưa làm việc
ấy bạn bỏ CD của Windows2000 hay WindowsXP vào để install IIS component.
QuickStart Samples của .NET Framework chứa các giải thích căn bản và nhiều thí dụ.
Để expand các Samples doubleclick Webpage Starthere.htm như trong hình dưới
đây:
Khi trang Web của QuickStart hiện ra, click QuickStart, tutorials and samples rồi
sau đó theo chỉ dẫn từng bước.
Trang Framework SDK QuickStart Tutorials cho ta các bài tập của ASP.NET,
Windows Forms và How Do I...
Nhớ để nguyên các folders của Unzipped files (E:\CD, E:\CD\WINCUP), đừng delete
chúng, vì .NET sẽ còn dùng chúng. Ngoài ra, nếu sau nầy .NET bị corrupted vì conflict
với các application software khác, bạn có thể cài đặt .NET lại.
Giới hạn của Software Tools hiện giờ
Architect của application software hiện giờ có nói chung ba tầng (three tiers): tầng giao
diện (Presentation Tier), tầng giữa (Middle Tier) và tầng dữ kiện (Data Tier):
Presentation Tier: Trong desktop Client ta dùng VB6 và nối với middle tier qua
DCOM. Trong browser based Client ta dùng Javascript hay Java applet. Từ browser
based Client ta dùng http để nối với middle tier qua IIS/ASP (có thể dùng COM ở đây).
Middle Tier: Chứa các rules để validate data trên client và các business rules khác.
Ta dùng VB6 ở đây, nhưng cách triển khai COM với những Object Oriented
Programming concepts rắc rối hơn bình thường. Ta phải thiết kế sao cho các
components scale well (dùng cho mọi cở). Có khi dùng Microsoft Transaction Server
trên Windows NT hay COM+ Services trên Windows 2000. Lấp ráp các versions của
components là một thách thức lớn.
Nhiều khi middle tier còn nói chuyện với các database qua HTTP, ADO và CDO
(Collaborative Data Objects), .v.v..
Data Tier: Thường là relational database như Microsoft SQL Server hay Oracle. Ngoài
ra còn có Exchange hay các database xưa của mainframe.
Do đó ta thấy:
• Desktop tools không thích hợp cho Distributed System hay
Internet
Phải dùng nhiều thứ codes như VB6 Code, VBScript, JavaScript,
Dynamic HTML, Cascading Style Sheet, VC++, Stored
Procedures (TransactSQL trong SQLServer hay PLSQL trong
Oracle).
• Tùy thuộc quá nhiều vào central database: Ngay cả ADO dù là
tiện dụng cũng đòi hỏi Client luôn luôn connect với Server. Điều
nầy không thích hợp cho Internet applications, vì bản chất của
Internet là stateless (không giữ trạng thái), mỗi lần cần làm việc
mới connect lại một chút thôi.
• DLL "Hell": Các ActiveX cần phải được registered với Windows
Registry, chỉ có một version được chấp nhận. Nếu version mới
nhất của một DLL không compatible với các versions trước đó mà
applications trên máy đang cần thì có rắc rối.
Giới hạn của VB6
• Thiếu khả năng inheritance (thừa kế) và một số Object Oriented
features khác.
• Khả năng Error handling giới hạn: On Error Goto ..., On Error
Resume Next
• Nhiều khi cần phải gọi Windows API để làm những việc VB6
không hổ trợ: việc nầy không tự nhiên và đôi khi nguy hiểm.
• Không có multithreading: không thể đoán trước response của
code chạy trong các windows của cùng một VB6 application.
Ngay cả giải quyết vấn đề multitasking bằng Timers cũng không
đáng tin cậy.
• Không dễ dùng chung với các ngôn ngữ khác như VC++.
• Không tiện cho Web development: WebClass không thành công
lắm. Ít ai chịu cho ta cài ActiveX trên máy của họ.
.NET Framework
.NET được developed từ đầu năm 1998, lúc đầu có tên là Next Generation Windows
Services (NGWS). Nó được thiết kế hoàn toàn từ con số không để dùng cho Internet.
Viển tượng của Microsoft là xây dựng một globally distributed system, dùng XML
(chứa những databases tí hon) làm chất keo để kết hợp chức năng của những
computers khác nhau trong cùng một tổ chức hay trên khắp thế giới.
Những computers nầy có thể là Servers, Desktop, Notebook hay Pocket Computers,
đều có thể chạy cùng một software dựa trên một platform duy nhất, độc lập với
hardware và ngôn ngữ lập trình. Đó là .NET Framework. Nó sẽ trở thành một phần
của MS Windows và sẽ được port qua các platform khác, có thể ngay cả Unix.
Mặc dầu hãy còn là Beta, .NET Framework rất stable và Visual Studio.NET rất ít bugs,
có thể dùng cho software development ngay từ bây giờ. Hiện nay đã có một số sách
về lập trình .NET do Wrox và Oreilly xuất bản.
Các phần chính của Microsoft.NET Framework:
.NET application được chia ra làm hai loại: cho Internet gọi là ASP.NET, gồm có Web
Forms và Web Services và cho desktop gọi là Windows Forms.
Windows Forms giống như Forms của VB6. Nó hổ trợ Unicode hoàn toàn, rất tiện cho
chữ Việt và thật sự Object Oriented.
Web Forms có những Server Controls làm việc giống như các Controls trong
Windows Forms, nhất là có thể dùng codes để xử lý Events y hệt như của Windows
Forms.
Điểm khác biệt chánh giữa ASP (Active Server Pages) và ASP.NET là trong
ASP.NET, phần đại diện visual components và code nằm riêng nhau, không lộn xộn
như trong ASP. Ngoài ra ASP.NET code hoàn toàn Object Oriented.
Web Services giống như những Functions mà ta có thể gọi dùng từ các URL trên
Internet, thí dụ như Credit Card authorisation.
ADO.NET là một loại cache database nho nhỏ (gọi là disconnected database) để thay
thế ADO. Thay vì application connects vĩnh viễn với database mẹ qua ADO,
application trong .NET làm việc với portable database chỉ chứa một hai tables, là copy
từ database mẹ. Khi nào cần, portable database nầy (ADO.NET) sẽ được reconciled
với database mẹ để update các thay đổi. Hai tables trong ADO.NET có thể được
related nhau trong Master/Details relationship. Vì ADO.NET có chứa original data
lẫn data mới nhất nên Rollback trong ADO.NET rất dễ dàng và nhẹ ký.
XML được yểm trợ tối đa. Nằm phía sau ADO.NET là XML. XML có thể là Table of
records trong ADO.NET hay Tree of nodes trong DOM (Document Object Model).
IO được hổ trợ bằng toàn bộ Stream kể cả Memory Stream và
StreamReader/StreamWriter. Thêm vào là DataFormatting cho Serialisation để
chứa Object xuống binary file hay text file.
TCP/IP và http là hai protocols thông dụng nhất trong .NET, nhưng chúng làm việc
phía sau sân khấu giúp ta gọi một remote procedure (nằm trên computer khác) dễ
dàng như một local procedure. Kỹ thuật ấy gọi là Remoting.
Security hổ trợ Cryptography, Permissions và Policy.
Diagnostics cho ta Debug và Trace.
Threading rất tiện và đơn giản để implement Lightweight Process. Vấn đề Timing
trong .NET program rất linh động, hiệu quả và chính xác.
Việc thiết kế Common Language Runtime nhắm vào các mục tiêu chính sau đây:
• Việc triển khai đơn giản và nhanh hơn: developers sẽ dành thì giờ
quyết định ráp những software components nào lại với nhau
nhiều hơn là lập trình thật sự.
• Các công tác thiết yếu ("plumbing") như memory management,
process communication .v.v. được lo liệu tự động.
• Các công cụ hổ trợ rất đầy đủ (no more API): .NET Framework
Base classes rất phong phú cho file, network, serialisation, mã
hóa, XML, database, v.v..
• Cài đặt đơn giản và an toàn (no more DLL "hell"): chỉ cần xcopy
files, giống như thời vàng son của DOS. Lý do là .NET application
chạy trên .NET framework, một khi ta đã cài .NET framework vào
máy rồi thì có đầy đủ mọi .DLL cần thiết. Có lẽ trong tương lai
Microsoft cài .NET framework chung với Windows.
• Dùng cho từ WindowsCE đến Desktop, đến Web (scalability).
Metadata
Metadata là các dữ kiện cắt nghĩa cho ta biết về dữ kiện. Thí dụ XML Schema của
một XML file là metadata cắt nghĩa về data structure của data trong XML file. Chính
cái XML Schema cũng là một XML file. Các .NET application components, gọi là
Assembly, chứa rất nhiều metadata để cắt nghĩa về chính nó (self describing). Tìm
biết về một .NET application để có thể làm việc với nó thì gọi là Reflection.
Hổ trợ và phối hợp mọi ngôn ngữ lập trình
Common Language Runtime (CLR) là trung tâm điểm của .NET Famework, nó là
hầm máy để chạy các năng tính của .NET. Trong .NET, mọi ngôn ngữ lập trình đều
được compiled ra Microsoft Intermediate Language (IL) giống giống như byte code
của Java. Nhờ bắt buộc mọi ngôn ngữ đều phải dùng cùng các loại data types (gọi là
Common Type System) nên Common Language Runtime có thể kiểm soát mọi
interface, gọi giữa các components và cho phép các ngôn ngữ có thể hợp tác nhau
một cách thông suốt. Tức là trong .NET, VB.NET program có thể inherit C# program
và ngược lại một cách hoàn toàn tự nhiên.
Điều nầy chẳng những giúp các VC++ hay Java programmers bắt đầu dùng C# một
cách dễ dàng mà còn làm cùng một dự án với VB.NET programmers nữa.
Nếu VC++ linh động và hiệu năng hơn VB6, thì C# chẳng khác gì VB.NET. Bạn có thể
port C# code qua VB.NET code rất dễ dàng. Vì source code VC++ và Java gần gũi C#
hơn VB6 với VB.NET nên ngoài đời có nhiều C# code hơn VB.NET. Do đó, mặc dầu
hai ngôn ngữ VB.NET và C# đều ngang cơ nhau, nếu dùng C# bạn được lợi điểm có
nhiều source code sẵn và nhất là lâu nay người ta vẫn mang ấn tượng rằng VC++ hay
Java programmers mới thật sự là các cao thủ lập trình, và có khuynh hướng trả lương
các guru VC++/Java cao hơn VB programmers.
Khi chạy .NET application, nó sẽ được compiled bằng một JIT (JustInTime)
compiler rất hiệu năng ra machine code để chạy. Điểm nầy giúp .NET application
chạy nhanh hơn Java interpreted code trong Java Virtual Machine. JustInTime cũng
có nghĩa là chỉ phần code nào cần xử lý trong lúc ấy mới được compiled. IL code chạy
trong CLR đuợc nói là managed code.
.NET code có thể chạy chung với ActiveX, nhưng code trong ActiveX được gọi là
unmanaged code, tức là CLR không chịu trách nhiệm.
Ngoài việc allocation và management of memory, CLR còn giữ các refrerence đến
objects và đỗ rác (handle garbage collection), tức là thâu lại các mảnh vụn memory
khi chúng không cần dùng nữa. Trước đây, mỗi khi một DLL đuợc loaded vào memory,
system sẽ ghi nhận có bao nhiêu task dùng nó để khi task cuối cùng chấm dứt thì
system unload DLL và trả lại phần memory nó dùng trước đây để system dùng cho
chuyện khác. Chớ nếu allocate memory để dùng mà không nhớ dispose nó thì sẽ bị
memory leak (rỉ ), lần lần ta dùng hết memory, bị bắt buộc phải reboot OS. Nhưng bây
giờ .NET dùng một process độc lập để làm việc garbage collection. Cái phản ứng phụ
của việc nầy là khi ta đã Dispose một Object rồi, ta vẫn không biết chắc chắn chừng
nào nó mới thật sự biến mất. Vì garbage collector là một low priority process làm việc
trong background, chỉ khi nào system memory gần cạn nó mới nâng cao priority lên.
Dĩ nhiên, nếu muốn, ta có thể đòi hỏi system Dispose một Object ngay lập tức.
Assembly
.NET application xây dựng từ các assemblies. Mỗi assembly phải có một manifest.
Có thể nó nằm riêng trong một file hay nằm bên trong một module. Manifest chứa
những metadata sau đây:
• Tên và Version number của assembly
• Những assembly khác (kể cả version number của assembly) mà
assembly nầy tùy thuộc vào để chạy
• Types (classes và members) mà assembly nầy cho xuất khẩu
• Assembly nầy đòi hỏi điều kiện an ninh nào (security
permissions)
Manifest cho phép ta dùng hơn một version của assembly (tương đương với DLL trước
đây) cùng một lúc. Từ đây không còn register DLL nữa. Thay vào đó, ta chỉ cần copy
các assembly vào một subfolder /bin của chương trình chính.
Quyết định của bạn
Sau khi biết qua về .NET, câu hỏi bạn sẽ đặt ra là bạn có nên học lập trình trên .NET
hay không. Nói chung, về lập trình có nhiều tôn giáo như VC++/Java, VB6, Delphi
..v.v.. Bạn có thể chọn giữa C# và VB.NET. Đối với VB6 programmers, học lập trình
VB.NET sẽ mất một thời gian, nhưng không khó. Nên nhớ rằng .NET không phải chỉ
cho ta các ngôn ngữ lập trình, mà cả một hệ thống triển khai phần mềm chú trọng vào
mục tiêu hơn là cách thức. Các lợi ích .NET cống hiến cho bạn cách thực tiển là:
• Kỹ thuật .NET sẽ hoành hành trên giang hồ trong từ 5 đến 10
năm tới.
• Tính trung bình, lập trình trong .NET sẽ tiết kiệm thì giờ cho bạn
từ 25% đến 50% so với trước đây. Lý do là trong .NET bạn sẽ
nghiên cứu để dùng component nào nhiều hơn là thật sự viết
code. Hơn nữa, hầu như code nào bạn cần phải viết, bạn sẽ dùng
nó lại trong tương lai. Và bảo trì .NET code thì lại càng khỏe hơn
trước đây, vì chính bạn có viết bao nhiêu code (có thể bị bugs)
đâu mà bảo trì.
Do đó, có lẽ trong tương lai .NET programmers chúng ta sẽ ngủ đến 10 giờ sáng mới
thức, một ngày chỉ cần làm việc vài tiếng, rảnh rang để làm vườn, câu cá.
Trong bài tới ta sẽ học về Visual Studio.NET interface và bắt đầu viết thử một program
Demo .