intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Lập trình mạng trong NET FRAMEWORK - Chương 4

Chia sẻ: Nguyen Nhi | Ngày: | Loại File: PDF | Số trang:24

101
lượt xem
16
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu tham khảo giáo trình Lập trình mạng trong NET FRAMEWORK - Chương 3 Xây dựng ứng dụng nhiều lớp dành cho sinh viên khoa công nghệ thông tin

Chủ đề:
Lưu

Nội dung Text: Lập trình mạng trong NET FRAMEWORK - Chương 4

  1. CHƯƠNG 4: XÂY D NG NG D NG NHI U L P 4.1. Mô hình 2 l p (two tier), 3 l p (three tier) và n l p. Trư c ñây, ñ i v i các ph n m m có s d ng liên quan ñ n d li u, thư ng khi làm ngư i l p trình thư ng tích h p vi c giao ti p v i ngư i s d ng , x lý r i ghi xu ng d li u trên cùng m t form (ñây là mô hình m t l p). Nhưng trong ki n trúc 3 l p (mô hình 3 l p), ph i có vi c phân bi t r ch ròi gi a các l p này. Mô hình 3 l p có th ñư c mô t như sau: - L p th nh t : L p giao di n (giao ti p v i ngư i s d ng) : ch thu n x lý vi c giao ti p v i ngư i s d ng, nh p xu t, … mà không th c hi n vi c tính toán, ki m tra, x lý, hay các thao tác liên quan ñ n cơ s d li u. - L p th hai : L p x lý : L p này chuyên th c hi n các x lý , ki m tra các ràng bu c, các qui t c ng x c a ph n m m , các ch c năng c t y u, … Vi c th c hi n này ñ c l p v i cách thi t k cũng như cài ñ t giao di n. Thông tin cho l p này th c hi n các x lý c a mình ñư c l y t l p giao di n. - L p th ba : L p d li u : L p này chuyên th c hi n các công vi c liên quan ñ n d li u. D li u có th l y t cơ s d li u (Access, SQL Server …) ho c t p tin (text, binary, XML …). ð i v i cơ s d li u, l p này th c hi n k t n i tr c ti p v i cơ s d li u và th c hi n t t c các thao tác liên quan ñ n cơ s d li u mà ph n m m c n thi t. ð i v i t p tin, l p này th c hi n vi c ñ c, ghi t p tin theo yêu c u c a ph n m m. Vi c th c hi n này do l p x lý g i. 94
  2. Rõ ràng, v i mô hình này, các công vi c c a t ng l p là ñ c l p v i nhau. Vi c thay ñ i m t l p không làm thay ñ i các l p còn l i, thu n ti n hơn cho quá trình phát tri n và b o trì ph n m m. M t s lưu ý: Phân bi t vai trò Business Layer và khái ni m “x lý” M i Layer v n có x lý riêng, ñ c trưng c a Layer ñó ðôi khi vi c quy t ñ nh 1 x lý n m layer nào ch mang tính ch t tương ñ i Chúng ta cũng c n phân bi t khái ni m 3 tier và 3 layer: 3 tier là mô hình 3 l p v t lý còn 3 layer là mô hình logic. GUI Browser Presentation Local Web Physical view Logical view Web Application Web Business logic Business tier Data Access Data tier Data Ví d minh h a: Xây d ng chương trình tính t ng 2 phân s theo ki n trúc 3 l p. Theo ñó d li u c a phân s ñư c ñ c lên t t p tin XML, k t qu sau khi ñư c tính s ñư c ghi xu ng t p tin XML. Cách làm thông thư ng là m i vi c ñ u ñư c ñ y vào trong 1 form và x lý tr c ti p trong form ñó. Tuy nhiên, khi có s thay ñ i x y ra v giao di n, x lý, hay d li u thì vi c ch nh s a khá khó khăn. Do v y, vi c xây d ng theo ki n trúc 3 l p s kh c ph c như c ñi m này. Ki n trúc c a chương trình như sau: 95
  3. Xây d ng l p th hi n phân s (TH_PHANSO) S d ng User Control ñ cài ñ t cho TH_PHANSO. Thêm User Control vào project b ng cách ch n Project > Add User Control. ð t tên User Control ñó. Ta có TH_PHANSO.cs 96
  4. Do th hi n t s và th hi n m u s ñ u là TextBox do ñó trong l p TH_PHANSO c n thi t l p các properties là tuso và mauso có ki u int. public int tuso{ set{ this.txtTuSo.Text = value.ToString(); } get{ return int.Parse(this.txtTuSo.Text); } } public int mauso { set { this.txtMauSo.Text = value.ToString(); } get { return int.Parse(this.txtMauSo.Text); } } L p lưu tr phân s (LT_PHANSO) T p tin XML lưu tr có ñ nh d ng như sau: 5 3 ð th c hi n vi c ñ c và ghi d li u XML ta s d ng DOM. Khai báo tuso và mauso ñ th c hi n vi c lưu tr public int tuso; public int mauso; Th c hi n cài ñ t hàm kh i t o m c ñ nh v i tham s truy n vào là ñư ng d n file XML public LT_PHANSO(string strFilename) { // // TODO: Add constructor logic here // XmlDocument doc = LT_XML.DocTaiLieu(strFilename); if(doc == null) { tuso = 0; 97
  5. mauso = 0; return; } XmlElement ele = doc.DocumentElement; tuso = int.Parse(ele.SelectSingleNode("Tu_so").InnerText); mauso = int.Parse(ele.SelectSingleNode("Mau_so").InnerText); } Th c hi n cài ñ t hàm ghi phân s v i tham s truy n vào là ñư ng d n file XML public void GhiPhanSo(string strFilename) { XmlDocument doc = new XmlDocument(); XmlElement root = doc.CreateElement("PHANSO"); doc.AppendChild(root); XmlElement ele_Tuso = root.OwnerDocument.CreateElement("Tu_so"); ele_Tuso.InnerText = this.tuso.ToString(); root.AppendChild(ele_Tuso); XmlElement ele_Mauso = root.OwnerDocument.CreateElement("Mau_so"); ele_Mauso.InnerText = this.mauso.ToString(); root.AppendChild(ele_Mauso); LT_XML.GhiTaiLieu(strFilename,doc); } L p lưu tr XML (LT_XML) Vi c load và save XmlDocument ñư c tách ra thành m t l p riêng là l p LT_XML public static XmlDocument DocTaiLieu(string strFilename) { XmlDocument kq = new XmlDocument(); try { kq.Load(strFilename); } catch{ return null; } return kq; } public static void GhiTaiLieu(string strFilename, XmlDocument doc) { try{ doc.Save(strFilename); } catch{ } } L p x lý phân s (XL_PHANSO) 98
  6. L p này s th c hi n cài ñ t các hàm liên quan ñ n x lý và tính toán trên phân s như ñ nh nghĩa phép c ng 2 phân s , rút g n phân s hay c p nh t giá tr t ñ i tư ng th hi n. Khai báo 2 ñ i tư ng l n lư t thu c v l p LT_PHANSO và TH_PHANSO ñ giúp t o liên k t v i t ng x lý v i 2 t ng còn l i là t ng d li u và t ng giao di n. private LT_PHANSO lt_ps = null; private TH_PHANSO th_ps = null; Cài ñ t hàm kh i t o m c ñ nh ñ t o liên k t v i ñ i tư ng th hi n và ñ i tư ng x lý public XL_PHANSO(LT_PHANSO lt_ps, TH_PHANSO th_ps) { this.lt_ps = lt_ps; this.th_ps = th_ps; this.th_ps.tuso = this.lt_ps.tuso; this.th_ps.mauso = this.lt_ps.mauso; } Cài ñ t phương th c ghi public void Ghi(string strFilename) { this.lt_ps.tuso = this.th_ps.tuso; this.lt_ps.mauso = this.th_ps.mauso; this.lt_ps.GhiPhanSo(strFilename); } Cài ñ t toán t + public static XL_PHANSO operator +(XL_PHANSO ps1,XL_PHANSO ps2) { XL_PHANSO kq = new XL_PHANSO(new LT_PHANSO(), new TH_PHANSO()); kq.th_ps.tuso = ps1.th_ps.tuso * ps2.th_ps.mauso + ps2.th_ps.tuso * ps1.th_ps.mauso; kq.th_ps.mauso = ps1.th_ps.mauso * ps2.th_ps.mauso; return kq; } Cài ñ t hàm c p nh t t ñ i tư ng x lý phân s khác public void CapNhat(XL_PHANSO ps) { this.th_ps.tuso = ps.th_ps.tuso; this.th_ps.mauso = ps.th_ps.mauso; } Cài ñ t hàm rút g n phân s public void RutGon() { int tuso = this.th_ps.tuso; int mauso = this.th_ps.mauso; int maxUC = TimMaxUocChung(tuso,mauso); tuso = tuso/maxUC; mauso = mauso/maxUC; 99
  7. this.th_ps.tuso = tuso; this.th_ps.mauso = mauso; } ð rút g n ta c n tính ư c chung l n nh t, có th cài ñ t hàm này chung v i l p XL_PHANSO public int TimMaxUocChung(int a, int b) { while(a!=b) { if(a>b) a -= b; else b -= a; } return a; } Th c hi n cài ñ t màn hình chính (MainFrm) Trong form chính s th c hi n khai báo 3 ñ i tư ng x lý phân s private PhanSo.XL_PHANSO xl_PhanSo1; private PhanSo.XL_PHANSO xl_PhanSo2; private PhanSo.XL_PHANSO xl_PhanSo3; Th c hi n kh i t o 3 ñ i tư ng x lý phân s v a khai báo public MainFrm() { // // Required for Windows Form Designer support InitializeComponent(); xl_PhanSo1 = new XL_PHANSO(new LT_PHANSO("phanso1.xml"), tH_PHANSO1); 100
  8. xl_PhanSo2 = new XL_PHANSO(new LT_PHANSO("phanso2.xml"), tH_PHANSO2); xl_PhanSo3 = new XL_PHANSO(new LT_PHANSO(""),tH_PHANSO3); } Vi t hàm x lý cho các nút ch c năng trên form: Hàm x lý cho nút C ng private void btnCong_Click(object sender, System.EventArgs e) { XL_PHANSO kq = xl_PhanSo1 + xl_PhanSo2; xl_PhanSo3.CapNhat(kq); xl_PhanSo3.Ghi(“ketqua.xml”); xl_PhanSo3.RutGon(); } Hàm x lý cho nút Thoat private void btnThoat_Click(object sender, System.EventArgs e) { this.Close(); } T o các t p tin phanso1.xml, phanso2.xml, có ñ nh d ng như ví d trên. Th c hi n biên d ch và ch y th chương trình. Nh n xét : Th c hi n cài ñ t v i ki n trúc 3 l p s giúp chương trình d dàng thay ñ i, tái s d ng l i chương trình. Ví d : TH_PHANSO không th hi n t s và m u s b ng TextBox n a mà thay b ng control khác (ví d như MyControl thì cũng không nh hư ng, lúc ñó ch c n thay ñ i code trong ph n property t s và m u s mà thôi. public int tuso{ set{ this.MyControl.Value = value.ToString(); } get{ return int.Parse(this.MyControl.Value); } } public int mauso { set { this.MyControl.Value = value.ToString(); } get { return int.Parse(this.MyControl.Value); } } Khi không lưu tr b ng XML mà chuy n sang dùng cơ s d li u thì ta ch c n thay code ph n LT_PHANSO, mà không c n thay ñ i code ph n TH_PHANSO, cũng như XL_PHANSO. 101
  9. Chú ý: Không ph thu c phương pháp l p trình. M i nghi p v không nh t thi t ch ñư c gi i quy t b i 3 ñ i tư ng. Không là m t ki n trúc “siêu vi t”. 4.2. Remoting 4.2.1. Gi i thi u v Remoting .NET Remoting là gì? - Trư c h t .NET Remoting là m t kĩ thu t .NET ñư c gi i thi u t .NET framework 1.1. Cùng v i .NET Webservice, .NET remoting là l a ch n cho gi i pháp x lý tính toán t xa. .NET Remoting là m t kĩ thu t cho phép m t ñ i tư ng này truy xu t ñ n m t ñ i tư ng khác n m các Application Domain khác nhau. Và n u gi i thích theo ki u bình dân, ta có th s d ng .NET Remoting ñ g i m t chương trình ho c m t service ch y trên m t máy vi tính khác ñ x lý m t cái gì ñó và tr k t qu tính toán l i cho ta. Hình 4.1: .NET Remoting Overview .NET Remoting và Distributed COM - Vào năm m t ngàn chín trăm h i ñó, ngư i ta thư ng th c hi n vi c giao ti p gi a các process b ng cách s d ng Distributed COM hay còn g i là DCOM. DCOM ñã r t h u ích cho nh ng chương trình ch y trên các máy tính cùng lo i và n m trong cùng m t m ng. Tuy nhiên, DCOM tr nên l i th i vì nó không th ch y trên Internet. DCOM d a trên m t t p giao th c mà không ph i object nào cũng h tr và ñi u này khi n DCOM không ch y ñư c trên nh ng platform khác nhau. Ngoài ra, DCOM s d ng nhi u port trong khi các port y thư ng b ch n b i firewall. T t nhiên m nh ng port ñó ñ nó ho t ñ ng ñư c không khó nhưng ñó là m t trong nh ng phi n ph c. - .NET Remoting kh c ph c nh ng y u kém c a DCOM b ng cách h tr nhi u giao th c khác nhau. .NET Remoting và Web Services - V khía c nh x lý t xa thì Web Services hoàn toàn tương t như .NET Remoting. Th m chí ngư i ta có th làm cho .NET Remoting tr thành 1 Web Services b ng cách 102
  10. host nó trong IIS. Web Services cho phép các ng d ng có th giao ti p v i nhau mà không ph thu c platform, ngôn ng l p trình, … Tuy nhiên Web Services là m t môi trư ng “stateless”, có nghĩa là nó không lưu l i b t kì tr ng thái gì c a l n g i trư c và nó cũng không bi t gì v phía client ñang th c hi n request. Client và server Web Services ch có th trao ñ i v i nhau b ng các thông ñi p SOAP. Nh ng ñi u sau ñây là các ñi m khác nhau chính gi a .NET Remoting và Web Serices, chúng cũng là nh ng nhân t ñ ta ch n l a gi a 2 công ngh này: • ASP.NET Web Services ch có th ñư c truy xu t qua HTTP còn .NET Remoting có th ñư c dùng trên nhi u giao th c khác nhau như TCP, HTTP. • Web Services là m t môi trư ng stateless. Khi có m t request t phía client, s có m t object m i ñư c t o ra ñ th c hi n request ñó trên server. Còn .NET Remoting l i h tr nhi u l a ch n state management và có th th c hi n nhi u request t m t client, ñ ng th i có h tr callbacks. • Web Services serialize các ñ i tư ng thành XML bên trong SOAP message và vì th có th truy n t i thông tin c a b t c thành ph n nào mi n có th chuy n thành XML. Còn ñ i v i .NET Remoting thì tùy giao th c và ñ nh d ng message mà nó có th truy n ñi thông tin như th nào. Ngoài ra theo như gi i thi u thì .NET Remoting có cho phép ñ i tư ng ñư c truy n vào theo c ki u tham chi u(reference) và tham tr (value) • Web services có th ho t ñ ng trên các platform môi trư ng khác nhau trong khi .NET Remoting yêu c u phía clients ph i là .NET application. Channels - Trong kĩ thu t .NET Remoting thì Channel ñư c hi u như là m t kênh ñ giao ti p gi a client và server. M t object t client s thông qua Channel ñ giao ti p v i object phía server, Channel s truy n t i nh ng message t hai phía. Như gi i thi u phía trên thì có hai channel chính là TcpChannel và HttpChannel tương ng v i các giao th c TCP và HTTP. Ngoài ra, TcpChannel và HttpChannel ñ u có kh năng extend thành nh ng Custom Channel c a b n. Làm sao ñ t o m t Object có th Remote ñư c trong .NET Remoting? - M t Object remote ñư c ch là m t object thông thư ng nhưng ph i ñư c inherit t MarshalByRefObject. ðo n code sample hình 4.2 là m t ví d ñơn gi n v Remotable Object. ð i tư ng SampleObject trong hình có m t s method ñơn gi n tr v phép tính t ng, hi u, tích, thương c a hai s nguyên. Giá tr tr v c a hàm là ki u s nguyên, ki u built-in c a .NET framework. N u b n mu n tr v ki u d li u b n t ñ nh nghĩa, ho c m t instance c a class b n ñ nh nghĩa thì l p ñó c a b n ph i ñư c khai báo v i attribute Serializable. using System; public class SampleObject: MarshalByRefObject { public int Add(int a, int b) { int c = a + b; 103
  11. return c; } public int Subtract(int a, int b) { int c = a - b; return c; } public int Multiply(int a, int b) { int c = a * b; return c; } public int Divide(int a, int b) { int c; if (b != 0) c = a / b; else c = 0; return c; } } Hình 4.2: Remotable Object Sample T o chương trình Server ñ host Remotable Object - K ti p, chúng ta c n t o ra m t chương trình server ñ l ng nghe nh ng request t phía client. Trong ví d này chúng ta s s d ng TCP/IP channel. ð u tiên chúng ta t o m t instance channel và ñăng kí m t port tương ng cho nó. Khi có m t Request t phía client, server s nh n request ñó và Remote Object c a chúng ta s th c thi Request này. Trong .NET Remoting, có hai cơ ch ñ t o instance c a Remote Object r i t ñó th c thi request: Singleton và Singlecall. Tùy vào m c ñích s d ng, nhu c u c a chương trình mà server c a b n có th khai báo theo cơ ch WellKnownObjectMode.SingleCall, hay WellKnownObjectMode.Singleton. Khi khai báo Singleton, Remote Object s ñư c sinh ra, th c thi request, reply l i phía client và sau ñó, object này v n ñư c lưu l i ch không b h y ñi. ð n khi nào process ch y chương trình server k t thúc thì instance này m i b trình h t rác Garbage Collector h t ñi. Và ngư c l i, khi khai báo là SingleCall, Remote Object s ñư c kh i t o và h y ñi ñ i v i m i l n nh n request t phía client, cơ ch này tương t như mô hình .NET Web Service truy n th ng. - N u b n mu n s d ng .NET Remoting trong IIS thì không c n t o m t chương trình server như th này. Và t t nhiên, IIS ch h tr HttpChannel. N u host 1 .NET Remoting bên trong IIS b n s m c nhiên s d ng ñư c cơ ch Authentication c a IIS, ngư c l i n u làm m t chương trình server ñ host như trên thì b n ph i cài ñ t cơ ch Authentication c a riêng mình. ð host m t Remote Object bên trong IIS, trư c tiên ph i t o 1 Virtual Directory cho application, sau ñó ñ t ño n code ñăng kí service bên trong event Application_Start (file global.asax) 104
  12. - Trong ví d này, chúng ta s không s d ng IIS mà s t o m t console application. Có nhi u l a ch n khi không s d ng IIS, ta có th s d ng console application, Win form application nhưng trong th c t , ngư i ta s s d ng m t Windows Service ñ làm. Còn Console application hay Winform Application thư ng ch dùng ñ minh h a. Trong ví d này, chúng ta s s d ng port 9999 cho may m n. Có th m t chương trình nào ñó trong máy c a b n ñã s d ng port này, n u b như v y b n ph i ch n port khác. Và sau cùng, ñ ki m tra xem máy b n ñang l ng nghe trên nh ng port nào (port nào ñã b s d ng) thì ta dùng l nh “netstat –a” trong command prompt. - Còn bây gi , hãy xem m t console application project v i 1 class tên là SampleSerrver. Trong project này tôi ñã thêm reference t i System.Runtime.Remoting vào trong project ñ nó có th ch y ñư c. using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; public class Server { public static int Main() { TcpChannel chan = new TcpChannel(9999); ChannelServices.RegisterChannel(chan, false); RemotingConfiguration.RegisterWellKnownServiceType(typeof(SampleObject) , "SampleNetRemoting", WellKnownObjectMode.SingleCall); Console.WriteLine("Hit to exit..."); Console.ReadLine(); } } Hình 4. 3: Sample Server host Remotable Object T o chương trình client ñ s d ng Remote Object. - Chương trình client trong ví d này cũng khá ñơn gi n, nó s connect vào server, t o m t instance c a Remote Object và excute method tính t ng, hi u, tích, thương. - Các b n lưu ý r ng trong c chương trình client và chương trình server ñ u ph i reference t i class SampleObject. Client s g i method c a instance SampleObject, nhưng server s th c thi x lý nó ch không ph i phía client. using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Http; public class Client { 105
  13. public static int Main (string[] argv) { TcpChannel chan = new TcpChannel(); ChannelServices.RegisterChannel(chan, false); SampleObject obj = (SampleObject)Activator.GetObject( typeof(SampleObject), "tcp://localhost:9999/SampleNetRemoting"); if (obj == null) System.Console.WriteLine("Could not locate server"); else { int a = Convert.ToInt32(argv[0]); int b = Convert.ToInt32(argv[1]); int c = obj.Add(a, b); Console.WriteLine("a + b = {0}", c); c = obj.Subtract(a, b); Console.WriteLine("a - b = {0}", c); c = obj.Multiply(a, b); Console.WriteLine("a * b = {0}", c); c = obj.Divide(a, b); Console.WriteLine("a / b = {0}", c); } Console.ReadKey(); } } Hình 4: Sample Client Application Test th chương trình - Trư c tiên ch y chương trình server, b n s th y message “Press the enter key to exit” trong c a s console. Như v y server c a b n ñang l ng nghe trên port 9999. Bây gi b n hãy ch y chương trình client và s nhìn th y k t qu tr v trên màn hình. B n có th ch y nhi u client ñ cùng request ñ n 1 server nhưng không th ch y nhi u server. B n có th copy chương trình server sang m t máy c a b n mình và nh ch y th , còn b n s a l i chương trình client, s a “localhost” thành IP c a máy b n mình và ch y th ñ th y k t qu . Tóm t t: - Ví d trên ñã s d ng code C# ñ khai báo các c u hình cho server và client tuy nhiên .NET Remoting cho phép ta c u hình trư c trong file config (App.config). Các b n có th tham kh o m t s resource phía dư i ñ bi t cách làm. - .NET Remoting là m t trong nh ng kĩ thu t ti n l i cho nh ng chương trình d ng Distributed Computing. Cách s d ng nó ph c t p hơn Web Service tuy nhiên n u b n 106
  14. mu n tăng performance thì .NET Remoting v i Singleton và TCP channel s là l a ch n r t t t. - V i s ra ñ i c a .NET Framework 3.x, Microsoft ñã gi i thi u n n t ng m i hơn cho các kĩ thu t RPC, ñó là WCF m nh hơn .NET Remoting r t nhi u. 4.2.2. Khai báo, cài ñ t và ñăng ký giao di n t xa ð cho chương trình có tính kh chuy n cao thay vì ngư i ta xây d ng l p Remote Object như ví d trên chúng ta khai báo m t giao di n là l p Remote Object và trong chương trình phía Server ta s cài ñ t giao di n này và ñăng ký giao di n t xa. Như v y ñ tri n khai m t h th ng Remoting ta có 3 chương trình: Giao di n Remote Object, chương trình Server tri n khai giao di n và ñăng ký giao di n t xa, chương trình Client tri u g i phương th c t xa. - Khai báo giao di n t xa - Cài ñ t và ñăng ký giao di n t xa 4.2.3. Tri u g i phương th c t xa - Chương trình phía Client chúng ta tri u g i phương th c ñư c cung c p b i giao di n t xa ñã ñư c ñăng ký và cung c p b i Server 4.3. Web Services 4.3.1. Gi i thi u v Web Services 1. Web Service là gì? Web service là m t Modul chương trình cung c p ch c năng c a các ng d ng cho phép tri u g i và truy c p t xa thông qua Internet. Web service s d ng các chu n c a Internet như XML và HTTP. Vi c s d ng Web service ph thu c nhi u vào s ch p nh n c a XML, m t ngôn ng mô t d li u m i dùng ñ truy n t i d li u thông qua Web. B t kỳ m t Web service nào cũng có th ñư c s d ng, ho c là trong ng d ng c c b ho c truy c p t xa qua Internet b i nhi u ng d ng. Do có kh năng truy c p qua các giao di n chu n mà m t Web service cho phép nhi u h th ng khác nhau cùng làm vi c v i nhau như m t ti n trình duy nh t trên Web. 2. Vai trò c a Web service Web service ra ñ i ñã m ra m t hư ng m i cho vi c phát tri n các ng d ng trên Internet. Web services t m d ch là các d ch v trên web. Công ngh web services ra ñ i là m t cu c cách m ng hóa cách th c ho t ñ ng c a các d ch v B2B và B2C. Web services k t h p s d ng nhi u công ngh khác nhau cho phép hai ng d ng cùng ngôn ng , ñ c l p h ñi u hành trao ñ i ñư c v i nhau thông qua môi trư ng m ng Internet. Tuy nhiên nh ng công ngh s d ng ñây không nh t thi t ph i là nh ng công ngh m i. ðây là ñi m khác bi t c a web services so v i các công ngh khác, ñó chính là kh năng k t h p các công ngh ñã có như là XML, SOAP, WSDL, UDDI ñ t o ra các service, ñ c ñi m này làm n i b t vai trò c a web services. 107
  15. Web Service ñư c thi t k nh m cung c p m t cơ ch cho phép các chương trình giao ti p v i nhau qua Internet (s d ng các giao th c Internet như HTTP GET, HTP POST và SOAP). 3. ð c ñi m Web service - Web service cho phép client và server tương tác ñư c v i nhau m c dù trong nh ng môi trư ng khác nhau. - Web Service thì có d ng m và d a vào các tiêu chu n XML và HTTP là n n t ng k thu t cho web service. Ph n l n k thu t c a web service ñư c xây d ng là nh ng d án ngu n m . B i v y chúng ñ c l p và v n hành ñư c v i nhau. - Web Service thì r t linh ñ ng: Vì v i UDDI và WSDL, thì vi c mô t và phát tri n web service có th ñư c t ñ ng hoá. - Web service ñư c xây d ng trên n n t ng nh ng công ngh ñã ñư c ch p nh n. - Web service có d ng modul. - Web service có th ñư c công b (publish) và g i th c hi n qua m ng. Ngày nay web service ñư c s d ng r t nhi u trong nh ng lĩnh v c khác nhau c a cu c s ng như: - D ch v ch n l c và phân lo i tin t c: là nh ng h th ng thư vi n k t n i ñ n các web portal ñ tìm ki m các thông tin t các nhà xu t b n có ch a nh ng khoá mu n tìm. - D ch v hi n th danh sách ñĩa nh c dành cho các công ty thu thanh. - ng d ng ñ i lý du l ch có nhi u giá vé ñi du l ch khác nhau do có ch n l a ph c v c a nhi u hãng hàng không. - B ng tính toán chính sách b o hi m dùng công ngh Excel/COM v i giao di n web. - Thông tin thương m i bao g m nhi u n i dung, nhi u m c tin như: d báo th i ti t, thông tin s c kho , l ch bay, t giá c phi u,… - Nh ng giao d ch tr c tuy n cho c B2B và B2C như: ñ t vé máy bay, làm giao kèo thuê xe. - H th ng thông tin dùng java ñ tính toán t giá chuy n ñ i gi a các lo i ti n t . H th ng này s ñư c các ng d ng khác dùng như m t web service. 4. Ki n trúc Web service Ki n trúc c a Web service bao g m các t ng như sau: 108
  16. Hình 1: Ki n trúc Web service Trong ñó bao g m các t ng như sau: - T ng v n chuy n: có nhi m v truy n thông ñi p gi a các ng d ng m ng, bao g m nh ng giao th c như HTTP, SMTP, FTP, JSM và g n ñây nh t là giao th c thay ñ i kh i m r ng (Blocks Extensible Exchange Protocol- BEEP). - T ng giao th c tương tác d ch v ( Service Communication Protocol) v i công ngh chu n là SOAP. SOAP là giao th c n m gi a t ng v n chuy n và t ng mô t thông tin v d ch v , SOAP cho phép ngư i dùng tri u g i m t service t xa thông qua m t message XML. - T ng mô t d ch v (Service Description) v i công ngh chu n là WSDL và XML. WSDL là m t ngôn ng mô t giao ti p và th c thi d a trên XML. Web service s d ng ngôn ng WSDL ñ truy n các tham s và các lo i d li u cho các thao tác, các ch c năng mà web service cung c p. - T ng d ch v ( Service): cung c p các ch c năng c a service. - T ng ñăng ký d ch v (Service Registry) v i công ngh chu n là UDDI. UDDI dùng cho c ngư i dùng và SOAP server, nó cho phép ñăng ký d ch v ñ ngư i dùng có th g i th c hi n service t xa qua m ng, hay nói cách khác m t service c n ph i ñư c ñăng ký ñ cho phép các client có th g i th c hi n - Bên c nh ñó ñ cho các service có tính an toàn, toàn v n và b o m t thông tin trong ki n trúc web service chúng ta có thêm các t ng Policy, Security, Transaction, Management giúp tăng cư ng tính b o m t, an toàn và toàn v n thông tin khi s d ng service. 4.3.2. Giao th c SOAP 109
  17. SOAP là ch vi t t t c a c m t “Simple Object Access Protocol – Giao th c truy c p ñ i tư ng ñơn gi n”, nhưng v i s xem xét m i nh t thì, SOAP s không còn là m t t vi t t t n a. Chu n SOAP ghi nh n XML ñư c th hi n th nào bên trong tài li u SOAP, làm th nào n i dung c a thông ñi p ñư c truy n t i, và làm th nào thông ñi p ñư c x lý c hai phía g i và nh n. SOAP cũng cung c p m t t p các t v ng chu n. Các thu t ng : Như b t kỳ công ngh nào, SOAP cũng có t p các thu t ng c a riêng nó. Có nhi u thu t ng ñư c s d ng thư ng xuyên ñ mô t các khía c nh khác nhau c a chu n SOAP. Nhi u l p trình viên dùng các thu t ng này mà không th t s hi u ý nghĩa c a nó. ð hi u th t s các khái ni m ñòi h i ph i t n m t th i gian ñ hi u ý nghĩa c a t ng thu t ng và làm th nào ñ áp d ng cho c chu n SOAP và m t Web Services th c th Chú ý: Chu n SOAP không ch là chu n XML mà chu n này còn bao g m các thông ñi p SOAP có hành vi như th nào, các phương ti n v n chuy n khác nhau, cách mà các l i ñư c x lý.. S truy n t i d li u SOAP Binding Thu t ng mô t làm th nào m t thông ñi p SOAP tương tác ñư c v i m t giao th c v n chuy n như HTTP, SMTP hay FTP ñ di chuy n trên Internet. ði u quan tr ng là SOAP di chuy n b ng m t giao th c chu n ñ liên l c v i các s n ph m Web Services khác. Trư c SOAP, nhi u ngư i phát tri n ñã t o ra các phương pháp c a riêng h ñ chuy n t i m t tài li u XML trên m ng. Các cách này v n ho t ñ ng t t trong ph m vi m t nhóm c th . Tuy nhiên khi b n c n làm vi c v i m t nhóm khác trong hay bên ngoài công ty thì ñi u này tr nên khó khăn vì ph i hu n luy n và có th thay ñ i ñ làm vi c v i vi c truy n t i tài li u XML mà h ñang s d ng. B ng cách s d ng m t tài li u XML chu n trên các giao th c chu n, công vi c c n làm khi c ng tác v i nhau s ñư c gi m thi u t i ña SOAP Message Exchang Pattern (MEP) Thu t ng mô t làm th nào mà m t tài li u SOAP trao ñ i gi a phía máy khách và ch . Thông ñi p SOAP s h u m t liên k t, như là HTTP, ñ nó có th truy n trên Internet. Vi c nói chuy n gi a máy khách và ch , ñây là các nút, xác ñ nh các hành ñ ng mà c hai phía th c hi n. Nh c l i SOAP là m t XML ñóng gói RPC. Vì th , MEP hoàn toàn là yêu c u và ph n h i gi a máy khách và ch (hay các nút khác). Như v y n u có nhu c u liên l c gi a các nút thì vi c này ñư c th c hi n b ng nhi u yêu c u và ph n h i ñ hoàn t t vi c truy n thông ñi p. Cách này khác h n v i các công ngh ñ i tư ng t xa khác như CORBA, công ngh ñó ñư c th c hi n ch trong m t k t n i. SOAP Application M t ng d ng SOAP ñơn gi n là m t ng d ng dùng SOAP theo m t vài cách khác nhau. Vài ng d ng hoàn toàn d a trên chu n SOAP, như là Web Services c phi u, ho c dùng chu n SOAP ñ nh n mã và các c p nh t c a ph n m m. Chú ý là m t ng d ng có th t o, s d ng ho c là nút trung gian c a Web Services. SOAP Node Trách nhi m c a m t nút có th bao g m g i, nh n, x lý ho c truy n t i l i m t thông ñi p SOAP. M t nút ch là m t ph n nh c a ph n m m, x lý m t tài li u SOAP ph thu c vào 110
  18. vai trò c a nó. Bên c nh vi c truy n d li u, m t nút có trách nhi m ñ m b o thông tin XML trong tài li u SOAP ph i ñúng ng pháp theo chu n SOAP. SOAP Role M t vai trò c a SOAP ñ nh nghĩa m t nút c th ho t ñ ng như th nào. Nó có th là nút g i, nh n ho c nút trung gian. SOAP Sender Nút g i là nút g i yêu c u SOAP. N u b n nghĩ ñ n ví d c a ng d ng khách ch thì khi ng d ng khách th c hi n yêu c u, nó g i thông ñi p t i ng d ng ch ñ yêu c u vài thông tin. SOAP Receiver Ngư c l i v i SOAP sender là nút nh n. SOAP Intermediary M t nút trung gian có th xem m t thông ñi p SOAP và tương tác trên vài ph n thông tin c a thông ñi p, và chuy n ñ n v trí k ti p c a thông ñi p. M t nút trung gian thư ng ho t ñ ng như m t router. M t router s xem xét thông tin c a gói tin chuy n trên m ng, tìm ñi m k ti p c a gói tin và chuy n gói tin ñ n ñó. Message Path M t thông ñi p SOAP di chuy n t phía bên g i ñ n phía bên nh n thông ñi p thông qua nhi u nút trung gian. Tuy n ñư ng ñi c a thông ñi p ñư c g i là m t Message Path. Initial SOAP Sender Nút g i yêu c u SOAP ñ u tiên là nút g i SOAP ban ñ u. SOAP Feature M t ñ c ñi m SOAP là m t ph n ch c năng c a ph n m m h tr ch c năng SOAP. Các thu t ng liên quan ñ n XML Chu n SOAP cũng ñ nh nghĩa m t t p nh các ph n t XML ñ ñóng gói d li u ñư c truy n gi a các nút. Th t s ch có vài ph n t vì ph n thân c a thông ñi p có th khác nhau ph thu c vào cài ñ t. S uy n chuy n này ñư c cho phép b i chu n SOAP. SOAP Message ðây là tài li u XML ñư c truy n b i m t nút SOAP g i ho c nh n. M t nút g i ho c nút khách t o ra m t tài li u XML ch a thông tin mà phía bên khách c n t phía ch . M t khi tài li u ñư c truy n, phía bên ch phân gi i thông tin trong tài li u ñ truy xu t các giá tr khác nhau và t o m t thông ñi p SOAP m i ñ ph n h i. SOAP Envelope ðây là ph n t g c c a tài li u SOAP XML. Tài li u SOAP ch a nhi u ñ nh nghĩa không gian tên (namespace) nhưng các ph n t liên quan t i thông ñi p SOAP s có ENV: là ti p ñ u ng . SOAP Header 111
  19. Ph n ñ u c a m t thông ñi p SOAP ch a m t kh i thông tin ñ u trong tài li u XML ñ ñ nh tuy n và x lý thông ñi p SOAP. D li u này tách r i kh i ph n thân c a tài li u có ch a thông tin liên quan ñ n ñ i tư ng ñư c g i. SOAP Header Block Ph n ñ u c a SOAP ch a nhi u ph n gi i h n hay là nhi u kh i thông tin có m t kh i thông tin c a ph n ñ u. Nh ng kh i thông tin c a ph n ñ u này ch a thông tin v các nút trung gian vì m t nút c n bi t nút k ti p ñ thông ñi p ñư c g i ñ n. SOAP Body Ph n thân c a SOAP th t s ch a thông tin c a ñ i tư ng ñ x lý thông tin. Ph n thân sau khi ñư c phân tách s tr thành ñ i tư ng. ð i tư ng x lý thông tin và k t qu ñư c ñ t trong ph n thân c a tài li u tr v . SOAP Fault ðây là m t ph n thông tin c a SOAP ch a thông tin ñ n b t kỳ l i gì x y ra t i m t nút SOAP. 4.3.3. Xây d ng Web Services - T o m t Web Services project - T o Web Method 112
  20. - Ch y th Web Services danh sách các hàm s ñư c li t kê - Ch n hàm Add 113
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2