YOMEDIA
ADSENSE
Chuyên đề Unix và Windows2k
34
lượt xem 1
download
lượt xem 1
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Lập trình phân tán là một trong những vấn đề nóng bỏng của công nghệ phần mềm hiện nay. Một trong những vấn đề được giới lập trình cơ sở dữ liệu nói riêng, trong đó có một phương thức khá quan trọng là RMI (Remote Method Invoke: tạm dịch là phương thức gọi từ xa)
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Chuyên đề Unix và Windows2k
- Trang 3 Ch-¬ng I TæNG QUAN VÒ ®Ò TµI LËp tr×nh ph©n t¸n lµ mét trong nh÷ng vÊn ®Ò nãng báng cña céng nghÖ phÇn mÒm hiÖn nay. Mét trong nh÷ng vÊn ®Ò ®-îc giíi lËp tr×nh quan t©m s©u s¾c trong lËp tr×nh m¹ng nãi chung vµ lËp tr×nh c¬ së d÷ liÖu nãi riªng, trong ®ã cã mét ph-¬ng thøc kh¸ quan träng lµ RMI (Remote Method Invoke : t¹m dÞch lµ ph-¬ng thøc gäi tõ xa). Th«ng th-êng mçi ch-¬ng tr×nh chóng ta cã thÓ viÕt d-íi d¹ng thñ tôc (Procedure) hay hµm (Function) mµ c¸c hµm hay thñ tôc nµy ®-îc n¹p th¼ng vµo ký øc vµ thùc thi ngay trªn m¸y cô bé. §iÒu mµ c¸c lËp tr×nh viªn quan t©m ë ®©y kh«ng ph¶i lµ c¸ch cµi ®Æt thñ tôc hay hµm mµ chÝnh lµ ®èi sè tr¶ vÒ cña chóng lµ nh- thÕ nµo? C©u hái ®Æt ra ë ®©y lµ liÖu cã ph-¬ng ph¸p nµo ®Ó gäi c¸c hµm hay thñ tôc tõ mét m¸y bÊy kú nµo ®ã trong cïng m¹ng ®Ó sö dông ngay trªn m¸y thùc thi ®-îc kh«ng? §©y chÝnh lµ néi dung chÝnh cña lËp tr×nh m· lÖnh vµ còng lµ yÕu tè chÝnh trong lËp tr×nh ph©n t¸n ®èi t-îng b»ng RMI. – mang ý nghÜa triÖu gäi ph-¬ng thøc tõ xa lµ c¸ch giao tiÕp gi÷a c¸c ®ãi t-îng Java cã m· lÖnh cµi ®Æt (bao gåm c¸c ph-¬ng ph-¬ng thøc, thuéc tÝnh vµ kh«ng lo¹i trõ c¸c ph-¬ng thøc gäi c¬ së d÷ liÖu) n»m trªn c¸c m¸y kh¸c nhau cã thÓ triÖu gäi lÉn nhau. RMI ®· rÊt thµnh c«ng trong viÖc t-¬ng t¸c c¸c øng dông tõ giao diÖn ng-êi dïng. Chóng ta cã thÓ ®Þnh nghÜa c¸c ph-¬ng thøc mµ bao gåm sù t-¬ng t¸c giao diÖn ng-êi dïng vµ mét kh¸c hµng (Client) vµ sau ®ã t¹o c¸c t-¬ng t¸c kÕt nèi b»ng RMI. SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 4 * M« h×nh ph©n t¸n ®èi t-îng. Computer A Computer C A2 C2 C1 A1 C3 A1 Computer B H×nh 1.1 H×nh 1.1 cho ta m« h×nh triÖu gäi ®èi t-îng ph©n t¸n. Theo thãi quen th«ng th-êng chóng ta ®· lËp tr×nh theo phong c¸ch gäi qua l¹i gi÷a c¸c m«®un trªn m¸y côc bé. Víi RMI trong java ta cã thÓ thùc hiÖn ph-¬ng thøc gäi qua l¹i gi÷a c¸c m¸y kh¸c nh- biÔu diÔn trªn. ViÖc gäi ph-¬ng thøc tõ xa tho¹t nh×n cã vÏ ®¬n gi¶n nh-ng thùc tÕ l¹i phøc t¹p h¬n nhiÒu ph-¬ng ph¸p triÖu gäi côc bé. * C¸c kü thuËt lËp tr×nh ph©n t¸n ®èi t-îng b»ng RMI. Cã thÓ nãi RMI lµ mét m« h×nh kh¸ réng lín trong lËp tr×nh Java vµ sau ®©y lµ mét sè kü thuËt ®iÓn h×nh: * Vai trß cña c¸c líp trung gian: Nh- chóng ta ®· gÆp trong ph-¬ng thøcgäi trªn m¸y côc bé lµ mét ph-¬ng ph¸p gäi trùc tiÕp nh-ng ®iÒu nµy kh«ng thÓ dïng trong m« h×nh nhiÒu m¸y géi lÉn nhau nªn chóng ta ph¶i dïng qua c¸c líp trung gian: STUB, SKEL. - ChuyÓn tham sè trong c¸c lêi gäi ph-¬ng thøc tõ xa. - TuÇn tù hãa (Seriazable) ®èi t-îng. - RMIregistry vµ c¸c ®¨ng ký ®èi t-îng. - Dïng mét ®èi t-îng s¶n sinh nhiÒu ®èi t-îng.(Factory Object) SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 5 - Kü thuËy gäi ®èi t-îng tõ xa b»ng ph-¬ng thøc ®éng. (Dynamic Method Invoke) - Tù ®éng kÝch ho¹t ®èi t-îng tõ xa( Activation). - Tr×nh måi n¹p tõ xa - . . . vµ mét sè kü thuËt kh¸c. T×m hiÓu vÒ c¬ së d÷ liÖu ph©n t¸n. SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 6 Ch-¬ng II C¬ së lý thuyÕt II.1. Giíi thiÖu Java lµ mét ng«n ng÷ lËp tr×nh do c«ng ty Sun Microsystems ph¸t triÓn vµo ®Çu thËp kû 1990. XuÊt ph¸t ®iÓm cña ng«n ng÷ nµy lµ mét dù ¸n nghiªn cøu cña c«ng ty trong ®ã lóc ®Çu c¸c nhµ nghiªn cøu dïng C++. Ngay sau ®ã nhãm nghiªn cøu ®· cho r»ng hä cÇn mét thø g× ®ã tèt h¬n thÕ. C¸c nhµ nghiªn cøu nµy ®Òu lµ c¸c lËp tr×nh viªn xuÊt s¾c, do vËy hä ®· b¾t tay ngay vµo viÖc x©y dùng mét ng«n ng÷ lËp tr×nh míi b»ng c¸ch tËn dông c¸c ý t-ëng hay cña c¸c ng«n ng÷ lËp tr×nh kh¸c. Víi nh÷ng ®iÓm m¹nh nh- h-íng ®èi t-îng, tÝnh kh¶ chuyÓn cao, kh«ng phô thuéc vµo m«i tr-êng xö lý (phÇn cøng m¸y tÝnh vµ hÖ ®iÒu hµnh), cã kh¶ n¨ng biªn dÞch, hç trî c¸c th- viÖn cho lËp tr×nh c¸c øng dông CSDL ph©n t¸n vµ Internet, dÔ truyÒn th«ng,... Java ®· vµ sÏ trë thµnh mét ng«n ng÷ m¹nh trong hiÖn t¹i vµ t-¬ng lai. Java lµ mét ng«n ng÷ lËp tr×nh cßn kh¸ míi mÎ, nh-ng nã l¹i cã mét sè ®Æc ®iÓm kh¸ m¹nh vµ hç trî viÖc lËp tr×nh trªn Web tèt nªn còng ®· ®-îc nhiÒu ng-êi lËp tr×nh sö dông. Java lµ mét NNLT h-íng ®èi t-îng, nã thõa h-ëng kh¸ nhiÒu ®Æc tÝnh tõ C vµ C++ nªn viÖc häc nã sÏ kh«ng khã kh¨n g× ®èi víi nh÷ng ng-êi ®· lµm viÖc víi C/C++, thËm chÝ nã cßn ®¬n gi¶n h¬n. Java ®-îc x©y dùng chñ yÕu trong bé c«ng cô ph¸t triÓn Java (Java Developers Kit - JDK ) do Sun cung cÊp bao gåm mét sè ch-¬ng tr×nh tiÖn Ých cho phÐp b¹n biªn dÞch, b¾t lçi vµ t¹o tµi liÖu cho mét øng dông Java vµ c¸c th- viÖn chuÈn cña nã. HiÖn nay trªn thÞ tr-êng ®ang cã rÊt nhiÒu m«i tr-êng ph¸p triÓn Java cña h·ng thø ba rÊt tiÖn lîi (nh- Visual J++, Symantec Cafe,..), nh-ng tÊt c¶ c¸c ch-¬ng tr×nh nµy ®Òu dùa trªn nÒn JDK. C¸c tr×nh tiÖn Ých cña JDK bao gåm: javac : Bé biªn dÞch Java: Lµm nhiÖm vô chuyÓn m· nguån Java sang bytecode. java Bé th«ng dÞch Java: Thùc thi c¸c øng dông Java trùc tiÕp tõ tËp tin líp (class). appletviewer : Mét tr×nh th«ng dÞch Java thùc thi c¸c Java applet tõ tËp tin HTML. SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 7 javadoc : T¹o tµi liÖu d¹ng HTML tõ m· nguån cïng víi c¸c chó thÝch bªn trong. jdb Java debuger: Cho phÐp b¹n thùc hiÖn tõng dßng trong ch-¬ng tr×nh, ®Æt c¸c ®iÓm dõng (breakpoint), xem gi¸ trÞ c¸c biÕn. javah : T¹o ra tËp tin header cña C cho phÐp C gäi hµm Java hoÆc ng-îc l¹i. javap : Tr×nh dÞch ng-îc java (disassembler): HiÓn thÞ c¸c hµm vµ d÷ liÖu truy cËp ®-îc bªn trong mét tËp tin líp ®· dÞch. Nã còng cho phÐp hiÓn thÞ nghÜa cña bytecode. Ngµy nay c¸c nhµ ph¸t triÓn phÇn mÒm ®· x©y dùng thªm rÊt nhiÒu nh¸nh míi nh- JavaMail( Java Th- TÝn), JavaTAPI (Java ViÓn Th«ng), .... II.2. C¸c §Æc §iÓm C¬ B¶n Cña Java H-íng ®èi t-îng : LËp tr×nh h-íng ®èi t-îng (OOP) lµ ph-¬ng thøc viÕt c¸c øng dông dÔ b¶o tr×, dÔ n©ng cÊp vµ ®Æc biÖt lµ cã thÓ t¸i sö dông c¸c m· lÖnh. Java lµ mét ng«n ng÷ h-íng ®èi t-îng, do ®ã nã cã ®Çy ®ñ c¸c ®Æc tÝnh trªn. Ngoµi ra, th- viÖn líp Java cung cÊp kh¸ ®Çy ®ñ cho ng-êi lËp tr×nh ®Ó b¾t ®Çu mét dù ¸n míi. Java cã kh¶ n¨ng ®a luång : C¸c øng dông viÕt b»ng Java cã thÓ cã nhiÒu tiÕn tr×nh ®-îc xö lý cïng mét lóc. Mét øng dông ®¬n luång chØ cã thÓ thùc hiÖn mét t¸c vô t¹i mét thêi ®iÓm: Gi¶ sö øng dông ®ang bËn lÊy tõ trªn m¹ng xuèng mét tËp tin mÊt vµi phót, trong thêi gian nµy øng dông kh«ng thÓ lµm c¸c viÖc kh¸c nh- vÏ l¹i mµn h×nh... Víi øng dông viÕt b»ng Java, b¹n cã thÓ t¹o hai tiÕn tr×nh song song lµm viÖc: mét tiÕn tr×nh n¹p tËp tin, mét tiÕn tr×nh kh¸c lµm nhiÖm vô cËp nhËt mµn h×nh. Java cung cÊp kh¶ n¨ng lËp tr×nh trªn m¹ng : cung cÊp c¸c c«ng cô còng cho phÐp thùc hiÖn c¸c phiªn kÕt nèi lµm viÖc dÔ rµng gi÷a c¸c m¸y tÝnh trong m¹ng sö dông giao thøc TCP/IP. C¸c kÕt nèi nµy dùa trªn cÆp gi¸ trÞ ®Þc chØ IP cña m¸y vµ ®Þa chØ cæng TCP cña dÞch vô (cÆp gi¸ trÞ nµy gäi lµ mét socket). Cã hai chÕ ®é kÕt nèi chÝnh: Datagram vµ Client/Server. SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 8 II.3. Liªn l¹c trªn Internet: Giao thøc: TCP / IP: Khi hai hay nhiÒu m¸y tÝnh nèi m¹ng, chóng ph¶i dïng mét bé quy -íc chung ®Ó cã thÓ hiÓu vµ nãi chuyÖn ®-îc víi nhau. Mét bé quy -íc nh- vËy hay cßn gäi lµ 1 giao thøc. Trªn Internet ngµy nay, giao thøc ®-îc dïng phæ biÕn nhÊt lµ TCP / IP. Theo giao thøc nµy, mçi m¸y ®-îc ®Æt cho 1 sè riªng biÖt gäi lµ ®Þa chØ IP (cã vai trß t-¬ng tù nh- sè ®iÖn tho¹i). Ch¼ng h¹n m¸y tÝnh Web server cña Microsoft cã ®Þa chØ IP lµ: 207.46.230.219. C¸c sè nµy lµ duy nhÊt, kh«ng cã bÊt kú 1 m¸y nµo ®-îc phÐp cã ®Þa chØ IP trïng nhau trªn toµn thÕ giíi. Khi mét m¸y muèn tham gia vµo Internet víi t- c¸ch lµ mét m¸y chñ (host hay Server) th× cÇn ®-îc ®¨ng ký víi mét tæ chøc quèc tÕ gäi lµ InterNIC (Internet Network Information Center) ®Ó ®-îc cÊp cho mét ®Þa chØ IP. Nh÷ng con sè cña ®Þa chØ IP rÊt khã nhí vµ kh«ng th©n thiÖn cho ng-êi dïng. Thay vµo ®ã ng-êi ta ®· ®-a ra kh¸i niÖm tªn vïng. Thùc ra tªn vïng chÝnh lµ ¸nh x¹ cña ®Þa chØ IP. Vd: M¸y chñ Microsoft ë ®Þa chØ IP: 207.46.230.219 t-¬ng øng víi tªn www.microsoft.com Mét ®Þa chØ IP cã thÓ ®-îc ®Æt nhiÒu tªn kh¸c nhau nh-ng mét tªn chØ cã thÓ t-¬ng øng víi 1 IP. Tªn cña m¸y chñ cßn ®-îc gäi lµ tªn miÒn (domain name) bëi v× chóng ®-îc ®Æt theo thø tù ph©n cÊp cña tªn l·nh thæ, vïng, tæ chøc .... Mçi nhãm ph©n cÊp c¸ch nhau bëi 1 dÊu (.) VÝ dô: Java.sun.com Tªn MT Tªn tæ chøc Tªn vïng * Giao tiÕp trªn m¹ng theo m« h×nh kh¸ch/chñ : Theo m« h×nh nµy th× mçi dÞch vô trªn m¹ng sÏ ®-îc thùc hiÖn bëi mét cÆp ch-¬ng tr×nh. Mét ch-¬ng tr×nh ®ãng vai trß lµ nhµ cung cÊp dÞch vô, ®-îc SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 9 gäi lµ ch-¬ng tr×nh Server. Mét ch-¬ng tr×nh ®ãng vai trß lµ ng-êi yªu cÇu dÞch vô hay cßn gäi lµ client (kh¸ch hµng). Mét server cÇn ph¶i phôc vô ®-îc cho nhiÒu client. Client/Server chØ lµ kh¸i niÖm mang tÝnh Logic. NghÜa lµ c¶ hai ch-¬ng tr×nh ®Òu cã thÓ cïng ch¹y trªn mét m¸y vËt lý. Cã rÊt nhiÒu vÝ dô vÒ nh÷ng dÞch vô dùa trªn m« h×nh client / server nh- vËy. Ch¼ng h¹n nh-: tr×nh duyÖt vµ Web server, tr×nh gëi mail vµ Mail server ... II.4. M« h×nh øng dông 3_tÇng(3_tier application) : Sù m«®un ho¸ lµ mét xu thÕ bao trïm trªn nhiÒu ngµnh kü thuËt hiÖn nay. Trong ngµnh CNTT th× xu thÕ ®ã thÓ hiÖn rÊt ®Ëm nÐt. Tr-íc tiªn lµ sù m«®un ho¸ phÇn cøng. ý t-ëng nµy ®· ®-îc ®Þnh h-íng xuyªn suèt trong qu¸ tr×nh ph¸t triÓn cña phÇn cøng m¸y tÝnh. Ngay tõ nh÷ng b¶n thiÕt kÕ m¸y tÝnh ®Çu tiªn ng-êi ta ®· biÕt ph©n t¸ch phÇn C«ng viÖc ra khái phÇn l-u tr÷ vµ hiÓn thÞ. Qu¸ tr×nh m«®un ho¸ diÔn ra theo h-íng ngµy cµng triÖt ®Ó h¬n. Ngµy nay trªn mét thiÕt bÞ nhá nh- Card ©m thanh ch¼ng h¹n ta còng cã thÓ tr«ng thÊy nh÷ng m«®un nhá h¬n n÷a ®-îc s¶n xuÊt tõ nh÷ng h·ng kh¸c nhau. Sù m«®un ho¸ cã mét ý nghÜa rÊt quan träng. Nã t¹o thuËn lîi cho viÖc b¶o tr×, söa ch÷a còng nh- ®æi míi, ph¸t triÓn s¶n phÈm. ý t-ëng rÊt gi¸ trÞ nµy ®· nhanh chãng ®-îc ng-êi ta ¸p dông vµo lÜnh vùc phÇn mÒm. Còng nh- ë phÇn cøng, trong lÜnh vùc ph¸t triÓn phÇn mÒm xu thÕ m«®un ho¸ diÔn ra theo h-íng ngµy cµng s©u s¾c, triÖt ®Ó h¬n. N»m trong xu h-íng lín ®ã, tõ l©u nay ng-êi ta ®· sö dông m« h×nh øng dông 2 líp. Theo m« h×nh nµy th× mét øng dông ®-îc chia lµm 2 m«®un lµ m«®un øng dông vµ m«®un c¬ së d÷ liÖu. Trong m«®un øng dông bao gåm c¶ phÇn Logic C«ng viÖc vµ phÇn tr×nh bµy (th-êng gäi lµ phÇn giao diÖn ng-êi dïng). Trong c¸c øng dông nhá th× m« h×nh nµy kh«ng ®Æt ra vÊn ®Ò g× c¶, bëi v× lóc ®ã mçi øng dông chØ thùc hiÖn mét tiÕn tr×nh C«ng viÖc ®Æc thï. Trong c¸c hÖ thèng lín th× nhiÒu øng dông cã thÓ cïng sö dông nh÷ng thµnh phÇn Logic C«ng viÖc nµo ®ã. Mçi khi cÇn thay ®æi Logic c«ng viÖc th× buéc ph¶i söa ®æi tÊt c¶ c¸c øng dông. §iÒu nµy g©y ra nh÷ng khã kh¨n vµ l·ng phÝ. SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 10 §Ó gi¶i quyÕt vÇn ®Ò nµy ng-êi ta ®· ®-a ra gi¶i ph¸p m« h×nh øng dông 3 líp. Tõ 2 líp chuyÓn sang 3 líp hay nhiÒu líp, ®©y l¹i lµ mét minh chøng cho xu thÕ m«®un ho¸. Theo m« h×nh 3 líp th× mét øng dông sÏ ®-îc chia lµm 3 m«®un (hay 3 líp) lµ : tr×nh bµy øng dông, líp Logic c«ng viÖc vµ líp CSDL Application Application Appication Tr×nh bµy Database Logic c«ng viÖc Logic C«ng viÖc Database CSDL Database H×nh II.4.a M« h×nh øng dông 2_tÇng H×nh II.4.b M« h×nh øng dông 3_tÇng C«ng nghÖ Rmi chÝnh lµ ph-¬ng ph¸p tuyÖt h¶o ®Ó x©y dùng c¸c øng dông 3 líp trªn m¹ng b»ng ng«n ng÷ Java. Víi Rmi cã thÓ dÔ dµng t¸ch phÇn Logic c«ng viÖc ra khái øng dông. øng dông cña b¹n cã thÓ ch¹y trªn m¸y nµy cßn phÇn Logic c«ng viÖc cña nã cã thÓ n»m ®©u ®ã trªn m¹ng toµn cÇu. §©y lµ mét ý t-ëng rÊt thó vÞ vµ hiÖn ®ang lµ ®Ò tµi nãng báng cña c«ng nghÖ phÇn mÒm. SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 11 II.5. C¸c ®Æc tr-ng cña c«ng nghÖ Java RMI §óng nh- tªn gäi cña nã, môc ®Ých cña c«ng nghÖ RMI lµ ®-a ra gi¶i ph¸p cho phÐp mét sè ®èi t-îng Java ®ang n»m trªn m¸y ¶o Java nµy cã thÓ triÖu gäi ®Õn c¸c ph-¬ng thøc cña mét ®èi t-îng Java ®ang n»m trªn mét m¸y ¶o Java kh¸c (tÊt nhiªn lµ JVM nµy cã thÓ n»m trªn mét m¸y tÝnh kh¸c trªn m¹ng). B»ng c¸ch nµy, mét ®èi t-îng cã thÓ nhê mét ®èi t-îng "chuyªn nghiÖp" trªn m¸y kh¸c tÝnh to¸n hé cho m×nh mét kh©u ®o¹n nµo ®ã trong ch-¬ng tr×nh, sau ®ã nhËn vÒ kÕt qu¶ vµ tiÕp tôc tiÕn tr×nh xö lý. §iÒu nµy gièng nh- mét c«ng ty sö dông nhiÒu chi tiÕt ®-îc chÕ t¹o bëi c¸c c«ng ty kh¸c ®Ó t¹o ra s¶n phÈm cña m×nh. M« h×nh øng dông ph©n t¸n nh- trªn gióp ta phèi hîp søc m¹nh cña nhiÒu m¸y tÝnh ®Ó t¹o nªn søc m¹nh tæng thÓ, mét quy m« míi cã tÝnh kinh tÕ cao h¬n. Trong m« h×nh nay, ®èi t-îng yªu cÇu dÞch vô tõ xa ®-îc gäi lµ RMI client. Cßn ®èi t-îng cung cÊp dÞch vô gäi lµ RMI Server. Do hai ®èi t-îng n¨m trªn hai m¸y kh¸c nhau nªn nã ho¹t ®éng trªn hai tiÕn tr×nh hay hai kh«ng gian ®Þa chØ kh¸c nhau. VÝ dô, khi ta truyÒn con trá cho mét ph-¬ng thøc ë xa, trªn m¸y client th× con trá nµy tån t¹i nh-ng trªn m¸y server (n¬i cã ®èi t-îng thùc thi ph-¬ng thøc) sÏ kh«ng cã bÊt kú vïng nhí nµo ®-îc cÊp ph¸t giµnh cho con trá. Lêi gäi mét ph-¬ng thøc côc bé (trªn cïng mét m¸y) lu«n tr¶ vÒ kÕt qu¶ trong khi lêi gäi c¸c ph-¬ng thøc tõ xa ph¶i th«ng qua kÕt nèi m¹ng vµ lóc nµo còng cã thÓ bÞ ng¾t qu¶ng do gÆp sù cè. §Ó gi¶i quyÕt khã kh¨n trªn, ®èi t-îng client Rmi sÏ gäi ®Õn ®èi t-îng server Rmi th«ng qua 2 líp trung gian. Mét líp n»m trªn m¸y client gäi lµ líp mãc c©u (stub) vµ mét líp kh¸c n»m trªn m¸y server gäi lµ líp cÇn c©u (skeleton). Líp stub ®ãng vai trß nh- lµ mét ng-êi ®¹i diÖn toµn quyÒn cho mét "c«ng ty" chuyªn cung cÊp dÞch vô, ®-îc cö ®Õn lµm viÖc ë m¸y client. §èi t-îng nµo ë m¸y nµy cã nhu cÇu "mua" c¸c dÞch vô cña "c«ng ty" th× sÏ ®Õn ®¨ng ký ë ng-êi ®¹i diÖn stub. Stub sÏ liªn l¹c víi trô së "c«ng ty" cña m×nh ®Ó thùc hiÖn yªu cÇu. Nh-ng sù liªn l¹c nµy cßn ph¶i th«ng qua mét ng-êi "th- ký" n÷a tªn lµ skeleton n»m ë m¸y server. §Ó mét ®èi t-îng cã kh¶ n¨ng "phôc vô tõ xa" cho ®èi t-îng kh¸c th× ®èi t-îng ®ã nhÊt thiÕt ph¶i ®-îc t¹o ra tõ mét líp thi c«ng giao diÖn xa (remote SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 12 interface) nµo ®ã. C¸c ®èi t-îng client sÏ "nhê v¶" ®èi t-îng server th«ng qua giao diÖn Êy. C¸c yªu cÇu tÝnh to¸n ®-îc diÔn ®¹t bëi ®Æc t¶ cña c¸c ph-¬ng thøc trong líp interface. Cßn chi tiÕt cµi ®Æt cña c¸c ph-¬ng thøc nµy l¹i ®-îc thùc hiÖn trong líp thi c«ng giao diÖn. Nhê sù t¸ch biÖt líp Interface vµ líp Interface Implement (thi c«ng giao diÖn) nªn ng-êi ta cã thÓ tuú ý söa ®æi, n©ng cÊp c¸c tÝnh n¨ng trong líp thi c«ng mµ toµn hÖ thèng kh«ng hÒ bÞ ¶nh h-ëng. §©y chÝnh lµ nguyªn lý ®Ó t¸ch tÇng Logic c«ng viÖc ra khái phÇn tr×nh bµy øng dông trong m« h×nh øng dông 3_tÇng ®· ®Ò cËp ë trªn. Nh- vËy, viÖc x©y dùng mét ch-¬ng tr×nh Java RMI ®-îc triÓn khai qua c¸c b-íc sau: 1. X©y dùng giao diÖn xa chøa ®Æc t¶ chøa c¸c ph-¬ng thøc gäi xa. 2. X©y dùng líp thi c«ng giao diÖn ®Ó cµi ®Æt c¸c ph-¬ng thøc trªn. §©y chÝnh lµ RMI server. 3. T¹o ra c¸c líp stub vµ skeleton cho ®èi t-îng RMI server. 4. ViÕt ch-¬ng tr×nh ®Ó ®¨ng ký ®èi t-îng chñ RMI nµy vµo "sæ ®¨ng ký" c¸c ®èi t-îng gäi xa cña m¸y chñ. 5. X©y dùng ®èi t-îng RMI client ®Ó triÖu gäi ®Õn c¸c ph-¬ng thøc cña ®èi t-îng RMI server th«ng qua líp giao diÖn cña nã. Trªn ®©y lµ nguyªn lý chung ®Ó triÓn khai mét øng dông Java RMI. Nh÷ng chi tiÕt kü thuËt cña qu¸ tr×nh nµy sÏ ®-îc tr×nh bµy râ trong phÇn triÓn khai øng dông ë phÝa d-íi : Tãm l¹i, mét øng dông RMI hoµn chØnh sÏ bao gåm c¸c thµnh phÇn sau: Trªn m¸y chñ cã: - Líp giao diÖn xa (Interface) - Líp thi c«ng giao diÖn (Interface Implement) - Líp stub vµ skeleton. - Líp ®¨ng ký vµ ch-¬ng tr×nh Rmiregistry ch¹y ë chÕ ®é background. Trªn m¸y tr¹m cã: - Líp giao diÖn - Líp stub SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 13 - Líp RMI Client ®Ó gäi c¸c ph-¬ng thøc tõ xa. II.6. C¸ch chuyÓn tham sè trong lêi gäi ph-¬ng thøc tõ xa Rmi Trong ng«n ng÷ Java, c¸c ®èi t-îng ®Òu ®-îc truyÒn theo tham chiÕu. Cßn c¸c kiÓu d÷ liÖu c¬ b¶n nh- int, char, ... ®-îc truyÒn theo tham trÞ. §©y lµ nguyªn t¾c truyÒn tham sè cho c¸c lêi gäi hµm tõ xa trong Rmi th× nguyªn t¾c nµy thay ®æi hoµn toµn. - TÊt c¶ c¸c d÷ liÖu c¬ b¶n nh- int, char... ®Òu ®-îc truyÒn theo tham trÞ. - TÊt c¶ c¸c d÷ liÖu kiÓu ®èi t-îng muèn truyÒn qua m¹ng ®Òu ph¶i cµi ®Æt 1 trong 2 giao tiÕp lµ Remote hoÆc Serializable. C¸c ®èi t-îng cµi ®Æt giao tiÕp Remote ®-îc truyÒn theo tham chiÕu cßn c¸c ®èi t-îng cµi ®Æt giao tiÕp Serializable sÏ ®-îc truyÒn theo tham trÞ. II.6.1. ChuyÓn ®èi t-îng ®Õn tr×nh chñ theo tham trÞ: HÇu hÕt c¸c kiÓu d÷ liÖu ®èi t-îng c¬ b¶n nh- String, Date, Time... trong Java ®Òu ®· ®-îc cµi ®Æt giao tiÕp Serinlizable cho nªn chóng ®-îc truyÒn cho c¸c lêi gäi hµm xa theo trÞ. Víi c¬ chÕ truyÒn tham sè ®èi t-îng theo trÞ trong c¸c lêi gäi hµm xa, ®èi t-îng tham sè sÏ ®-îc ®ãng gãi vµ chuyÓn toµn bé ®Õn m¸y chñ (n¬i tiÕp nhËn tham sè vµ thùc thi ph-¬ng thøc t-¬ng øng). T¹i m¸y chñ, ®èi t-îng sÏ ®-îc bung ra l¹i tr¹ng th¸i ban ®Çu vµ ®-a vµo sö dông. Qu¸ tr×nh ®ãng gãi tham sè trªn m¸y kh¸ch ®-îc thùc hiÖn bëi líp trung gian - Stub, ng-îc l¹i qu¸ tr×nh më gãi d÷ liÖu ®Ó kh«i phôc ®èi t-îng tham sè diÔn ra trªn m¸y chñ ®-îc thùc hiÖn bëi líp trung gian - Skel. Quy tr×nh chuyÓn tham sè qua l¹i gi÷a hai líp - Stub vµ - Skel nµy trong lËp tr×nh ph©n t¸n gäi lµ c¬ chÕ mashaling data. II.6.2. ChuyÓn ®èi t-îng ®Õn tr×nh chñ theo tham chiÕu Trong tr-êng hîp ®èi t-îng tham sè ®-îc truyÒn qua m¹ng cã kÝch th-íc qu¸ lín th× viÖc ®ãng gãi toµn bé ®èi t-îng ®Ó truyÒn ®i sÏ ¶nh h-ëng ®Õn tèc ®é thùc thi cña ch-¬ng tr×nh. Do vËy cÇn ph¶i cã mét gi¶i ph¸p ®Ó tr×nh chñ cã thÓ tham chiÕu vµ xö lý trùc tiÕp ®èi t-îng tham sè ®ang n»m ë m¸y kh¸ch mµ ®èi t-îng nµy kh«ng cÇn ph¶i ®-îc chuyÓn ®Õn m¸y chñ. §iÒu nµy hoµn toµn cã thÓ thùc hiÖn ®-îc b»ng c¸ch cho phÐp tr×nh chñ gäi hµm xa ng-îc l¹i ®Õn tr×nh kh¸ch. Thùc ra lóc nµy mçi phÇn øng dông nªu trªn ®Òu ®ãng c¶ hai vai SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 14 trß lµ tr×nh chñ vµ tr×nh kh¸ch Rmi. ThËt ra víi ý nghÜa lµ ng-êi cung cÊp c¸c dÞch vô tÝnh to¸n th× vai trß Server cña ®èi t-îng chñ vÉn kh«ng thay ®æi nh-ng khi cÇn truyÒn tham sè kiÓu ®èi t-îng (theo tham chiÕu) qua m¹ng th× nã t¹m thêi "h¹ m×nh" ®ãng vai kh¸ch ®Ó tham chiÕu ®Õn ®èi t-îng tham sè ®ang n»m trªn m¸y kh¸ch. §Ó cã thÓ tham chiÕu ®-îc qua m¹ng th× ®èi t-îng tham sè cÇn ph¶i ®-îc x©y dùng theo c¸c tr×nh tù y nh- lµ mét Rmi Server "Thø thiÖt' NghÜa lµ : - Nã ph¶i cµi ®Æt giao tiÕp Remote - Ph¶i kÌm theo c¸c líp trung gian Stub vµ Skel ®-îc t¹o ra bëi tr×nh Rmic cña Java. - Mét líp Stub cña nã ph¶i ®-îc ®Æt trªn m¸y chñ (lóc nay ®ang t¹m lµ kh¸ch) nh- mét ®¹i diÖn toµn quyÒn (®Ó thùc hiÖn c¬ chÕ truyÒn d÷ liÖu mashaling ®· ®Ò cËp). - Tuy nhiªn Rmi cho phÐp ®èi t-îng kiÓu nµy kh«ng cÇn ph¶i ®¨ng ký víi rmiregistry. C¬ chÕ gäi ng-îc tõ xa cña tr×nh chñ ®Õn tr×nh kh¸ch th«ng qua tham chiÕu (c¬ chÕ call back) nµy rÊt h÷u hiÖu cho tr×nh kh¸ch thiÕt lËp c¸c yªu cÇu tuú biÕn mµ kh«ng ph¶i phô thuéc qu¸ nhiÒu vµo tr×nh chñ. Mét c¸ch h×nh t-îng th× lóc nµy kh¸ch hµng ®· ®-îc phôc vô tèt h¬n. Së dÜ ®-îc nh- vËy lµ do tr×nh kh¸ch cã thÓ truyÒn tham sè mét c¸ch "tho¶ m¸i" trong lêi gäi hµm xa mµ kh«ng ph¶i lo l¾ng vÒ kÝch th-íc cña ®èi t-îng tham sè. Kü thuËt Callback cßn cho phÐp tr×nh chñ ®¸nh thøc tr×nh kh¸ch ®Ó tr¶ vÒ kÕt qu¶ mçi khi tÝnh to¸n xong. §iÒu nµy rÊt cã ý nghÜa trong thùc tÕ. Bëi v× mét lÏ ®¬n gi¶n lµ khi client yªu cÇu mét dÞch vô nã kh«ng thÓ biÕt chÝnh x¸c lµ trong bao l©u th× server sÏ tÝnh to¸n xong. Vµ sÏ kh¸ bÊt tiÖn khi client cø ph¶i ®Þnh kú gäi ®Õn server ®Ó th¨m dß xem server ®· tÝnh to¸n xong ch-a. Callback cho phÐp server chñ ®éng gäi hµm xa ng-îc l¹i ®Õn client ®Ó tr¶ vÒ kÕt qu¶. Kü thuËt call back lµm gi¶m rÊt nhiÒu dung l-îng d÷ liÖu ph¶i l-u th«ng trªn m¹ng, do ®ã lµm t¨ng ®¸ng kÓ tèc ®é thùc thi cña ch-¬ng tr×nh. Thùc ra, néi dung cña Rmi cßn bao gåm mét sè vÊn ®Ò kh¸c nh- tù ®éng n¹p líp Client tõ Web Server, ®èi t-îng Factory... §Êy lµ nh÷ng kü thuËt mang SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 15 tÝnh phô trî, bæ sung vµ ngµy cµng phong phó h¬n cïng víi c¸c phiªn b¶n míi cña JDK. V× ph¹m vi b¶n b¸o c¸o cã h¹n nªn nh÷ng néi dung nµy xin ®-îc tr×nh bµy trong mét dÞp kh¸c. II.7 khai th¸c c¬ së d÷ liÖu trªn java Ngµy nay cã rÊt nhiÒu hÖ thèng Database kh¸c nhau, nÕu kh«ng cã mét chuÈn chung ®Ó giao tiÕp gi÷a nh÷ng hÖ thèng Database nµy th× khi øng dông chuyÓn ®æi tõ hÖ thèng Database nµy sang hÖ thèng kh¸c, m· cña ch-¬ng tr×nh ph¶i thay ®æi l¹i cho phï hîp. §Ó gi¶i quyÕt t×nh tr¹ng ®ã, ng-êi ta ®· ®-a ra mét chuÈn ®Ó c¸c kiÓu Database kh¸c nhau cã thÓ giao tiÕp ®-îc víi nhau. §ã lµ ODBC. ODBC lµ mét líp trõu t-îng gi÷a ch-¬ng tr×nh øng dông vµ hÖ thèng Database. Líp nµy cho phÐp chóng ta sö dông c¸c ph¸t biÓu theo ng«n ng÷ SQL ®Ó truy xuÊt nh÷ng Database cã hæ trî ng«n ng÷ SQL vµ mét sè Database kh¸c. II.7.1. C¬ chÕ ODBC ODBC ( Open Database Connectivity ) lµ mét giao tiÕp CSDL phæ biÕn nhÊt trong c¸c m¸y tÝnh c¸ nh©n theo chuÈn IBM vµ dÇn dÇn ®i vµo c¸c m«i tr-êng kh¸c. ODBC cung cÊp c¸c hµm cho phÐp c¸c ng«n ng÷ lËp tr×nh truy cËp vµo CSDL, c¸c thao t¸c nµy bao gåm viÖc thªm, söa, xo¸, xem d÷ liÖu, th«ng tin chi tiÕt vÒ CSDL... II.7.2. C¬ chÕ JDBC II.7.2.1. Tæng quan vÒ JDBC JDBC - Java Database Connectivity API lµ mét phÇn cña c¸c hµm Java API cho m«i tr-êng xÝ nghiÖp do Sun Microsystems, Inc ph¸t triÓn. JBCD ®-îc coi lµ mét cè g¾ng chuÈn ho¸ ®Çu tiªn ®Ó tÝch hîp CSDL quan hÖ víi c¸c ch-¬ng tr×nh Java. JDBC chøa mét tËp hîp c¸c ®èi t-îng vµ c¸c ph-¬ng thøc cña CSDL quan hÖ ®Ó giao tiÕp víi c¸c nguån d÷ liÖu SQL ( SQL Data Sources ) . C¸c JDBC API ®-îc tÝch hîp trong Java vµ lµ mét phÇn c¬ b¶n trong c¸c cµi ®Æt cña m¸y ¶o Java. JDBC ®-îc giíi thiÖu lÇn ®Çu vµo n¨m 1996 víi b¶n nh¸p JDBC 0.50. §-îc cËp nhËt bæ xung vµ hoµn chØnh qua c¸c phiªn b¶n 1.0, 1.10, 1.20, 1.22 SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 16 vµ hiÖn nay lµ phiªn b¶n míi nhÊt JDBC 2.0 ®-îc tÝch hîp trong c¸c phiªn b¶n JDK 1.2, 1.22 vµ 1.3. JDBC ®-îc thiÕt kÕ dùa trªn X/Open SQL Call level Interface ( CLI giao tiÕp goi SQL theo chuÈn X/Open) II.7.2.2. C¸c kiÓu tr×nh ®iÒu khiÓn JDBC C¸c tr×nh ®iÒu khiÓn JDBC cã thÓ ph©n thµnh 4 kiÓu sau phô thuéc vµo c¸ch thøc ho¹t ®éng vµ c¸c kÕt nèi víi CSDL: CÇu nèi JDBC - ODBC : cung cÊp c¸c truy cËp JDBC th«ng qua c¸c truy cËp ODBC. V× trong nhiÒu CSDL m¸y kh¸ch c¸c lÖnh ODBC vµ lÖnh CSDL ph¶i ®-îc n¹p tr-íc trong m¸y kh¸ch ®ã, nªn kiÓu ®iÒu khiÓn nµy rÊt thÝch hîp víi c¸c øng dông ch¹y trªn nÒn m¸y chñ trong kiÕn tróc 3 líp Java. Tr×nh API gèc cã mét phÇn Java ( Native - API partly - Java technology - based drive) chuyÓn c¸c lÖnh gäi API trªn m¸y kh¸ch cña CSDL. Nh- thÕ nã ®ßi hái trªn m¸y kh¸ch còng cÇn ph¶i n¹p tr-íc mét sè lÖnh nhÞ ph©n cña c¸c tr×nh ch¹y trªn m¸y kh¸ch CSDL. Tr×nh giao thøc gèc hoµn toµn Java ( Native - protocol Java techology - based drive): biÕn c¸c lÖnh gäi JDBC thµnh c¸c giao thøc m¹ng gäi trùc tiÕp tõ hÖ qu¶n trÞ CSDL. Tr×nh nµy cho phÐp gäi trùc tiÕp tõ m¸y kh¸ch ®Õn m¸y chñ chøa DBMS vµ lµ gi¶i ph¸p thùc tÕ cho viÖc truy cËp Intranet. Tõ khi c¸c giao thøc nµy lµ thuéc tÝnh cña CSDL, c¸c nhµ cung øng CSDL còng muèn trë thµnh nguån tµi nguyªn chÝnh cho c¸c tr×nh theo phong c¸ch nµy. II.7.2.3. C¬ chÕ ho¹t ®éng cña JDBC C¬ chÕ ho¹t ®éng cña JDBC t-¬ng tù nh- ODBC nh-ng th«ng qua c¸c ®èi t-îng. Ch-¬ng tr×nh Java t¹o mét ®èi t-îng kÕt nèi (connection object) ®Ó thùc hiÖn viÖc kÕt nèi víi CSDL. T¹o mét ®èi t-îng Statement (c©u lÖnh) vµ chuyÓn c¸c c©u lÖnh SQL ®Õn CSDL th«ng qua ®èi t-îng nµy vµ nhËn biÕt vÒ c¸c kÕt qu¶( cã thÓ lµ c¸c th«ng tin hay tËp c¸c Records). §Ó gi¶m thêi gian trÔ, c¸c tËp tin JDBC class th-êng ®-îc n¹p s½n trªn m¸y kh¸ch. SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 17 C¸c líp JDBC n»m trong khèi Java.sql vµ mäi ch-¬ng tr×nh Java ®Òu dïng lªn c¸c ®èi t-îng vµ ph-¬ng thøc trong khèi java.sql ®Ó ®äc vµ viÕt lªn nguån d÷ liÖu. Mét ch-¬ng tr×nh Java dïng JDBC cÇn mét tr×nh ®iÒu khiÓn cho nguån d÷ liÖu mµ nã cÇn giao tiÕp. Tr×nh ®iÒu khiÓn nµy cã thÓ lµ mét modun gèc (native modunle) nh- JDBCODBC.dll (th- viÖn cÇu nèi JDBC-ODBC ), hay còng cã thÓ lµ mét ch-¬ng tr×nh Java kh¸c trao ®æi víi m¸y chñ th«ng qua c¸c giao thøc HTTP, hay RPC... Trong tr-êng hîp mét øng dông lµm viÖc víi nhiÒu c¬ së d÷ liÖu, JDBC cã mét tr×nh qu¶n lý c¸c bé ®iÒu khiÓn vµ cung cÊp danh s¸ch c¸c bé ®iÒu khiÓn ®· ®-îc øng dông sö dông. II.7.2.4. Nèi kÕt víi CSDL qua khèi JAVA.SQL JDBC ®-îc cµi ®Æt th«ng qua khèi java.sql. Khèi nµy chøa tÊt c¶ c¸c líp vµ ph-¬ng thøc cña JDBC vµ ®-îc ph©n thµnh hai phÇn:phÇn c¬ së(Code API) ®uîc cµi ®Æt kÌm theo JDK 1.2,phÇn më réng (Standard Extension)sÏ ®-îc cµi ®Æt riªng nh- phÇn tuú chän. II.7.3 C¬ b¶n vÒ m« h×nh c¬ së d÷ liÖu ph©n t¸n C«ng nghÖ vµ c¬ së d÷ liÖu ph©n t¸n(distributed database systems,DDB) lµ sù hîp nhÊt cña hai h-íng tiÕp cËn ®èi víi qu¸ tr×nh xö lý d÷ liÖu.C«ng nghÖ CSDL vµ c«ng nghÖ m¹ng m¸y tÝnh .Nh- c¸c c¬ së d÷ liÖu tr-íc ®©y lµ nh÷ng CSDL tËp trung cã nghÜa lµ CSDLchØ ®-îc l-u tr÷ trªn 1 m¸y chñ nµo ®ãc¸c m¸y con muèn dïng CSDL chuyÓn m×nh tõ m« thøc xö lý Mét trong nh÷ng ®éng lùc chñ yÕu thóc ®ÈyviÖc sö dông hÖ CSDL lµ nhu cÇu thÝch hîp c¸c d÷ liÖu ho¹t t¸c cña mét xÝ nghiÖp vµ cho phÐp truy xuÊt tËp trung .Trong khi ®ã c«ng nghÖ m¹ng m¸y tÝnh ®i ng-îc l¹i víi mäi næ lùc tËp trung hãa . Tho¸ng qua ,chóng ta rÊt khã h×nh dung ra lµm c¸ch nµo ®Ó tæng hîp hai h-íng tiÕp cËn tr¸i ng-îc nhau cho ra mét c«ng nghÖ m¹nh mÏ vµ cã nhiÒu triÓn väng so víi tõng c«ng nghÑ riªng lÏ .Môc tiªu quan träng nhÊt cña c«ng nghÖ CSDL ë ®©y lµ tÝnh hîp kh«ng ph¶i lµ sù tËp trung hãa Xö lý d÷ liÖu ph©n t¸n ThuËt ng÷ xö lý ph©n t¸n(distributed processing)hoÆc tÝnh ph©n t¸n (distributed Computing)trong nh÷ng n¨m trë l¹i ®©y thuËt ng÷ nµy bÞ l¹m dông SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 18 nhiÒu nhÊt trongngµnh m¸y tÝnh .Còng cã thÓ tïy theo c¸c c«ng viÖc xö lý kh¸c nhau mµ ng-êi ta ®-a ra c¸c thuËt ng÷ kh¸c nhau C©u hái ®-îc ®Æt ra lµ :Nh÷ng g× ®-îc ph©n t¸nmét trong nh÷ng ®iÒu cã thÓ lµ thiÕt bÞ xö lý Chóng ta cã thÓ cã mét kh¸i niÖm hÖ ph©n t¸n nh- sau M¹ng m¸y tÝnh mét phÇn mÒm xö lý ph©n t¸n trªn m¹ng =HÖ ph©n t¸n §Ó xö lý d÷ liÖu ph©n t¸n chóng ta cã c¸c hÖ thèng xö lý ph©n t¸n cã thÓ ph©n lo¹i dùa vµo mét sè chuÈn:møc ®é kÕt nèi ,cÊu tróc t-¬ng giao ,sù liªn ®èi gi÷a c¸c thµnh phÇn,sù ®ång bé hãa gi÷a c¸c thµnh phÇn -Møc ®é kÕt nèi (degree of coupling)muèn nãi ®Õn mét ®¬n vÞ ®o h-íng nh»m x¸c ®Þnh xem c¸c thµnh phÇn xö lý ®-îc kÕt nèi víi nhau chÆt chÏ ®Õn møc ®é nµo -T-¬ng tù c¸c chuÈn kh¸c còng cã nh÷ng ®Æc tr-ng riªng -Còng kh«ng Ýt c©u hái ®Æt ra la t¹i sao chóng ta l¹i thùc hiÖn ph©n t¸n ?NhiÒu c©u hái tr¶ lêi kinh ®iÓn cho c©u hái nµy ®· chØ ra r»ng viÖt sö dông ph©n t¸n nh»m thÝch øng tèt h¬n víi viÖc ph©n bè ngµy cµng réng r·i c¸c c«ng ti xÝ nghiÖp vµ c¸c CSDLtrªn thÕ giíi .Tuy nhiªn tõ gèc ®é tæng qu¸t h¬n ,chóng ta cã thÓ kh¼ng ®Þnh r»ng lý do c¬ b¶n cña viªc xö lý ph©n t¸n lµ do cã thÓ gi¶i quyÕt tèt h¬n c¸c bµi to¸n lín vµ phøc t¹p .Nãi mét c¸ch ®¬n gi¶n h¬n ®©y còng chÝnh lµ ph-¬ng ph¸p chia ®Ó trÞ. HÖ c¬ së d÷ liÑu ph©n t¸n -Chóng ta cã thÓ ®Þnh nghÜa CSDL ph©n t¸n lµ mét tËp hîp nhiÒu CSDL co biÕn ®æi logic vµ ®-îc ph©n bè trªn mét m¹ng m¸y tÝnh. VËy th× hÖ qu¶n trÞ c¬ së d÷ liÖu ph©n t¸n (distributed database m©ngement systems,viÕt t¾c lµ distributed DBMS) ®-îc ®Þnh nghÜa lµ mét hÖ thèng phÇn mÒm cho phÐp xö lý c¸c hÖ CSDLph©n t¸n va lµm cho viªc ph©n t¸n tr¬ nªn v« h×nh ®èi víi ng-êi sö dông .Hai thuËt ng÷ quan träng trong c¸c ®Þnh nghÜa nµy lµ “biÕn ®æi logic “ vµ “ph©n bè trªn 0m¹ng m¸y tÝnh “ ®Ó t¹o mét hÖ CSDL ph©n t¸n ,c¸c tËp tin kh«ng chØ cã tÝnh biÕn ®æi logic mµ chóng cßn ph¶i co cÊu tróc vµ ®-îc truy xuÊt qua mét giao diÖn chung .ngoµi ra mét hÕCDLph©n t¸n kh«ng ph¶i lµ hÖ thèng mµ trong ®ã ®· lµ sù hiÓn diÖn cña mét m¹ng m¸y tÝnh ,CSDL chØ n»m t¹i mét nót m¹ng SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 19 Tr¹m 1 Tr¹m 2 Tr¹m 5 M¹ng truyÒn d÷ liÖu Tr¹m 3 Tr¹m 4 H×nh II.7.3.a CSDL Trung t©m trªn mét m¹ng Tr¹m 1 Tr¹m 2 Tr¹m 5 M¹ng truyÒn d÷ liÖu Tr¹m 4 Tr¹m 3 H×nh II.7.3.b M«i tr-êng cña CSDL ph©n t¸n II.7.4 Khai th¸c CSDL b»ng Java §Ó cã thÓ lµm viÖc víi d÷ liÖu cña mét CSDL, mét ch-¬ng tr×nh Java ph¶i tu©n theo c¸c b-íc sau : Thùc hiÖn mét kÕt nèi víi CSDL : ch-¬ng tr×nh Java sÏ gäi ph-¬ng thøc getConnection() ®Ó nhËn vÒ ®èi t-îng Connect. Sau ®ã thùc hiÖn c¸c lÖnh : c¸c ch-¬ng tr×nh Java chØ thùc hiÖn ®-îc c¸c lÖnh trªn CSDL th«ng qua ®èi t-îng Statement. C¸c c©u lÖnh SQL cã thÓ ®-îc thùc hiÖn tøc th× th«ng qua ®èi t-îng Statement, cã thÓ lµ mét c©u lÖnh biªn dÞch tr-íc ( ®èi t-îng SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 20 PreparedStatement) hay lµ cã thÓ lµ lÖnh gäi c¸c thñ tôc cµi s½n (stored Procedure) trongCSDL (®èi t-îng CallableStatement). Trong tr-êng hîp cã sö dông tr×nh qu¶n lý transaction, c¸c ph-¬ng thøc rollback() ®-îc dïng ®Ó phôc håi tr¹ng th¸i tr-íc ®ã vµ commit() ®Ó x¸c nhËn viÖc thùc hiÖn. §Ó chÊm døt cÇn xãa kÕt nèi, xãa c¸c ®èi t-îng ®Ó gi¶i phãng tµi nguyªn cña hÖ thèng. SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 21 Ch-¬ng III ph©n tÝch hÖ thèng III.1. B¶ng Csdl Trªn server III.2. C¸c líp chÝnh trong ch-¬ng tr×nh. III.2.1.Server Låïp data : Læu thäng tin vãö mäüt sinh viãn nhæ MaSV,Ho&Ten vaì Låïp import java.lang.String; import java.io.Serializable; public class data implements Serializable { protected String masv; protected String name; protected String lop; // Phæång thæïc khåíi taûo mäüt âäúi tæåüng sinh vãn public data(String p0, String p1, String p2) { } // Phæång thæïc traí vãö Maî SV public String getMsv() { } // Phæång thæïc traí vãö Tãn SV public String getName() { } // Phæång thæïc traí vã öLlåïp public String getLop() { } Låïp Dataintf: Låïp maì caïc phæång thæïc chæa âënh nghéa import java.rmi.RemoteException; import java.lang.String; import java.util.Vector; SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
- Trang 22 import java.rmi.Remote; public interface DataIntf extends Remote { data getHten(String p0) throws RemoteException; data getMaSV(String p0) throws RemoteException; Vector getListSV(String p0) throws RemoteException; String request(String p0) throws RemoteException; } } Låïp DataImpl: Låïp maì caïc phæång thæïc âæåüc âënh nghéa båíi låïp DataIntf import java.rmi.RemoteException; import java.lang.String; import java.awt.TextArea; import java.sql.Statement; import java.util.Vector; public synchronized class DataImpl implements DataIntf { // fields SQL sq; Statement statement; TextArea status; TextArea txt; String str; public DataImpl(Statement p0, TextArea p1, TextArea p2) throws RemoteException { // CONSTRUCTOR implementation not available } public data getHten(String p0) throws RemoteException { // implementation not available } public data getMaSV(String p0) throws RemoteException { // implementation not available } public Vector getListSV(String p0) throws RemoteException { // implementation not available } SVTH: TrÇn H¶i Long-NguyÔn Quang TuÊn GVHD: NguyÕn TÊn Kh«i
ADSENSE
CÓ THỂ BẠN MUỐN DOWNLOAD
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn