3.2 Hin thc ng d ng
3.2.3 Gi i pháp hin thc
Tr c nh ng yêu c u và khĩ kh n đ t ra, c ng đã cĩ nhi u bi n pháp đ c đ xu t đ l a ch n đ gi i quy t v n đ chính đĩ là qu n lý c u trúc c a t p tin XML này, trong
đĩ mơ hình DOM là gi i pháp đã đ c l a ch n, tuy đây khơng ph i là m t gi i pháp hồn h o do mơ hình DOM bu c ph i load t t c n i dung t p tin lên trên b nh RAM cho nên s nh h ng nhi u đ n hi u n ng c a ch ng trình, và do giao di n ch ng trình khi t ng tác cịn g m m t cây th hi n c u trúc c a t p tin manifest và các form th hi n thu c tính c a t ng th cho nên v n đ t c đ ph i đ c u tiên gi i quy t. Bi n pháp mà ch ng trình đã s d ng là đĩ là s d ng mơ hình DOM và m t s bi n pháp h tr giúp c i thi n t c đ là XPath và load t ng ph n cho cây c a manifest đ tránh tình tr ng t c đ c a ch ng trình. D a vào đ c tính qu n lý các thành ph n theo mơ hình cây c a mơ hình DOM đ cĩ th d dàng qu n lý các th và c ng nh các t ng tác (thêm, xĩa, s a) trên các thành ph n này.
Manifest file XMLDocumment
Component
TreeView Component Form Attribute
Load Load
Load
RichTextBox Component (View Source code)
Save
Save Add or Delete manifest component
Modify manifest component
Hình 3.2.1 S đ quy trình t ng tác v i các thành ph n manifest
Quan sát trên hình 3.2.1, nh n th y r ng, gi i thu t ch y u c a ch ng trình d a vào mơ hình DOM mà đây đ c th hi n b ng thành ph n XMLDocument c a .NET. Quá trình đ c t p tin manifest là quá trình load tồn b t p tin manifest vào thành
ph n XMLDocument, t i đây theo khái ni m c a DOM, tồn b các th và thu c tính nĩi riêng và các thành ph n c a t p tin manifest nĩi chung s đ c qu n lý theo s đ
hình cây do đ i t ng XMLDocument qu n lý. Mơ hình cây này s đ c c th hĩa b ng thành ph n Treeview trên màn hình chính, giúp cho ng i dùng cĩ th t ng tác và qu n lý các thành ph n manifest, khi ng i dùng ch n m t node trên thành ph n TreeView t ng đ ng v i vi c ng i dùng đã ch n l y m t thành ph n manifest và ngay l p t c form ch a thu c tính t ng ng s xu t hi n và m i thơng tin đ c load lên t thành ph n TreeView.
Do th c hi n theo c ch qu n lý nh trên, nên khi ng i th c hi n các thao tác nh thêm m t thành ph n manifest hay xĩa m t thành ph n manifest ho c ch nh s a m t thành ph n manifest nào đĩ b ng cách t ng tác lên thành ph n TreeView hay trên các form thu c tính thì ch ng trình s th c hi n nh ng dịng l nh h t s c đ n gi n nh t o thêm m t element hay xĩa m t element ho c hi u ch nh m t element trong XMLDocument v trí t ng ng.
Trong khi t ng tác v i các thành ph n c a manifest, ng i dùng cĩ th xem tr c n i dung c a t p tin manifest đ xem nh ng thay đ i c a t p tin này tr c nh ng yêu c u thay đ i c a ng i dùng. Lúc này, ch ng trình ch đ n gi n là g i ph ng th c Save c a XMLDocument ra m t thành ph n RichTextBox đ ng i dùng cĩ th xem
đ c n i dung source code. Cịn n u ng i dùng mu n l u nh ng thay đ i này xu ng t p tin, thì ch ng trình c ng ch đ n gi n là g i ph ng th c Save c a XMLDocument m t l n n a đ ghi ra t p tin.
Do quá trình load n i dung c a t p tin manifest lên bao g m các quá trình load n i dung t p tin manifest vào thành ph n XMLDocument đ t o c u trúc DOM sau đĩ l i load ti p lên trên thành ph n TreeView đ cho th hi n cây thành ph n manifest và sau đĩ l i load ti p lên các form thu c tính đ cho th hi n các giá tr c a các thu c tính t ng ng v i các thành ph n, n u th c thi m t lo t liên t c quá trình này thì ng d ng s ch y r t ch m. Do đĩ đ kh c ph c v n đ v hi u n ng cho ch ng trình, ng d ng đã hi n th c gi i pháp là load t ng ph n c a mơ hình DOM lên TreeView khi cĩ s tác đ ng c a ng i dùng. Khi ng i dùng click vào m t node trên TreeView thì ch ng trình ch load các node con c a thành ph n đĩ trong mơ hình DOM, ch khơng load h t t t c các nút con và cháu. T ng t nh v y các form thu c tính ch đ c load d li u khi cĩ s ki n click tác đ ng c a ng i dùng lên thành ph n trên TreeView. Nh ng bi n pháp này khi đ c s d ng đã c i thi n rõ r t v hi u n ng và t c đ x lý ch ng trình.
Ngồi ch ng n ng chính đ c trình bày trên, ch ng trình c ng ph i hi n th c m t s ch c n ng c b n đ t ng tính ti n d ng cho ch ng trình khi s d ng. Và m t trong nh ng ch c n ng c b n mà ch ng trình ph i hi n th c đĩ là ch c n ng m gĩi n i dung. Quá trình m m t gĩi n i dung đ c mơ t theo hình 3.2.2 d i đây
L a ch n hình th c m gĩi
Nh p tên gĩi và n i ch a gĩi n i dung
c các thành ph n t
t p tin manifest Gi i nén gĩi n i dung
Hi n lên cây thành ph n manifest
T t p tin manifest
T gĩi n i dung
Hình 3.2.2 S đ quy trình th c hi n hành đ ng m gĩi n i dung
Theo hình 3.2.2, thao tác chính y u c a ch c n ng m gĩi n i dung s là thao tác đ c các thành ph n t t p tin manifest đã cĩ, sau đĩ s load lên TreeView. V c b n ch c n ng này s th c hi n nh ng hành đ ng chính sau đây: load t p tin manifest vào thành ph n XMLDocument và sau đĩ s load lên TreeView nút g c c a thành ph n manifest. Quá trình m m t gĩi n i dung ch d ng l i đây, sau đĩ khi ng i dùng click vào cây thành ph n s chuy n qua quá trình thao tác v i các thành ph n manifest, lúc đĩ tùy theo hành đ ng c a ng i s d ng ch ng trình s load ti p các nút con t ng ng đ n i vào nh ng nút đang cĩ. Quy trình th c hi n trên đã c i thi n
đáng k t c đ cho ch ng trình.
Vì khuơn kh gi i h n c a khĩa lu n, do đĩ ph n báo cáo v ng d ng ch s trình bày m t s các ch c n ng c b n d i d ng s đ ho c b ng các mơ t s l c v cách hi n th c. Ch c n ng s đ c trình bày ti p theo là ch c n ng t o gĩi n i dung c ng đ c mơ t theo s đ d i đây:
L a ch n hình th c t o Nh p tên gĩi và n i ch a gĩi n i dung L a ch n tài nguyên Copy th m c và t p tin vào n i ch a T o các t p tin c u hình t ng ng Gi i nén gĩi vào n i ch a Gĩi n i dung m i T o t tài nguyên T th m c T gĩi n i dung Là gĩi m i
Hình 3.2.3 S đ quy trình th c hi n hành đ ng t o gĩi n i dung
M t ch c n ng ti p theo khá là quan tr ng c a ng d ng đĩ là ch c n ng đĩng gĩi n i dung. Nhi m v c a ch c n ng này là s t p h p t t c các tài nguyên c a ng i dùng c ng nh các t p tin c u hình cho gĩi vào m t t p tin nén (t p tin ZIP). Do gi i thu t nén và gi i nén là m t ch c n ng l n nên ng d ng ch s d ng các hàm th vi n cĩ s n c a .NET 2.0. T c đ nén và gi i nén t p tin c a th vi n khá t t và khơng gi i h n v s byte cĩ th nén và gi i nén.