§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
TRƯỜNG ĐẠI HỌC VINH
KHOA CÔNG NGHỆ THÔNG TIN
------- -------
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
ỨNG DỤNG CÔNG NGHỆ LINQ XÂY
DỰNG WEBSITE CA NHẠC
Giáo viên hướng dẫn: ThS. Trần Thị Kim Oanh
Sinh viên thực hiện : Võ Tuấn Hoàng
Lớp
:
45K - CNTT
Vinh, 2009
Vinh, 2009
MỤC LỤC
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 1
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
MỤC LỤC.............................................................................................................................................1
LỜI NÓI ĐẦU......................................................................................................................................2
CHƯƠNG 1: TÌM HIỂU VỀ CÔNG NGHỆ LINQ.........................................................................3
1.1. Linq to Object......................................................................................................................3
1.2. Linq to ADO.NET..............................................................................................................3
1.2.1. Linq to Sql..................................................................................................................3
1.2.2. Linq to DataSet..........................................................................................................4
1.2.3. Linq to Entities...........................................................................................................4
1.3. Linq to XML.........................................................................................................................4
CHƯƠNG 2 : GIỚI THIỆU VỀ ASP.NET VÀ HỆ QUẢN TRỊ CSDL SQL 2005.......................12
2.1. Giới thiệu về ASP.NET......................................................................................................12
2.2. Giới thiệu về hệ quản trị CSDL SQL 2005......................................................................14
CHƯƠNG 3 : PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG.............................................................17
3.1. Tổng quan về bài toán.......................................................................................................17
3.2. Phân tích và thiết kế..........................................................................................................17
CHƯƠNG 4 : GIỚI THIỆU SẢN PHẨM.......................................................................................28
Giao diện người sử dụng....................................................................................................28
Giao diện của người quản trị.............................................................................................31
CHƯƠNG 5 :
ĐÁNH GIÁ KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIỂN..................33
TÀI LIỆU THAM KHẢO.................................................................................................................34
LỜI NÓI ĐẦU
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 2
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
Ngµy nay, c«ng nghÖ th«ng tin ®· vµ ®ang lµ mét trong nh÷ng nghµnh mòi
nhän cña ®Êt níc. Sù ph¸t triÓn cña c«ng nghÖ th«ng tin kh«ng chØ bã hÑp trong mét
lÜnh vùc cô thÓ mµ nã ®· øng dông réng r·i trong tÊt c¶ c¸c lÜnh vùc cña x· héi. Cã
thÓ nãi c«ng nghÖ th«ng tin ®· gióp con ngêi gi¶i quyÕt ®îc nhiÒu bµi to¸n phøc t¹p
mµ tríc ®©y khi cha xuÊt hiÖn m¸y tÝnh con ngêi khã cã thÓ gi¶i quyÕt ®îc, nhng ®iÒu
quan träng ë ®©y kh«ng chØ ®¬n thuÇn lµ gi¶i quyÕt bµi to¸n mµ lµ c¸ch gi¶i quyÕt bµi
to¸n ®ã nh thÕ nµo cho cã hiÖu qu¶ vµ nhanh nhÊt. HÇu hÕt c¸c øng dông trong c«ng
nghÖ phÇn mÒm hiÖn nay ®Òu øng dông c«ng nghÖ LINQ vµo qu¸ tr×nh x©y dùng. C¸c
øng dông website còng kh«ng ngo¹i lÖ, viÖc øng dông c«ng nghÖ LINQ vµo thiÕt kÕ
website lµm cho viÖc lËp tr×nh trë nªn ®¬n gi¶n vµ hiÖu qu¶ h¬n.
Do ®©y lµ thêi gian ®Çu t×m hiÓu c«ng nghÖ míi nªn ch¾c ch¾n kh«ng thÓ tr¸nh
khái nh÷ng thiÕu sãt vµ hiÖu qu¶ ®¹t ®îc cha cao. RÊt mong ®îc sù gãp ý ch©n thµnh
cña c¸c ThÇy C«, vµ tÊt c¶ c¸c b¹n .
Em xin ch©n thµnh c¶m ¬n C« gi¸o ThS. TrÇn ThÞ Kim Oanh ®· tËn t×nh gióp
em hoµn thµnh ®Ò tµi nµy.
Néi dung ®Ò tµi gåm cã : 5 Ch¬ng
Ch¬ng 1: Giíi thiÖu vÒ c«ng nghÖ LINQ.
Ch¬ng 2: Giíi thiÖu vÒ ASP.NET vµ hÖ qu¶n trÞ CSDL SQL 2005.
Ch¬ng 3: Ph©n tÝch vµ thiÕt kÕ hÖ thèng.
Ch¬ng 4: Giíi thiÖu s¶n phÈm.
Ch¬ng 5: §¸nh gi¸ kÕt qu¶ ®¹t ®îc vµ híng ph¸t triÓn.
CHƯƠNG 1: TÌM HIỂU VỀ CÔNG NGHỆ LINQ
Tõ tríc tíi nay khã kh¨n lín nhÊt cho c¸c nhµ ph¸t triÓn lµ ph¶i ®èi mÆt víi sù
kh¸c biÖt gi÷a ng«n ng÷ lËp tr×nh híng ®èi tîng vµ ng«n ng÷ truy vÊn d÷ liÖu, vÊn ®Ò
cµng phøc t¹p h¬n víi sù xuÊt hiÖn cña XML (eXtensible Markup Language – ng«n
ng÷ ®¸nh dÊu më réng). HiÖn t¹i, c¸ch phæ biÕn nhÊt ®Ó øng dông lÊy d÷ liÖu tõ c¸c
hÖ c¬ së d÷ liÖu lµ sö dông SQL (Structure Query Language – ng«n ng÷ truy vÊn cÊu
tróc). SQL cã có ph¸p rÊt kh¸c víi nh÷ng ng«n ng÷ lËp tr×nh phæ dông nh C# vµ
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 3
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
VB.NET, do vËy lËp tr×nh viªn ph¶i nhäc c«ng “hµn g¾n” hai thùc thÓ kh¸c biÖt nµy
víi nhau trong mçi dù ¸n phÇn mÒm.
Mét vÊn ®Ò kh¸c víi SQL lµ nã chØ dïng ®Ó truy vÊn d÷ liÖu trong c¸c CSDL
d¹ng quan hÖ, nÕu muèn truy cËp d÷ liÖu XML hay d¹ng kh¸c (nh HTML, email…),
nhµ ph¸t triÓn l¹i ph¶i sö dông có ph¸p truy vÊn kh¸c (Xpath/ Xquery).
§Ó gi¶m g¸nh nÆng thao t¸c trªn nhiÒu ng«n ng÷ kh¸c nhau vµ c¶i thiÖn n¨ng
suÊt lËp tr×nh, Microsoft ®· ph¸t triÓn gi¶i ph¸p tÝch hîp d÷ liÖu cho .NET Framework
cã tªn gäi lµ LINQ, ®©y lµ th viÖn më réng cho c¸c ng«n ng÷ lËp tr×nh C# vµ Visual
Basic.NET (cã thÓ më réng cho c¸c ng«n ng÷ kh¸c) cung cÊp kh¶ n¨ng truy vÊn trùc
tiÕp d÷ liÖu ®èi tîng, CSDL vµ XML.
LinQ (Language Integrated Query): Lµ mét ng«n ng÷ kÕt hîp c¸c c©u lÖnh truy vÊn.
Ng«n ng÷ LINQ gåm 3 phÇn chÝnh:
1.1. Linq to Object: Là một API nơi mà cung cấp các phương thức chuẩn của
các toán tử truy vấn để lấy lại dữ liệu từ bất kỳ đối tượng nào. Các câu truy vấn được
thực hiện trong bộ nhớ.
1.2. Linq to ADO.NET: Bổ sung các toán tử truy vấn để làm việc với quan hệ
dữ liệu. Nó gồm 3 phần chính :
1.2.1. Linq to Sql: Sử dụng các câu lệnh truy vấn cơ sở dữ liệu như
Microsoft SQL Server.
1.2.2. Linq to DataSet: Hỗ trợ các câu lệnh truy vấn bằng cách sử dụng tập
hợp dữ liệu và các bảng dữ liệu.
1.2.3. Linq to Entities: Là một giải pháp quan hệ ánh xạ (ORM) của
Microsoft
1.3. Linq to XML: Nó không chỉ các toán tử truy vấn nhưng bao gồm tất cả
chủ thể các đặc trưng rõ ràng của tài liệu XML.
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 4
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
LINQ to SQL lµ mét phiªn b¶n hiÖn thùc hãa cña O/RM (Object Relational
Mapping) cã bªn trong .Net Framework b¶n “Orcas” nay lµ .NET 3.5, nã cho phÐp
b¹n m« h×nh hãa mét c¬ së d÷ liÖu dïng c¸c líp .NET. Sau ®ã b¹n cã thÓ truy vÊn c¬
së d÷ liÖu (CSDL) dïng LINQ, còng nh cËp nhËt/ thªm/ xãa d÷ liÖu tõ ®ã.
LINQ to SQL hç trî ®Çy ®ñ transaction, view vµ c¸c stored procedure. Nã còng
cung cÊp mét c¸ch dÔ dµng ®Ó thªm kh¶ n¨ng kiÓm tra tÝnh hîp lÖ cña d÷ liÖu vµ c¸c
quy t¾c vµo trong m« h×nh d÷ liÖu cña b¹n.
M« h×nh hãa CSDL dïng LINQ to SQL
Visual Studio “Orcas” ®· tÝch hîp thªm mét tr×nh thiÕt kÕ LINQ to SQL nh mét
c«ng cô dÔ dµng cho viÖc m« h×nh hãa mét c¸ch trùc quan c¸c CSDL dïng LINQ to
SQL.
B»ng c¸ch dïng tr×nh thiÕt kÕ LINQ to SQL, chóng ta cã thÓ dÔ dµng t¹o mét
m« h×nh cho CSDL mÉu “Northwind” gièng nh díi ®©y:
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 5
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
M« h×nh LINQ to SQL ë trªn ®Þnh nghÜa bèn líp thùc thÓ: Product, Category,
Order vµ OrderDetail. C¸c thuéc tÝnh cña mçi líp ¸nh x¹ vµo c¸c cét cña b¶ng t¬ng
øng trong CSDL. Mçi trêng cña mét líp biÓu diÔn mét dßng trong b¶ng d÷ liÖu.
C¸c mòi tªn gi÷a bèn líp thùc thÓ trªn biÓu diÔn quan hÖ gi÷a c¸c thùc thÓ kh¸c
nhau, chóng ®îc t¹o ra dùa trªn c¸c mèi quan hÖ primary-key/foreign-key trong
CSDL. Híng cña mòi tªn chØ ra mèi quan hÖ lµ mét - mét hay mét - nhiÒu. C¸c thuéc
tÝnh t¬ng øng sÏ ®îc thªm vµo c¸c líp thùc thÓ trong c¸c trêng hîp nµy. LÊy vÝ dô, líp
Category ë trªn cã mét mèi quan hÖ mét nhiÒu víi líp Product, ®iÒu nµy cã nghÜa nã
sÏ cã mét thuéc tÝnh “Categories” lµ mét tËp hîp c¸c ®èi tîng Product trong Category
nµy. Líp Product còng sÏ cã mét thuéc tÝnh “Category” chØ ®Õn ®èi tîng ”Category”
chøa Product nµy bªn trong.
B¶ng c¸c ph¬ng thøc bªn tay ph¶i bªn trong tr×nh thiÕt kÕ LINQ to SQL ë trªn
chøa mét danh s¸ch c¸c Store Procedure ®Ó t¬ng t¸c víi m« h×nh d÷ liÖu cña chóng ta.
Trong vÝ dô trªn chóng ta thªm mét thñ tôc cã tªn “GetProductsByCategory”. Nã
nhËn vµo mét categoryID vµ tr¶ vÒ mét chuçi c¸c Product. §Ó lÊy d÷ liÖu tõ Store
Procedure trªn ta sÏ gäi tªn thñ tôc ®ã trong mét líp Class.
T×m hiÓu líp DataContext:
Khi b¹n bÊm nót “Save” bªn trong mµn h×nh thiÕt kÕ LINQ to SQL, Visual
Studio sÏ lu c¸c líp .NET biÓu diÔn c¸c thùc thÓ vµ quan hÖ bªn trong CSDL mµ
chóng ta võa m« h×nh hãa. Cø mçi mét file LINQ to SQL chóng ta thªm vµo solution,
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 6
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
mét líp DataContext sÏ ®îc t¹o ra, nã sÏ ®îc dïng khi cÇn truy vÊn hay cËp nhËt l¹i
c¸c thay ®æi. Líp DataContext ®îc t¹o sÏ cã c¸c thuéc tÝnh ®Ó biÓu diÔn mçi b¶ng ®îc
m« h×nh hãa tõ CSDL, còng nh c¸c ph¬ng thøc cho mçi Store Procedure mµ chóng ta
®· thªm vµo.
LÊy vÝ dô, díi ®©y lµ líp NorthwindDataContext ®îc sinh ra dùa trªn m« h×nh
chóng ta t¹o ra ë trªn:
C¸c vÝ dô ®iÓn h×nh vÒ LINQ to SQL
Mét khi ®· m« h×nh hãa CSDL dïng tr×nh thiÕt kÕ LINQ to SQL, chóng ta cã
thÓ dÔ dµng viÕt c¸c ®o¹n lÖnh ®Ó lµm viÖc víi nã. Díi ®©y lµ mét vµi vÝ dô vÒ c¸c
thao t¸c chung khi xö lý d÷ liÖu:
1) LÊy c¸c Product tõ CSDL:
§o¹n lÖnh díi ®©y dïng có ph¸p LINQ ®Ó lÊy vÒ mét tËp IEnumerable c¸c ®èi tîng Product. C¸c s¶n phÈm ®îc lÊy ra ph¶i thuéc ph©n lo¹i “Beverages”:
2) CËp nhËt mét s¶n phÈm trong CSDL:
§o¹n lÖnh díi ®©y cho chóng ta thÊy c¸ch lÊy mét s¶n phÈm, cËp nhËt l¹i gi¸
tiÒn, cæ phiÕu vµ lu l¹i CSDL.
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 7
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
3) ChÌn thªm mét ph©n lo¹i míi vµ hai s¶n phÈm vµo CSDL:
§o¹n m· díi ®©y biÓu diÔn c¸ch t¹o mét ph©n lo¹i míi, vµ t¹o hai s¶n phÈm
míi vµ ®a chóng vµo trong ph©n lo¹i ®· t¹o. C¶ ba sau ®ã sÏ ®îc ®a vµo c¬ së d÷ liÖu.
ë ®©y kh«ng cÇn ph¶i tù qu¶n lý c¸c mèi quan hÖ primary key/foreign key,
thay vµo ®ã, chóng ta chØ ®¬n gi¶n thªm c¸c ®èi tîng Product vµo tËp hîp Products
cña ®èi tîng category, vµ råi thªm ®èi tîng category vµo tËp hîp Categories cña
DataContext, LINQ to SQL sÏ biÕt c¸ch thiÕt lËp c¸c gi¸ trÞ primary key /foreign key
mét c¸ch thÝch hîp.
4) Xãa c¸c s¶n phÈm:
§o¹n m· sau sÏ biÓu diÔn c¸ch xãa tÊt c¶ c¸c s¶n phÈm cã chøa tªn “Toy” khái
CSDL:
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 8
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
5) Gäi mét thñ tôc:
§o¹n m· díi ®©y biÓu diÔn c¸ch lÊy c¸c thùc thÓ Product mµ kh«ng dïng có
ph¸p cña LINQ, mµ gäi ®Õn thñ tôc “GetProductsByCategory” chóng ta ®· thªm vµo
tríc ®©y.
ë ®©y mét khi ®· lÊy vÒ kÕt qu¶, chóng ta cã thÓ cËp nhËt /xãa vµ sau ®ã gäi
db.SubmitChanges() ®Ó cËp nhËt c¸c thay ®æi trë l¹i CSDL.
6) Ph©n trang kÕt qu¶ truy vÊn:
Mét trong nh÷ng yªu cÇu chung khi viÕt c¸c trang web lµ b¹n ph¶i cã kh¶ n¨ng
ph©n trang mét c¸c hiÖu qu¶. LINQ cung cÊp s½n hai hµm më réng cho phÐp b¹n cã
thÓ lµm ®iÒu ®ã mét c¸ch dÔ dµng vµ hiÖu qu¶ - hµm Skip() vµ Take().
B¹n cã thÓ dïng Skip() vµ Take() nh díi ®©y ®Ó chØ ra r»ng b¹n chØ muèn lÊy vÒ
10 ®èi tîng s¶n phÈm - b¾t ®Çu tõ mét s¶n phÈm cho tríc mµ chóng ta chØ ra trong
tham sè truyÒn vµo:
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 9
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
Mét trong nh÷ng u ®iÓm cña m« h×nh nµy lµ nã cho phÐp b¹n cã thÓ viÕt c¸c
c©u lÖnh phøc t¹p b»ng nhiÒu bíc, thay v× ph¶i viÕt trong mét c©u lÖnh ®¬n (gióp dÔ
®äc h¬n). Nã còng cho phÐp b¹n t¹o ra c¸c c©u truy vÊn tõ c¸c c©u kh¸c, gióp b¹n cã
thÓ x©y dùng c¸c c©u truy vÊn rÊt phøc t¹p còng nh cã thÓ dïng l¹i ®îc c¸c c©u truy
vÊn kh¸c.
Mét khi chóng ta ®· cã ph¬ng thøc BindProduct() ®Þnh nghÜa ë trªn, ta cã thÓ
viÕt lÖnh nh díi ®©y ®Ó lÊy vÒ chØ sè ®Çu tõ query string, vµ cho phÐp danh s¸ch s¶n
phÈm cã thÓ ®îc hiÖn ph©n trang vµ hiÓn thÞ:
Nã sÏ cho chóng ta mét trang hiÓn thÞ c¸c s¶n phÈm cã nhiÒu h¬n 5 ®¬n ®Æt
hµng, cïng víi doanh thu t¬ng øng, vµ ®îc ph©n trang dùa trªn tham sè truyÒn vµo
qua query string:
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 10
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
Mét sè tÝnh n¨ng næi bËt cña LINQ
- Ch¹y cïng m· Code cña ch¬ng tr×nh -> Lçi ®îc ph¸t hiÖn sím kh«ng ph¶i
chê hÖ qu¶n trÞ CSDL ph¶n håi.
- Cã thÓ truy xuÊt nhiÒu lo¹i d÷ liÖu h¬n SQL (CSDL trong hÖ CSDL, trong bé
nhí ram cña m¸y tÝnh)
- §iÒu quan träng nhÊt, LINQ lµ tÊt c¶ vÒ truy vÊn, kÕt qu¶ sau khi truy vÊn cã
thÓ lµ tËp hîp c¸c ®èi tîng cïng lo¹i, cã thÓ lµ 1 ®èi tîng ®¬n, cã thÓ lµ tËp hîp con
cña c¸c trêng tõ 1 ®èi tîng. KÕt qu¶ tr¶ vÒ cña LINQ ngêi ta gäi lµ sequence. HÇu hÕt
sequence lµ IEnumerable víi T lµ kiÓu d÷ liÖu cña nh÷ng ®èi tîng trong
sequence.
- LINQ lµ mét gi¶i ph¸p lËp tr×nh d÷ liÖu tÝch hîp cho .Net framework ®Ó gi¶m
g¸nh nÆng thao t¸c trªn nhiÒu ng«n ng÷ kh¸c nhau vµ cung cÊp kh¶ n¨ng truy vÊn trùc
tiÕp d÷ liÖu ®èi tîng, CSDL vµ XML. LINQ thao t¸c trªn d÷ liÖu ®· tr¶ vÒ d¹ng object
list víi c¸c thuéc tÝnh cña ®èi tîng chø kh«ng ph¶i thao t¸c trªn ®èi tîng table cña
CSDL víi c¸c cét vµ hµng. DLINQ lµ tËp c¸c líp ®Æc biÖt cho phÐp thÓ hiÖn c¸c b¶ng
vµ hµng d÷ liÖu theo d¹ng ®èi tîng, nhê vËy cã thÓ sö dông LINQ ®Ó truy vÊn trùc
tiÕp CSDL.
So s¸nh gi÷a ADO.NET vµ LINQ
- ADO.NET lµ c«ng cô ®Ó kÕt nèi d÷ liÖu nguån (gièng nh ODBC) trong khi
®ã LINQ lµ c«ng cô truy vÊn ®Ó truy vÊn bÊt kú lo¹i d÷ liÖu nµo mµ kh«ng cÇn d÷ liÖu
tõ CSDL
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 11
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
- Khi sö dông ADO.NET chóng ta ph¶i viÕt c©u lÖnh kÕt nèi CSDL nhng khi
dïng LINQ nã sÏ tù sinh ra mét c©u lÖnh kÕt nèi CSDL.
- Nã lËp tr×nh dÔ dµng h¬n khi sö dông c¸c Store Procedure. ADO.NET ph¶i sö
dông c¸c tham sè (Parameters) ®Ó truyÒn c¸c tham sè cßn LINQ sö dông lu«n store
khi kÐo store vµo.
CHƯƠNG 2 : GIỚI THIỆU VỀ ASP.NET VÀ HỆ QUẢN TRỊ CSDL SQL 2005
2.1. Giới thiệu về ASP.NET
2.1.1. Giíi thiÖu
ASP.NET lµ phiªn b¶n kÕ tiÕp cña Active Server Page (ASP), nã lµ mét nÒn ph¸t
triÓn øng dông Web hîp nhÊt, cung cÊp nhiÒu dÞch vô cÇn thiÕt cho lËp tr×nh viªn x©y
dùng c¸c líp øng dông chuyªn nghiÖp. Có ph¸p ASP.NET t¬ng thÝch víi có ph¸p ASP,
ngoµi ra ASP.NET cßn cung cÊp mét m« h×nh lËp tr×nh míi, nÒn t¶ng an toµn, linh
ho¹t vµ æn ®Þnh.
ASP.NET lµ biªn dÞch, dùa trªn m«i trêng .NET vµ cã thÓ x©y dùng b»ng bÊt cø
ng«n ng÷ nµo t¬ng thÝch .NET, bao gåm Visual Basic.NET, C#, vµ JScript .NET.
ASP.NET ®îc thiÕt kÕ lµm viÖc víi c¸c tr×nh so¹n th¶o WYSIWYG HTML ®i
kÌm vµ c¸c c«ng cô lËp tr×nh kh¸c ®îc ®a vµo trong Microsoft Visual .NET. TÊt c¶ c¸c
c«ng cô nµy kh«ng ph¶i chØ dïng ®Ó ph¸t triÓn øng dông Web, tuy nhiªn cã thÓ sö
dông mét vµi chøc n¨ng th«ng thêng cho øng dông Web, bao gåm mét GUI cho phÐp
lËp tr×nh viªn cã thÓ dÔ dµng ®Æt c¸c server control vµo trang web (web page), vµ mét
tr×nh debug rÊt m¹nh mÏ.
2.1.2. Lý do chän ASP.NET
Ta ®· biÕt .NET Framework vµ c¸c øng dông cña nã ®· vµ ®ang t¹o mét cuéc
c¸ch m¹ng kü thuËt trong c«ng nghÖ Tin Häc (Information Technology), thay ®æi tËn
gèc rÔ c¸c kiÓu mÉu lËp tr×nh hay ph¸t triÓn vµ triÓn khai m¹ng trªn thÕ giíi vµ do ®ã
t¹o mét vËn héi míi ®¸p øng mäi yªu cÇu khÈn thiÕt cho c¸c ngµnh nghÒ kü thuËt vµ
th¬ng m¹i hiÖn nay còng nh v¹ch mét híng ®i v÷ng ch¾c vµ dµi l©u cho t¬ng lai Tin
Häc. ASP.NET chÝnh lµ mét trong nh÷ng øng dông quan träng nhÊt ®Ó ph¸t triÓn vµ
triÓn khai m¹ng mét c¸ch dÔ dµng cha tõng thÊy tõ xa ®Õn nay.
Kh«ng nh ASP kiÓu cæ ®iÓn chØ giíi h¹n víi VBScripts vµ JScripts, ASP.NET
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 12
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
hç trî trªn 25 ng«n ng÷ lËp tr×nh (dÜ nhiªn ngoµi c¸c ng«n ng÷ míi thiÕt lËp ®· cµi s½n
hç trî .NET framework nh lµ VB.NET, C# vµ JScript.NET cßn cã MC++.NET,
Smalltalk.NET, COBOL.NET...).
MÆc dï ta cã thÓ chØ cÇn dïng tíi Notepad ®Ó triÓn khai c¸c trang ASP.NET nhng
Visual Studio .NET gióp n¨ng suÊt triÓn khai m¹ng thªm phÇn hiÖu qu¶, ta cã thÓ
quan s¸t c¸c kÕ ho¹ch cña ta dÔ dµng h¬n khi ph¸c häa (design) c¸c thµnh phÇn cña
ASP.NET b»ng h×nh ¶nh víi ASP.NET Web Forms hay Services theo ph¬ng ph¸p nhÊn
®óp chuét quen thuéc cña nÒn Windows. Thªm n÷a, l¹i cßn hç trî ta trong viÖc ph¸t
hiÖn vµ lo¹i bá nh÷ng lçi sai mét c¸ch rÊt thuËn lîi trong khi ph¸t triÓn c¸c øng dông
vÒ m¹ng (support for debugging and deploying ASP.NET Web applications).
ASP.NET kh«ng nh÷ng ch¹y nhanh h¬n ASP cæ ®iÓn gÊp 5 lÇn mµ cßn cã thÓ
duy tr× kiÓu mÉu cËp nhËt gäi lµ kiÓu mÉu 'just hit save', nghÜa lµ ASP.NET tù ®éng dß
t×m mäi sù thay ®æi vµ compile files khi cÇn thiÕt còng nh lu tr÷ kÕt qu¶ compile ®ã
®Ó cung øng dÞch vô cho nh÷ng yªu cÇu tiÕp theo sau, nhê vËy øng dông cña b¹n lu«n
lu«n cËp nhËt hãa vµ ch¹y nhanh h¬n c¶.
ASP.NET cã kh¶ n¨ng lu tr÷ mét kÕt qu¶ chung trong phÇn bé memory cña
trang ®Ó göi gi¶i ®¸p cho cïng mét yªu cÇu tõ nhiÒu kh¸ch hµng kh¸c nhau vµ nhê ®ã
kh«ng nh÷ng tiÕt kiÖm ®îc sù lÆp ®i lÆp l¹i c«ng t¸c thi hµnh cña mét trang web mµ
cßn gia t¨ng hiÖu suÊt mét c¸ch ngo¹n môc do giíi h¹n tèi ®a viÖc chÊt vÊn c¸c c¬ së
d÷ liÖu (eliminating the need to query the database on every request) rÊt tèn nhiÒu
thêi gian.
ASP.NET còng cã kh¶ n¨ng tù ®éng dß t×m vµ phôc håi (detects and recovers)
nh÷ng trë ng¹i nghiªm träng nh deadlocks hay bé nhí (memory) bÞ rØ ®Ó b¶o ®¶m øng
dông cña b¹n lu«n lu«n s½n sµng khi dïng mµ kh«ng lµm c¶n trë viÖc cung øng dÞch
vô cÇn thiÕt thêng lÖ.
ASP.NET cho phÐp ta tù ®éng cËp nhËt hãa (update) c¸c thµnh phÇn ®· compiled
(compiled components) mµ kh«ng cÇn ph¶i khëi ®éng l¹i (re-start) c¸c Web Server.
Mét sè ®èi tîng trong ASP.NET.
Request :
- Trao đổi th«ng tin giữa Client và Server.
- Dạng QueryString: Gửi th«ng tin kÌm vào phần đu«i của URL.
Response :
- Cho phÐp Server đ¸p ứng, trả lời hay th«ng tin với client.
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 13
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
- Phương thức Write, Writeln: Viết dßng chữ
Response.Write();
Response.Writeln();
- Phương thức Redirect: Chuyển qua trang kh¸c
Response.Rediredt("http://www.vnn.vn");
Session :
Khi Client đã nhận được th«ng tin từ Server, qu¸ tr×nh trao đổi kết thóc, kh«ng
cã liªn lạc giữa Server và client.
Để lưu lại cấu h×nnh cần thiết cho những xử lý sau ®ã, chóng ta cần đến Session
object.
Sau khi người dïng kết thóc phiªn làm việc (đãng tr×nh duyệt hoặc sang một Website
kh¸c) th× Session mới kết thóc
Application:
Đối với đối tượng Session, chỉ cã t¸c động trong một phiªn làm việc (một người sử
dụng).
Đối tượng Application dïng để chia sẻ th«ng tin giữa tất cả những người sử dụng.
2.2. Giới thiệu về hệ quản trị CSDL SQL 2005
2.2.1. Giíi thiÖu
Sql lµ viÕt t¾t cña Structured Query Language – Ng«n ng÷ truy vÊn cÊu tróc, lµ
mét chuÈn cña ANSI (American National Standards Institute – ViÖn tiªu chuÈn quèc
gia Hoa Kú) vÒ truy xuÊt c¸c hÖ thèng CSDL. C¸c c©u lÖnh SQL ®îc sö dông ®Ó truy
xuÊt vµ cËp nhËt d÷ liÖu trong mét CSDL.
SQL ho¹t ®éng víi hÇu hÕt c¸c ch¬ng tr×nh CSDL nh MS Access, DB2, Informix, MS
SQL Server …
Mét CSDL thêng bao gåm mét hoÆc nhiÒu b¶ng (table). Mçi b¶ng ®îc x¸c ®Þnh th«ng
qua mét tªn ( vÝ dô Products hoÆc Categorys). Díi ®©y lµ mét vÝ dô vÒ mét b¶ng cã
tªn lµ Products :
Products(ProductID, ProductName, CategoryID, Price, CreateDate, UserId)
Víi SQL ta cã thÓ truy vÊn CSDL vµ nhËn lÊy kÕt qu¶ tr¶ vÒ, còng nh cËp nhËt – söa
®æi, chÌn thªm vµ xãa c¸c mÈu tin th«ng qua c¸c c©u truy vÊn.
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 14
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
Danh s¸ch c¸c lÖnh vµ truy vÊn d¹ng DML (Data Manipulation Language):
- Select : LÊy d÷ liÖu tõ mét b¶ng CSDL.
- Update : CËp nhËt/ söa ®æi d÷ liÖu trong b¶ng.
- Delete : Xãa d÷ liÖu trong b¶ng.
- Insert into : Thªm d÷ liÖu vµo b¶ng.
2.2.2. Nh÷ng tÝnh n¨ng míi cña SQL 2005
Khi SQL 2005 ra ®êi, th× nh÷ng kiÕn thøc vÒ SQL 2000 thùc sù kh«ng ®ñ ®Ó
b¹n lµm chñ ®îc SQL 2005. Kh¶ n¨ng vµ ®é linh ho¹t cña SQL 2005 ®îc ph¶n ¸nh rÊt
râ trong c«ng cô Management studio míi vµ BIDS.
a) N©ng cao b¶o mËt:
B¶o mËt lµ trong t©m chÝnh cho nh÷ng tÝnh n¨ng míi trong SQL Server
2005. §iÒu nµy ph¶n ¸nh sù ph¶n øng l¹i cña Microsoft víi s©u m¸y tÝnh Slammer
®· tÊn c«ng SQL Server 2000. Nã còng cho thÊy mét thÕ giíi ngµy cµng cã nhiÒu d÷
liÖu kinh doanh cã nguy c¬ bÞ lé ra ngoµi Internet.
b) Më réng T-SQL:
- Transact - SQL lµ mét phiªn b¶n cña Structured Query Language (SQL), ®îc
dïng bëi SQL Server 2005. Transact-SQL thêng ®îc gäi lµ T-SQL. T-SQL cã nhiÒu
tÝnh n¨ng do Microsoft ph¸t triÓn kh«ng cã trong ANSI SQL (SQL chuÈn).
- ViÖc sö dông khèi Try... Catch trong m· T-SQL cho phÐp b¹n chØ ra ®iÒu g×
ph¶i lµm khi lçi x¶y ra.
c) T¨ng cêng hç trî ngêi ph¸t triÓn:
- C¸c kiÓu d÷ liÖu míi.
- Truy cËp Http.
d) T¨ng cêng kh¶ n¨ng qu¶n lý:
C¸c c«ng cô qu¶n lý trong SQL Server 2005 cã sù thay ®æi rÊt lín víi SQL
Server 2000. Thay ®æi chÝnh ®Õn tõ SQL Server management Studio.
- Nh÷ng c«ng cô qu¶n lý míi.
- SQL Server.
- CÊu h×nh tù ®éng.
- Göi mail tõ CSDL.
e) Kh¶ n¨ng më réng CSDL :
- Cµi ®Æt trong mét liªn cung.
- Ph©n vïng d÷ liÖu.
- Gi¸m s¸t cç m¸y CSDL.
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 15
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
- Hç trî g¾n nãng bé nhí.
- Replication (§ång bé).
CHƯƠNG 3 : PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
3.1. Tổng quan về bài toán
3.1.1. Lý do chän ®Ò tµi
Trong thêi ®¹i bïng næ cña c«ng nghÖ th«ng tin, c¸c c«ng nghÖ míi ngµy
cµng gióp ngêi sö dông lµm viÖc dÔ dµng vµ thuËn tiªn h¬n. C«ng nghÖ LINQ lµ mét
trong nh÷ng c«ng nghÖ ®ã, võa míi ra ®êi nã ®· ®îc ®ãn nhËn réng r·i vµ ®· ®¸p øng
®îc nh÷ng yªu cÇu cña ngêi sö dông. ”Trang nh¹c trùc tuyÕn” lµ vÝ dô ®iÓn h×nh mµ
em chän ®Ó ¸p dông mét phÇn nhá c«ng nghÖ míi ®ã.
3.1.2. Ph¹m vi cña ®Ò tµi
§Ò tµi “øng dông LINQ x©y dùng website ca nh¹c” víi øng dông lµ website
“Nh¹c trùc tuyÕn” kh«ng chØ nh»m giíi thiÖu c«ng nghÖ míi mµ nã cßn lµ n¬i l u gi÷
nh÷ng b¶n d©n ca vµ nh¹c cæ truyÒn cña ViÖt Nam, mét trong nh÷ng lo¹i nh¹c kh«ng
®îc b¹n trÎ thêi ®¹i ngµy nay chó ý nhiÒu.
3.1.3. NhiÖm vô cña ®Ò tµi
§Ó hoµn thµnh ®îc ®Ò tµi em ph¶i t×m hiÓu vµ tiÕn hµnh c¸c c«ng viÖc sau:
- Tríc hÕt cÇn ph¶i t×m hiÓu c¸ch x©y dùng mét trang web nh thÕ nµo.
- T×m hiÓu viÖc øng dông c«ng nghÖ LINQ vµo thiÕt kÕ website.
- TÝch cùc t×m kiÕm vµ tham kh¶o mét sè website nh¹c trùc tuyÕn.
- T×m hiÓu c¸c hÖ c¬ së d÷ liÖu hiÖn nay.
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 16
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
- TiÕn hµnh ph©n tÝch, thiÕt kÕ vµ lËp ch¬ng tr×nh.
3.2. Phân tích và thiết kế
3.2.1. ThiÕt kÕ c¬ së d÷ liÖu
a) Ph©n tÝch hÖ thèng vÒ mÆt chøc n¨ng
BiÓu ®å ph©n cÊp chøc n¨ng
S¬ ®å ph©n cÊp chøc n¨ng ®îc sö dông ®Ó nªu ra chøc n¨ng vµ qu¸ tr×nh cho
biÓu ®å luång d÷ liÖu th«ng qua nã ®Ó m« t¶ c¸c chøc n¨ng xö lý cña hÖ thèng theo
c¸c møc.
HÖ thèngWebsite
CËp nhËt d÷ liÖu
CËp nhËt nghÖ sü
T×m kiÕm, t¶i vÒ
TK theo tªn bµi h¸t
CËp nhËt Album
CËp nhËt bµi h¸t
TK theo tªn nghÖ
sü
CËp nhËt thÓ lo¹i
nh¹c
TK theo thÓ lo¹i
nh¹c
CËp nhËt tin tøc
Thèng kª
TK lît truy cËp
TK sè lÇn nghe mét
bµi h¸t
TK sè lÇn
download mét bµi
h¸t
TK theo tªn album
CËp nhËt ngêi dïng
TK theo tin tøc
CËp nhËt ngêi qu¶n
trÞ
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 17
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
BiÓu ®å luång d÷ liÖu.
BiÓu ®å luång d÷ liÖu lµ ph¬ng tiÖn diÔn t¶ chøc n¨ng xö lý vµ viÖc trao ®æi
th«ng tin gi÷a c¸c chøc n¨ng.
+ Luång d÷ liÖu: Lµ mét tuyÕn truyÒn dÉn th«ng tin vµo hay ra mét chøc n¨ng nµo ®ã.
Ký hiÖu:
Luång d÷ liÖu
+ Chøc n¨ng: Lµ mét qu¸ tr×nh biÕn ®æi d÷ liÖu.
KÝ hiÖu:
Tªn chøc n¨ng
+ C¸c kho d÷ liÖu: Lµ mét d÷ liÖu ®îc lu l¹i, ®Ó cã thÓ ®îc truy cËp nhiÒu lÇn vÒ sau.
KÝ hiÖu:
Tªn kho d÷ liÖu
+ T¸c nh©n ngoµi: Mét t¸c nh©n ngoµi lµ mét thùc thÓ ngoµi hÖ thèng, cã trao ®æi
th«ng tin víi hÖ thèng.
KÝ hiÖu:
Tªn t¸c nh©n ngoµi
BiÓu ®å luång d÷ liÖu møc khung c¶nh:
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 18
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
Th«ng tin ngêi dïng
Th«ng tin bµi h¸t, tin tøc, ngêi dïng
T×m kiÕm th«ng tin
Liªn hÖ
Ngêi dïng
Ph¶n håi
Website
Qu¶n trÞ
Gãp ý
KÕt qu¶ t×m kiÕm
Th«ng tin yªu cÇu
§¸p øng yªu cÇu
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 19
§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c
BiÓu ®å d÷ liÖu møc ®Ønh
1
2
Ngêi qu¶n trÞ
3
Ngêi dïng
4
5
6
7
Qu¶n lý
nh¹c, tin tøc
CËp nhËt
th«ng tin
T×m kiÕm
Gãp ý
Kho d÷ liÖu
Chó thÝch:
1) Th«ng tin bµi h¸t, tin tøc nh¹c.
2) Th«ng tin ngêi dïng.
3) Qu¶n trÞ th«ng tin nh¹c.
4) §¸p øng yªu cÇu cña ngêi dïng.
5) Th«ng tin t×m kiÕm.
6) KÕt qu¶ th«ng tin t×m kiÕm.
7) Th«ng tin gãp ý cña ngêi dïng.
Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh
Trang 20
- Xem thêm -