Bài 8
Nhng chc năng mi trong giao din ca s ca
VB.NET (phn I)
Xin nhc li là .NET Framework cho ta ba cách để user giao din vi chương trình áp
dng, đó là Windows Forms (có khi được gi tt là WinForms), Web Forms và
Console applications. Ln lượt chúng ta s hc qua c ba th ny.
Ngoài ra, k t đầu tháng hai 2002, thy Vũ Năng Hin s viết mt lot bài riêng v
ASP.NET. ASP.NET là hu thân ca ASP (Active Server Pages), cái framework để ta
lp trình trên Webserver. Microsoft dùng ASP để thay thế cgi-Perl (Common
Gateway Interface - Practical Extraction and Report Language), mt ngôn ng
lp trình rt thnh hành trên các Unix-based Webserver. Sau ny chính Microsoft
mướn người ta port Perl qua WindowsNT.
Mt chương trình ASP gm có nhiu trang ging như trang Web (HTML) nhưng bên
trong có nhng mnh chương trình viết bng VBScript hay JavaScript (tht ra script
nào cũng được, k c PerlScript) nm nhiu nơi. Các mnh Script ny có th truy
cp cơ s d liu để sa đổi hay ly d kin ra đ hin th ti ch y (nơi mnh Script
nm trong trang ASP) đ to trang Web kết qu.
Trong ASP.NET, tt c các mnh chương trình Script y được ly ra riêng, đ chung
vi nhau và được viết li dưới dng ngôn ng thun túy VB.NET hay C#. Phn coding
đó được gi là code behind (code nm phía sau) và rt ging như các Event
Handling Sub ta viết trong VB.NET cho Windows Forms.
Trong tương lai, khi bàn đến Web Forms ta ch hc tng quát v ASP.NET và nht là
ch dùng VB.NET trong các chương trình đơn gin.
S quan trng ca Windows Forms ?
Windows Forms là cách hin th màn nh ti tân hơn Win32 bình thường. K thut
nm phía sau Windows Forms trước đây được phát trin cho Windows Foundation
Classes (WFC), để dùng trong Visual J++. Điu ny ct nghĩa s già dn và vng chi
ca mt sn phm hãy còn tình trng Beta.
Khi ta nghe nói đến .NET vi nhng ha hn v ng dng trên Internet như Web
Forms và Web Services, rt d cho ta tưng rng Microsoft phi cung cp Windows
Forms là cc chng đã cho nó trn vn món hàng. Tht ra, Windows Forms là mt
phn ca các base classes ca .NET Framework. Cái Namespace dùng cho nó là
System.Windows.Forms, mt Namespace cha rt nhiu th đến đổi hu như
chúng ta s không cn phi dùng trc tiếp các Windows API v đồ ho (Graphics
và Drawings) như trong VB6 na.
Nhu cu có nhng áp dng phía khách (client-based application) phong phú (rich), linh
động (flexible) và nhanh chóng (responsive) s vn còn đó. Hin nay, để tránh phí tn
v cài đặt (deployment) các chương trình, người ta bt đầu có khuynh hướng đặt các
chương trình chy trên Webserver, ri cho user s dng chúng qua WebBrowser.
Ngoài công chúng thì dùng Internet, trong hãng xưởng thì dùng Intranet (Intranet là
Internet chy trên Local Area Network - mng địa phương, không liên lc gì vi bên
ngoài), tuy nhiên giao din trên Web không phong phú hay nhanh như trên desktop và
dĩ nhiên công tác lp trình đòi hi mt thi gian phát trin lâu hơn.
Vì .NET Framework cha đầy đủ mi thư vin cn thiết cho chương trình, nên mt khi
đã cài đặt .NET Framework trên máy khách ri ta ch cn XCopy đến đó nhng
folders cn thiết có cha các tp (files) chương trình và d kin là đủ. Thc hin vic
ny trên mng địa phương (Local Area Network) rt d và nhanh, thm chí ta có th t
động hóa công tác copy ny.
Trong mô hình lp trình nhiu tng (multi-tier programming model) mà ta gi là
Windows DNA (Distributed Network Application), quá trình x lý mt công tác
được chia ra làm nhiu giai đon như:
1. Kim chng các con s user mi đin vào các forms ti máy
khách (user interface)
2. Tính toán (business logic)
3. Truy cp cơ s d liu (database access)
Và mi giai đon nói trên có th nm trên mt computer khác nhau. Nếu dùng Internet
thì giai đon 1 nói trên s chy trong WebBrowser bng trang Web có cha
JavaScript routines để kim chng các con s user mi đánh vào. Còn các giai đon
kia có th chy trên WebServer. Dĩ nhiên giai đon 3 phi chy trên WebServer, nơi
cha cơ s d kin.
.NET cho phép ta lp trình giai đon 1 để chy trong Windows Forms. Còn các giai
đon kia có th để y nguyên.
Như thế, gi d như ta có mt h thng đặt hàng, ta có th cho các telephone
operators dùng desktop (Winforms) application vi mt giao din được ti ưu hóa,
chy tht nhanh để phc v nhng người đặt hàng bng đin thoi. Trong khi đó
khách hàng cũng có th đặt hàng qua Internet WebBrowser như bình thường. C hai
nhóm users ny dù có giao din khác nhau nhưng đều xài chung các tng business
logic và database access.
Đây là mt ưu đim rt quan trng ca .NET mà ít ai chú ý. Nếu thiết kế khéo, ta có
th lp trình để dùng chung hu hết phn mm trên desktop, distributed (phân tán),
Internet và Mobile (Mobile phone, Pocket-PC).
Nhng đim căn bn ca Windows Forms ?
Trong các bài hc và thí d trước đây ta đã nói qua, bây gi ta tóm tc nhng đim
căn bn ca Windows Forms:
Mt Windows Form tht s là mt class. Trong .NET không có t
đặc bit như "form module" để dùng cho nó.
Vì mt form là mt class nên ta không th load nó mà không nói
thng thng ra. Tc là trong VB6 nếu ta Show hay dùng đến mt
Form thì nó t động được loaded. Chng nhng thế thôi, cái
class Form2 được dùng như mt variable Form2 luôn, tc là by
default ta có mt Object tên Form2. Trong .NET ta phi khai báo
(declare) mt variable tên myForm2 chng hn ri instantiate
form y như mt Object ca Form2 trước khi dùng nó.
Tt c mi form đều tha kế t class
System.Windows.Forms.Form.
Ging như tt c các classes trong .NET Framework, Windows
Forms có constructors và destructors. Constructor ca form tên là
Sub New, đại khái ging như Sub Form_Load trong VB6.
Destructor ca form tên là Sub Dispose, đại khái ging như Sub
Form_Unload trong VB6.
Cái visual forms designer ca VS.NET nhét rt nhiu code để
instantiate form và đặt các controls vào form. Đó là code mà đáng
l ta phi t viết nếu ta dùng notepad để lp trình. Phn code ny
thay thế cái phn nm đầu tp .frm ca VB6 để din t các
visual components ca form. Mi ln ta thêm bt các controls hay
thay thế các properties ca controls trên form thì code generated
cho form được thay đổi theo. Do đó bn nên tránh sa đổi code
y, tr khi biết chc mình đang làm gì, hay là bn làm mt phiên
bn trước khi thay đổi để nếu l kt thì restore code cũ.
Event được x lý bng cách linh động hơn. Các events cha
nhiu tin tc hơn. Mt Event có th được x lý bi nhiu controls
cùng mt lúc và mi control có mt cách x lý khác nhau. Ngược
li, nhiu Events khác nhau có th được x lý bng mt Event
Handler duy nht.
Bn to mt chương trình Windows Forms bng cách dùng IDE menu command File |
New | Project.. để hin th giao thoi New Project và chn Template Windows
Application.
Trong thí d ny, khi bn click nút OK thì mt subfolder tên (Name:)
WindowsApplication4 s được to ra trong folder (Location:)
E:\NET\HongDevelopment\LessonPreparation để cha các tp ca Project. Sau
ny, khi bn build, tc là compile chương trình, thì kết qu s là mt tp .exe cha
trong folder
E:\NET\HongDevelopment\LessonPreparation\WindowsApplication4\bin.
Dĩ nhiên trước khi click nút OK bn có th sa Name: hay Location: tùy ý. Ngoài ra,
vì bn chn Windows Application, nên project ca bn t động có reference đến .NET
component System.Windows.Forms.dll.
Để xem lướt qua namespace System.Windows.Forms, bn hãy th xúc tiến to cái
project WindowApplication4 ny. Kế đó bn chy Object Browser bng cách click
hình tam giác nh ca Class View icon ri chn Object Browser:
Trong Object Browser, expand cái System.Windows.Forms tree để xem nhng types
được định nghĩa bên trong và các class members ca Form: