Sự Phát Triển Các Hệ Thống Phân Tán Dựa Trên Kiến Trúc Phần Mềm Ba Tầng

26 573 1
Sự Phát Triển Các Hệ Thống Phân Tán Dựa Trên Kiến Trúc Phần Mềm Ba Tầng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA HÀ NỘI KHOA CÔNG NGHỆ ĐẶNG XUÂN THÊM SỰ PHÁT TRIỂN CÁC HỆ THỐNG PHÂN TÁN DỰA TRÊN KIẾN TRÚC PHẦN MỀM BA TẦNG LUẬN VĂN THẠC SỸ Người hướng dẫn: TS. Nguyễn Tuệ Hà nội - 2004 M ụ c l ụ c M ở đ ầ u Chương 1. Giớ i thiệ u về k i ế n trúc phầ n mề m ba tầ ng 1.1. Lị c h s ử phát triể n củ a k i ế n trúc phầ n mề m ba tầ ng 1.1.1. Kiế n trúc Mainframe 1.1.2. Kiế n trúc chia sẻ t ệ p 1.1.3. Kiế n trúc khách chủ 1.1.4. Kiế n trúc hai tầ ng 1.1.5. Kiế n trúc ba tầ ng 1.2. So sánh kiế n trúc ba tầ ng vớ i kiế n trúc hai tầ ng truyề n thố ng 1.3. Phầ n mề m kế t nố i giữa các tầ ng - Middleware 1.3.1. Middleware hư ớ ng thủ t ụ c 1.3.2. Middleware hư ớ ng cơ sở dữ liệ u 1.3.3. Middleware hư ớ ng thông điệ p 1.3.4. Middleware hư ớ ng đố i tư ợ ng 1.3.5. Middleware dựa trên các thành phầ n n Chương 2. Kiế n trúc phầ n mề m đa tầ ng củ a J 2 e e 2.1. Các công nghệ n ề n tả ng củ a J 2 EE 2.1.1. Công nghệ v ề các thành phầ n 2.1.2. Các dị c h v ụ n ề n tả ng 2.1.3. Truyề n thông 2.2. Tầ ng khách - Client T i e r 2.2.1. Thiế t kế các trình khách sử dụ ng trình duyệ t 2.2.2. Thiế t kế trình khách Java 2.3. Tầ ng W e b 2.3.1. Java Servlet 2.3.2. Java Server Page (JSP) 2.4. Tầ ng EJB 2.4.1. Bean phiên 2.4.2. Bean thực t h ể 2.4.3. Bean hướng thông điệ p 2.4.4. Giao diệ n truy cậ p enterprise bean 2.5. Tầ ng dữ liệ u 2.5.1. JDBC 2.5.2. Bộ k ế t nố i (Connector) Chương 3. Phân tích và thiế t kế ứng dụ ng bán hàng qua mạ ng dựa trên kiế n trúc đa tầ ng j2ee 3.1. Đặ t vấ n đề 3.2. Lựa ch ọ n các tầ ng ứng dụ ng 3.3. Kiế n trúc củ a ứng dụ ng 3.4. Các môđun củ a website ứng dụ ng 3.4.1. Môđun Xem hàng (Catalog) 3.4.2. Môđun Mua hàng (ShoppingCart) 3.4.3. Môđun Đăng nhậ p (Signon) và Đăng k{ khách hàng 3.4.4. Môđun khách hàng 3.4.5. Môđun Điề u khiể n(Control) 3.4.6. Môđun truyề n thông điệ p không đồ ng bộ 6 6 Kế t luậ n Tài liệ u tham khả o MỞ ĐẦU Trong nhiều năm qua, kiến trúc phần mềm hai tầng khách/chủ được sử dụng rất phổ biến. Kiến trúc này phân chia một ứng dụng phần mềm làm hai tầng: tầng khách và tầng chủ. Tầng khách thường được cài đặt trên các máy tính để bàn, với chức năng là tương tác với người sử dụng và xử lý hầu hết các yêu cầu nghiệp vụ. Còn tầng chủ thường là một hệ quản trị dữ liệu quan hệ, lưu trữ dữ liệu của ứng dụng. Kiến trúc phần mềm hai tầng truyền thống chỉ thích hợp với những ứng dụng vừa và nhỏ trong một phạm vi địa lý hẹp. Để khắc phục những nhược điểm của kiến trúc hai tầng, kiến trúc phần mềm ba tầng ra đời. Việc xử lý các yêu cầu nghiệp vụ được tách khỏi tầng khách và tạo thành một tầng mới, gọi là tầng lôgíc nghiệp vụ. Tuy ra đời từ những năm 1990, nhưng mãi đến vài năm gần đây kiến trúc phần mềm này mới được giới phát triển phần mềm chú ý nhiều, được đánh giá là một trong những xu hướng chính trong phát triển phần mềm của thế kỷ XXI. Luận văn "Phát triển các hệ thống phân tán dựa trên kiến trúc phần mềm ba tầng" với mục đích nghiên cứu về kiến trúc phần mềm ba tầng, hy vọng sẽ có cái nhìn sâu sắc hơn về kiến trúc phần mềm này cũng như góp một phần nhỏ trong quá trình nghiên cứu phát triển kiến trúc phần mềm ba tầng ở Việt Nam. Luận văn được chia thành 3 chương: Chương 1: Giới thiệu lịch sử phát triển của các hệ tính toán phân tán, kiến trúc phần mềm ba tầng nói chung. Ngoài ra, trong Luận văn tốt nghiệp cao học 2 chương còn đánh giá phân tích giữa mô hình kiến trúc phần mềm ba tầng với mô hình kiến trúc phần mềm hai tầng truyền thống. Chương 2: Luận văn nghiên cứu một kiến trúc phần mềm ba tầng cụ thể, kiến trúc J2EE. Trong chương, luận văn sẽ nghiên cứu về các công nghệ trong kiến trúc đa tầng J2EE cũng như chi tiết từng tầng trong kiến trúc này. Chương 3: Mục đích của chương này là phân tích thiết kế kiến trúc của ứng dụng thương mại điện tử điển hình “Bán hàng qua mạng” nhằm minh họa cho kiến trúc đa tầng đã được đề cập trong các chương trước. Với mục đích đó, thiết kế tập trung vào kiến trúc mức cao của ứng dụng như cách chia ứng dụng thành các tầng, các chức năng được thể hiện trong các tầng ứng dụng tương ứng, thiết kế các lớp (class) tương ứng với những chức năng trong các tầng ứng dụng đó. Luận văn tốt nghiệp cao học 3 GIỚI THIỆU VỀ KIẾN TRÚC PHẦN MỀM BA TẦNG Chương này sẽ giới thiệu các kiến trúc phần mềm: mainframe, khách/chủ, hai tầng, ba tầng và sự phân tích, so sánh giữa kiến trúc phần mềm ba tầng và kiến trúc phần mềm hai tầng truyền thống. Đồng thời các phương thức giao tiếp giữa các tầng trong kiến trúc phần mềm ba tầng cũng được đề cập đến. 1.1. Lịch sử phát triển của kiến trúc phần mềm ba tầng Trước khi có kiến trúc phần mềm ba tầng các ứng dụng phần mềm đã qua các kiến trúc mainframe, kiến trúc chia sẻ tệp, kiến trúc phần mềm hai tầng. Kiến trúc phần mềm ba tầng được phát triển từ kiến trúc phần mềm hai tầng bằng cách tách phần xử lý nghiệp vụ ra một tầng mới, tầng nghiệp vụ. 1.2. So sánh kiến trúc ba tầng với kiến trúc hai tầng truyền thống Kiến trúc phần mềm ba tầng có những điểm khác biệt như sau so với kiến trúc phần mềm hai tầng: Quy mô hệ thống: Các kiến trúc hai tầng chỉ thích hợp với những ứng dụng vừa và nhỏ khi mà số lượng người dùng không vượt qúa con số 100, và thường được sử dụng trong một mạng cục bộ. Ngược lại, kiến trúc ba tầng có thể đáp ứng một lượng người dùng lớn hơn, và hỗ trợ nhiều kiểu kết nối hơn, phạm vi hoạt đông rộng hơn. Luận văn tốt nghiệp cao học 4 Quản trị hệ thống: Việc quản trị hệ thống trong các ứng dụng hai tầng phải thực hiện phân tán trên cả máy khách và máy chủ, vì lôgíc nghiệp vụ nằm trên máy khách là chủ yếu. Với kiến trúc ba tầng, lôgíc nghiệp vụ tập trung ở tầng nghiệp vụ được cài đặt trên một máy hoặc vài máy chủ, làm cho việc quản trị được tập trung hơn nên cũng dễ dàng hơn. Tính bảo mật: Tính bảo mật trong ứng dụng hai tầng kém hơn do bảo mật được thực hiện ở mức dữ liệu. Còn việc bảo mật trên hệ thống ba tầng được thực hiện ở mức dịch vụ, phương thức và đối tượng. Tính bao gói dữ liệu: Tính bao gói dữ liệu của ứng dụng hai tầng rất thấp, toàn bộ dữ liệu của các bảng được phô ra. Ngược lại, ứng dụng ba tầng cho phép bao gói dữ liệu tốt hơn nhiều. Chương trình ở máy khách chỉ giao tiếp với các dịch vụ, hoặc các đối tượng ở tầng nghiệp vụ, không cần biết rõ cấu trúc dữ liệu thực như thế nào. Mạng truyền thông: ứng dụng hai tầng đòi hỏi chất lượng mạng tốt, băng thông rộng vì dữ liệu phải được tải về máy khách trước khi xử lý. Trong khi đó, ứng dụng ba tầng cho phép việc sử dụng hạ tầng mạng đa dạng hơn, có thể là mạng cục bộ LAN, mạng diện rộng, mạng Internet và thậm chí cả mạng không dây. Bởi vì truyền thông trong ứng dụng ba tầng chỉ đơn thuần là các lời gọi dịch vụ trên máy chủ, sau khi máy chủ xử lý xong, kết quả (thường là nhỏ) mới trả về cho máy khách. Khả năng mở rộng hệ thống: Đối với ứng dụng hai tầng, khả năng mở rộng hệ thống kém vì bị giới hạn bởi việc quản lý các liên kết với Luận văn tốt nghiệp cao học 5 máy khách. Ngược lại, trong hệ thống ba tầng có thể dễ dàng mở rộng hệ thống để đáp ứng một lượng lớn các máy khách nhờ khả năng chia tải bằng cách tăng số lượng máy chủ ở tầng nghiệp vụ. Cơ sở dữ liệu hỗn tạp: Các ứng dụng hai tầng rất khó khăn trong việc hỗ trợ nhiều kiểu cơ sở dữ liệu khác nhau. Trong khi đó hệ thống ba tầng cho phép thao tác với nhiều cơ sở dữ liệu khác nhau trong cùng một giao dịch. Thậm chí tầng nghiệp vụ còn có khả năng làm việc với nhiều nguồn dữ liệu khác nhau như hệ thống các tệp dữ liệu cũng như việc truy cập các hệ thống máy chủ mainframe. Các hình thức truyền thông: Các ứng dụng hai tầng sử dụng phương thức truyền thông đồng bộ, chủ yếu là gọi thủ tục từ xa RPC. Đối với các ứng dụng ba tầng thì các hình thức truyền thông rất phong phú như: Gọi thủ tục từ xa RPC, gọi phương thức từ xa RMI, cơ chế truyền thông điệp,… Chi phí phát triển: Các ứng dụng hai tầng được phát triển rất nhanh vì có thể sử dụng rất nhiều ngôn ngữ lập trình trực quan. Còn việc phát triển ứng dụng ba tầng đòi hỏi nhiều công sức hơn vì tầng nhiệp vụ thường được xây dựng bằng những ngôn ngữ lập trình không trực quan như ngôn ngữ lập trình C. 1.3. Phần mềm kết nối giữa các tầng - Middleware Middleware là phần mềm kết nối, bao gồm một tập hợp các dịch vụ cho phép nhiều tiến trình chạy trên một hoặc nhiều máy tính có thể tương tác với nhau thông qua mạng máy tính. Middleware là công nghệ quan trọng trong việc phát triển ứng dụng theo kiến trúc ba tầng. Luận văn tốt nghiệp cao học 6 Sau đây là một số loại middleware thường được dùng trong các ứng dụng ba tầng: - Middleware hướng thủ tục (Procedure-Oriented Middleware): cho phép một trình khách chuyển các tham số của một lời gọi thủ tục thành một thông điệp và được gửi tới máy chủ, tại máy chủ thông điệp lại được chuyển thành các tham số. - Middleware hướng cơ sở dữ liệu cung cấp khả năng tương tác với các cơ sở dữ liệu, các kho dữ liệu và các tệp dữ liệu. Trong các ứng dụng ba tầng, middleware hướng cơ sở dữ liệu thường được dùng để kết nối tầng nghiệp vụ với tầng dữ liệu. - Middleware hướng thông điệp MOM (Message-Oriented Middleware): là phần mềm lưu trú trong cả hai phần khách và chủ trong kiến trúc khách/chủ và sử dụng cơ chế truyền thông điệp. - Middleware hướng đối tượng (Object-Oriented Middleware): hỗ trợ việc yêu cầu các đối tượng phân tán. Truyền thông giữa các đối tượng có thể là đồng bộ, hoặc không đồng bộ. - Middleware dựa trên các thành phần (component-based): Mỗi thành phần là một chương trình thực hiện một chức năng nhất định và được thiết kế để dễ dàng thực hiện với các thành phần khác và với các ứng dụng. Middleware dựa trên các thành phần (Component-Base Middleware) là một cấu hình các thành phần. Các thành phần này được lựa chọn cả lúc dịch cũng như lúc chạy. Luận văn tốt nghiệp cao học 7 KIẾN TRÚC PHẦN MỀM ĐA TẦNG CỦA J2EE Ngày nay, nhiều nhà phát triển phần mềm muốn phát triển các ứng dụng phân tán, đảm bảo về mặt tốc độ, có tính bảo mật và độ tin cậy cao dựa trên công nghệ phía máy chủ (server-side). Cùng với sự phát triển nhanh của thương mại điện tử, công nghệ thông tin, với cùng một lượng tài nguyên như trước đây, các ứng dụng cho doanh nghiệp được thiết kế và xây dựng với chi phí thấp hơn, tốc độ nhanh hơn. Để đáp ứng yêu cầu đó của các nhà phát triển phần mềm, hãng phần mềm Sun Microsystem đã đưa ra đặc tả J2EE (Java 2 Plaform, Enterprise Edition). J2EE cung cấp một cách tiếp cận dựa trên các thành phần (component-based) để thiết kế, xây dựng và triển khai một ứng dụng cho doanh nghiệp. J2EE cung cấp một mô hình ứng dụng phân tán đa tầng, khả năng sử dụng lại các thành phần, một mô hình bảo mật thống nhất, kiểm soát các giao dịch một cách mềm giẻo, và hỗ trợ các dịch vụ Web. Trong kiến trúc phần mềm đa tầng của J2EE, một ứng dụng lôgíc được chia thành các thành phần tùy theo chức năng, và các thành phần ứng dụng khác nhau. Điều này làm cho ứng dụng J2EE được cài đặt trên nhiều máy tính khác nhau tùy thuộc vào các thành phần trong mỗi tầng của môi trường đa tầng. Các thành phần trong các ứng dụng đa tầng J2EE bao gồm: - Các thành phần trên tầng khách (client-tier), chạy trên máy tính khách. - Các thành phần trên tầng Web (Web-tier) chạy trên máy chủ J2EE [...]... hãng phát triển trình chủ (application server) hỗ trợ Theo kiến trúc J2EE, ứng dụng lôgíc được chia thành các thành phần, các thành phần này được phân tán trên các tầng khác nhau tùy vào chức năng và nhiệm vụ của chúng Nền tảng J2EE hỗ trợ kiến trúc phần mềm đa tầng, nhưng không cố định số tầng trong một ứng dụng Với các công nghệ phong phú, nền tảng J2EE cho phép ứng dụng có thể sử dụng kiến trúc ba tầng. ..8 - Các thành phần trên tầng nghiệp vụ chạy trên máy chủ J2EE Phần mềm của tầng hệ thống thông tin doanh nghiệp (Enterprise Information System tier, EIS-tier) chạy trên các máy chủ EIS 2.1 Các công nghệ nền tảng của J2EE Các công nghệ nền tảng của J2EE hỗ trợ rất tốt việc phát triển các ứng dụng đa tầng Những công nghệ này được chia làm ba loại: các thành phần (component), dịch vụ... như đối kiến trúc phần mềm hai tầng truyền thống Hơn nữa, việc tập trung lõi của hệ thống trên tầng nghiệp vụ làm cho các thao tác khác như bảo mật, quản trị cũng được thực hiện một cách tập trung và thống nhất hơn Trong những năm gần đây có hai đặc tả kiến trúc phần mềm đa tầng đáng quan tâm là NET của Microsoft và J2EE của Sun Microsystem Trong đó, đặc tả J2EE được giới phát triển phần mềm trên toàn... tán, … Sử dụng các thành phần của EJB, người phát triển có thể giảm bớt việc viết mã chương trình ở mức hệ thống, mà chỉ chú tâm vào việc xử lý các yêu cầu nghiệp vụ của ứng dụng Luận văn tốt nghiệp cao học 18 Bước tiếp theo là quyết định phân tán các chức năng của hệ thống như thế nào trên các tầng đã chọn Sự phân bố tuân theo sự phân chia ứng dụng thành các đối tượng và nên được xem xét một cách cẩn thận... cũng chưa nghiên cứu hết được các công nghệ để phát triển các ứng dụng đa tầng Trong thời gian tới, em tiếp tục nghiên cứu kĩ hơn về các công nghệ trong việc phát triển các ứng dụng dựa trên kiến trúc phần mềm đa tầng, chẳng hạn công nghệ CORBA, NET Luận văn tốt nghiệp cao học 23 Xin chân thành cảm ơn thầy hướng dẫn TS Nguyễn Tuệ, và tập thể lớp cao học K8T2, Khoa Công nghệ, Đại học Quốc gia Hà Nội đã... bạn hàng Kiến trúc phần mềm ba tầng hoặc đa tầng đang từng bước tỏ ra là kiến trúc thích hợp với các ứng dụng phần mềm trong điều kiện hiện nay Việc sinh ra một tầng mới, tầng nghiệp vụ, làm cho các ứng dụng trở nên mềm dẻo hơn, dễ bảo trì hơn Khi yêu cầu nghiệp vụ thay đổi, ta chỉ cần thay đổi chương trình trên tầng nghiệp vụ, thường được chạy trên một vài máy chủ thay vì phải thay đổi cả các trình... tầng Hơn nữa, nền tảng J2EE còn hỗ trợ nhiều kiểu trình khách khác nhau và nhiều kiểu truyền thông khác nhau Với sự phong phú về công nghệ, nền tảng J2EE rất thích hợp với các ứng dụng thương mại điện tử hiện nay Kết thúc luận văn, em đã thu được những tri thức quan trọng trong việc phát triển các hệ thống thông tin dựa trên kiến trúc phần mềm ba tầng – kiết trúc đang thu hút được sự quan tâm của các. .. với các ứng dụng cỡ lớn Kiến trúc phần mềm này chỉ thích hợp cho các ứng dụng nhỏ, chạy trên mạng cục bộ của công ty Ngày nay hoạt động của các công ty không gói gọn trong một phạm vi địa lý hẹp, mà được phân tán trên nhiều vị trí địa lý khác nhau Hơn nữa, việc quản lý các hệ ứng dụng phần mềm không chỉ giới hạn trong nội bộ công ty, mà các ứng dụng phần mềm đó còn phải có khả năng kết hợp với các hệ. .. nghiệp vụ Việc xử lý các vấn đề về hệ thống phức tạp khác được giao phó cho nền tảng J2EE Sự phân tách này làm cho các ứng dụng lớn được phát triển nhanh hơn và có tính bảo mật cao Trong mô hình lập trình J2EE, các thành phần EJB là một thành phần cơ bản để liên kết giữa các thành phần của tầng Web với tầng dữ liệu Các enterprise bean là các thành phần của J2EE thực thi công nghệ EJB Mỗi enterprise... tán các chức năng hệ thống trên các tầng một cách khá mềm dẻo Việc quyết định thành phần của tầng Web có truy cập trực tiếp đến tầng dữ liệu hoặc thông qua tầng EJB, cũng rất quan trọng Quyết định này phụ thuộc vào chức năng của ứng dụng, độ phức tạp và yêu cầu về khả năng đáp ứng số lượng các yêu cầu tăng một cách đột biến Tầng EJB có ưu điểm là xử lý việc bảo mật một cách tự động, xử lý phân tán, … . thành phần Web là Java Servlet v Java Server Page (JSP). 2.3.1. Java Servlet Một Servlet là một lớp Java, mở rộng một máy chủ web (Web server) tương thích v i J2EE. Java Servlet là một sự thay. khách v máy chủ, v lôgíc nghiệp v nằm trên máy khách là chủ yếu. V i kiến trúc ba tầng, lôgíc nghiệp v tập trung ở tầng nghiệp v được cài đặt trên một máy hoặc v i máy chủ, làm cho việc. JSP (Java Sever Page) hoặc Java Servlet. Nội dung các trang tài liệu phụ thuộc hoàn toàn v o máy chủ nên mỗi khi cần thay đổi giao diện, trình khách lại phải tạo kết nối v i máy chủ, việc này

Ngày đăng: 29/07/2014, 01:36

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan