Tải bản đầy đủ (.pdf) (26 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (990.37 KB, 26 trang )







ĐẠ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
Luận văn tốt nghiệp cao học
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ụ (service) và truyền thông.
2.2. Tầng khách - Client Tier
Các máy khách J2EE có thể chạy trên nhiều nền tảng phần cứng khác
nhau như máy tính xách tay, máy tính để bàn, máy tính cầm tay
(palm) và điện thoại di động. Chúng có thể được kết nối ngay trong
mạng cục bộ hoặc qua Internet. Trong quá trình thiết kế một kiểu giao
diện nào đó mà ta đã chọn, người thiết kế cần chú ý đến các vấn đề về
mạng, bảo mật, nền tảng phần cứng.
Xét về khía cạnh mạng truyền thông: Các kết nối từ các trình khách
J2EE tới các tầng ứng dụng trên máy chủ J2EE rất đa dạng. Sự đa
dạng thể hiện ở kiểu kết nối (qua mạng LAN, quay số hoặc mạng
không dây) và thời gian kết nối. Kiểu kết nối và thời gian kết nối với
máy chủ J2EE ảnh hưởng lớn tới thiết kế các trình khách J2EE, nên
khi thiết kế chúng ta cần chú ý đến thực tế của mạng truyền thông.
Xét về khía cạnh bảo mật: Các kiểu mạng truyền thông khác nhau có
các yêu cầu về bảo mật thông tin khác nhau, nó là sự ràng buộc khi
máy khách kết nối với ứng dụng máy chủ.
Luận văn tốt nghiệp cao học
9








Xét về khía cạnh nền tảng (platform) của máy khách: Nền tảng
của các máy khách có ảnh hưởng lớn đến thiết kế ứng dụng.
Nền tảng J2EE khuyến khích việc dùng kiến trúc thin-client (một phần
rất nhỏ của ứng dụng nằm trên máy khách), nhưng điều đó không có
nghĩa là trình khách J2EE là một trương trình “câm”. Một trình khách
J2EE có những nhiệm vụ sau:
- Hiển thị giao diện người sử dụng
- Kiểm tra việc nhập liệu
- Giao tiếp với máy chủ
- Quản lý các trạng thái giao tiếp
Trong kiến trúc J2EE có thể tồn tại hai loại trình khách: trình khách
dạng trình duyệt và trình khách dạng chương trình Java.
2.2.1. Thiết kế các trình khách sử dụng trình
duyệt
Các trình duyệt là các trình khách nhỏ gọn nhất. Chúng hiển thị dữ
liệu và dựa trên các chức năng được đặt trên máy chủ. Xét trên khía
cạnh triển khai, thì các trình khách sử dụng trình duyệt (browser
clients) là rất hấp dẫn. Thứ nhất, chúng giảm thiểu sự cập nhật. Mỗi
khi có yêu cầu thay đổi về nghiệp vụ, ta chỉ cần thay đổi chương trình
trên máy chủ mà không phải thay đổi chương trình trên các máy
khách. Việc này đặc biệt có ý nghĩa khi số lượng máy khách lớn và
phân tán trên nhiều vị trí địa lý khác nhau. Thứ hai là các trình duyệt
có mặt ở khắp nơi, hầu như tất cả các máy tính cá nhân đều có trình

duyệt Web và nhiều thiết bị di động hỗ trợ các trình duyệt dạng nhỏ.
Luận văn tốt nghiệp cao học
10







Tuy nhiên khi thiết kế các trình khách sử dụng trình duyệt cần phải
chú ý các vấn đề sau:
Hiển thị giao diện người sử dụng: Các trình khách sử dụng trình
duyệt tải các tài liệu từ máy chủ. Nội dung các tài liệu này thường
được sinh ra một cách động thông qua 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 có thể gây ra những tiềm ẩn về mạng.
Kiểm tra việc nhập liệu: Trong môi trường đa lớp, việc bắt các lỗi
nhập liệu càng sớm càng tốt, làm được điều này người sử dụng không
phải truyền dữ liệu lên máy chủ nhiều lần, vừa tiết kiệm đường truyền,
vừa giảm thiểu sự khó chịu từ phía người dùng.
Truyền thông với máy chủ: Các trình khách sử dụng trình duyệt kết
nối với ứng dụng máy chủ J2EE thông qua Web, nên chúng sử dụng
giao thức HTTP để truyền nhận dữ liệu.
Quản lý trạng thái giao tiếp: Giao thức HTTP là một giao thức dạng
hỏi-đáp (request-response), nên mỗi yêu cầu đều đóng vai trò độc lập.
Vì vậy, một ứng dụng dạng Web cần xác định được một trình khách
nhất định cũng như các trạng thái mà ứng dụng đã trao đổi với trình
khách đó.

2.2.2. Thiết kế trình khách Java
Các trình khách Java được chia làm ba loại sau: Trình khách ứng
dụng, applet, và MIDlets. Khi thiết kế các trình khách Java cần xét các
vấn đề sau:
Luận văn tốt nghiệp cao học
11







Hiển thị giao diện người sử dụng: Xây dựng giao diện cho trình
khách Java thường vất vả hơn việc xây dựng giao diện cho trình khách
sử dụng trình duyệt. Tuy nhiên, nó lại có khả năng cung cấp giao diện
thân thiện hơn và tiết kiệm đường truyền hơn trình khách sử dụng
trình duyệt.
Kiểm tra việc nhập liệu: Đối với các trình khách sử dụng trình duyệt,
người phát triển phải cân nhắc giữa việc tiết kiệm đường truyền và
kiểm tra nhập liệu được tốt. Ngược lại, các trình khách Java có thể
thực hiện tốt cả hai tiêu chí đó vì nó không phải tải phần kiểm tra tính
lôgic của dữ liệu từ máy chủ.
Giao tiếp với máy chủ: Các trình khách Java có thể kết nối với máy
chủ thông qua: HTTP, RMI-IIOP, hoặc JDBC.
2.3. Tầng Web
Tầng Web có nhiệm vụ tiếp nhận các yêu cầu từ các trình khách sử
dụng trình duyệt, tương tác với tầng xử lý nghiệp vụ, rồi trả nội dung
các trang web về cho trình khách dưới dạng HTML hoặc XML. Trong
ứng dụng J2EE, tầng Web có những nhiệm vụ sau:

- Quản lý sự tương tác giữa các trình khách Web với tầng ứng dụng
nghiệp vụ
- Sinh các trang Web mang tính động (có nội dụng thay đổi theo
yêu cầu) theo nhiều định dạng khác nhau như: HTML, ảnh, âm
thanh, và video
- Dịch các hành động PUT và GET của giao thức HTTP thành các
lệnh mà tầng nghiệp vụ có thể hiểu được
Luận văn tốt nghiệp cao học
12







- Điều khiển luồng các màn hình. Màn hình (trang) nào được hiện
lên tiếp theo thường là do tầng Web quyết định.
- Bảo trì các trạng thái của một phiên làm việc người dùng
- Có thể thực hiện việc xử lý lôgic nghiệp vụ. Những ứng dụng nhỏ
với những giao dịch đơn giản, có thể xây dựng việc xử lý lôgic
nghiệp vụ trên tầng Web.
Một ứng dụng Web là một tập hợp các thành phần của tầng Web, nội
dung và thông tin cấu hình. Môi trường hỗ trợ để chạy một ứng dụng
Web được gọi là một trình chứa (container) Web. Trình chứa có trách
nhiệm quản lý các vòng đời của mỗi thành phần, gửi các yêu cầu dịch
vụ tới các thành phần ứng dụng và cung cấp các thông tin về trạng thái
của phiên làm việc cũng như thông tin về yêu cầu (request) hiện thời.
Một ứng dụng trong tầng Web gồm các thành phần web (web
component). Trong đặc tả J2EE có hai công nghệ tạo thành các 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 thế cho công nghệ
CGI (Common Gateway Interface). CGI được sử dụng để sinh ra nội
dung các trang Web động. Chúng bao gồm các đoạn lệnh phía máy
chủ và được chạy trên một máy chủ Web. Tuy nhiên, chúng được
chạy thông qua các luồng hơn là các tiến trình. Các tiến trình khá là
tốn kém để sinh ra tại mỗi thời điểm, chúng nặng nề nên đã hạn chế
khả năng đáp ứng các yêu cầu (request) tăng một cách đột ngột
Luận văn tốt nghiệp cao học
13







(scalability) của hệ thống. Các Servlet xử lý các yêu cầu HTTP và
sinh ra kết quả trả về cho trình duyệt Web. Chúng thường truy cập
tầng EJB để xử lý lôgíc nghiệp vụ. Các Servlet thường là đa luồng và
là nhiều thể hiện phi trạng thái. Tại một thời điểm, các thể hiện của
chúng có thể được sử dụng để xử lý nhiều hơn một yêu cầu. Chính vì
điều này mà chúng làm việc khá hiệu quả.
2.3.2. Java Server Page (JSP)
JSP là một công nghệ phía máy chủ và là sự mở rộng của công nghệ
Servlet. JSP là một công nghệ kết hợp ngôn ngữ đánh dấu văn bản
HTML chuẩn với Java để tạo nên các trang Web động.
2.4. Tầng EJB

Trong một ứng dụng đa tầng J2EE, tầng EJB (Enterprise Java Bean) là
ứng dụng trên máy chủ xử lý các lôgíc nghiệp vụ, và cung cấp các
dịch vụ mức hệ thống như quản lý giao dịch, quản lý truy nhập đồng
thời, và bảo mật. Công nghệ EJB cung cấp một mô hình thành phần
phân tán (distributed component), cho phép người phát triển tập trung
vào xử lý các yêu cầu 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 bean được viết bằng ngôn ngữ Java, và là một
Luận văn tốt nghiệp cao học
14







thành phần chạy trên máy chủ, bao gói lôgíc nghiệp vụ của một ứng
dụng. Các lôgíc nghiệp vụ được lập trình để hoàn chỉnh mục đích của
ứng dụng. Các enterprise bean chạy trên trình chứa (container) EJB.
Trình chứa EJB cung cấp các dịch vụ ở mức hệ thống như quản lý các
giao dịch tới các enterprise bean và vấn đề bảo mật. Nhờ có trình chứa
xử lý các vấn đề ở mức thấp hơn của hệ thống, các nhà phát triển ứng
dụng chỉ quan tâm tới việc xử lý các yêu cầu nghiệp vụ. Nhờ đó, EJB
làm đơn giản hóa việc phát triển các ứng dụng lớn, phân tán. Các

enterprise bean được chia làm ba loại: bean phiên (session bean),
bean thực thể (entity bean), và bean hướng thông điệp (message-
driven bean).
2.4.1. Bean phiên
Một bean phiên đại diện cho một trình khách đơn bên trong trình chủ
J2EE. Bean phiên đảm nhiệm việc xử lý các yêu cầu nghiệp vụ phức
tạp trên máy chủ giúp cho các trình khách đơn giản hơn trong xử lý
yêu cầu nghiệp vụ. Có hai loại bean phiên:
Bean phiên lưu vết trạng thái: Là bean phiên có khả năng lưu lại
trạng thái giao tiếp trước đó với trình khách.
Bean phiên phi trạng thái: Là bean phiên tương tác với các trình
khách thông qua một lời gọi phương thức đơn và không cần lưu lại
trạng thái tương tác với các trình khách.
2.4.2. Bean thực thể
Luận văn tốt nghiệp cao học
15







Bean thực thể đại diện cho một khung nhìn đối tượng (object view)
của dữ liệu nghiệp vụ được lưu trữ trong tầng dữ liệu. Một bean thực
thể dùng để bao gói dữ liệu nghiệp vụ giúp đơn giản hóa việc truy cập
và thao tác với dữ liệu. Có hai loại bean thực thể: Bean thực thể tự
quản lý BMP (Bean-Managed Persistent), và bean thực thể quản lý bởi
trình chứa CMP (Container-Managed Persistent).
2.4.3. Bean hướng thông điệp

Bean hướng thông điệp là bean cho phép các ứng dụng J2EE nhận
thông điệp JMS một cách không đồng bộ.
2.4.4. Giao diện truy cập enterprise bean
Giao diện (interface) để trình khách có thể truy cập các enterprise
bean, chỉ áp dụng cho bean thực thể và bean phiên. Giao diện của
enterprise bean được thiết kế tốt sẽ làm đơn giản hơn việc phát triển
và bảo trì các ứng dụng J2EE. Các giao diện không những che đi các
xử lý phức tạp bên trong các enterprise bean mà còn giúp cho các
bean có thể thay đổi các xử lý bên trong nó mà không ảnh hưởng tới
các trình khách.
2.5. Tầng dữ liệu
Tầng dữ liệu là tầng thấp nhất trong một ứng dụng đa tầng, bao gồm
một vài kiểu lưu trữ khác nhau. Cơ sở dữ liệu phổ biến nhất trong tầng
dữ liệu của ứng dụng J2EE là cơ sở dữ liệu quan hệ. Kết nối giữa tầng
lôgic nghiệp vụ với tầng dữ liệu bằng một trong hai cách sau: sử dụng
JDBC hoặc sử dụng các bộ kết nối (connectors).
Luận văn tốt nghiệp cao học
16







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

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 đó. Hơn nữa, thiết kế tập
trung chủ yếu vào việc giao tiếp giữa các tầng, nhờ đó hệ thống có thể
thực hiện được một số chức năng cơ bản của của ứng dụng này: Quản
lý thông tin khách hàng, Quản lý các mặt hàng, Thực hiện giao dịch
(chọn hàng, đặt hàng…).
3.1. Đặt vấn đề
Hệ thống ứng dụng là một ứng dụng thương mại điện tử điển hình:
Bán hàng qua mạng. Hệ thống cung cấp cho khách hàng một trang
web chính, qua đó khách hàng có thể thực hiện các giao dịch như:
Đăng nhập hệ thống, Chọn lựa mặt hàng cần mua, Đặt mua hàng. Bên
cạnh đó, hệ thống cung cấp một giao diện riêng biệt để quản trị hệ
thống và các nhân viên nghiệp vụ thao tác với hệ thống như: Nhập mặt
hàng mới, Quản lý đơn đặt hàng, Mỗi lớp người sử dụng có quyền
truy cập đến các chức năng nhất định, và tương tác với hệ thống thông
Luận văn tốt nghiệp cao học
17







qua giao diện người sử dụng nhất định. Hệ thống thực hiện hầu hết
các công việc một cách tự động, nhưng cũng có những việc phải thực

hiện một cách thủ công, chẳng hạn như khâu vận chuyển hàng.
Khách hàng lựa chọn các mục từ danh sách các mặt hàng và đặt chúng
trong một cái “giỏ” mua hàng (shopping cart). Khi quyết định mua,
khách phải trả cho các mặt hàng có trong giỏ. Trước khi một đơn hàng
được hoàn thành, toàn bộ nội dung của đơn hàng được liệt kê ra cho
khách hàng xem như: các mục đã chọn, số lượng và giá thành của mỗi
mục đó, và tổng số tiền. Khách hàng có thể duyệt lại hoặc sửa lại đơn
hàng. Để hoàn thành việc mua hàng, khách hàng phải cung cấp địa chỉ
nhận hàng và số thẻ tín dụng.
3.2. Lựa chọn các tầng ứng dụng
Một bước thiết kế quan trọng là quyết định các tầng mà ứng dụng sẽ
dùng. Nền tảng J2EE được thiết kế cho các ứng dụng đa tầng và nó
cung cấp khả năng phân 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,… 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.
Trong thiết kế coi tầng Web là trung tâm, các thành phần của tầng
Web sử dụng các dịch vụ của trình chứa như JDBC API có thể kết nối
trực tiếp tới tầng dữ liệu. Theo hướng tiếp cận này, các thành phần của
tầng Web đảm nhiệm hầu hết các chức năng của hệ thống. Rất khó mở
rộng cũng như khó bảo trì khi hệ thống lớn và phức tạp.
Trong thiết kế coi tầng EJB là trung tâm, các bean chạy trên máy chủ
EJB, bao gói thông tin doanh nghiệp và lôgíc ứng dụng cốt lõi. Các
thành phần của tầng Web giao tiếp với các thành phần của tầng EJB
thay vì truy cập trực tiếp tới tầng dữ liệu. Hướng tiếp cận này chuyển
hầu hết các chức năng cốt lõi của ứng dụng sang các thành phần của
tầng EJB. Còn tầng Web chủ yếu được sử dụng để để tiếp nhận các
yêu cầu và sinh các trang Web để trả về cho các trình khách.
Ưu điểm chủ yếu của hướng tiếp cận coi EJB là trung tâm, là các bean
có thể truy cập một tập lớn các dịch vụ. Những dịch vụ này giúp nó dễ
dàng hơn trong việc quản lý giao dịch và các khía cạnh bảo mật của
ứng dụng. Trình chứa EJB xử lý các chi tiết mức hệ thống và cung cấp
một môi trường được quản lý cho các thành phần của nó, giúp các nhà
phát triển tập trung vào giải quyết các vấn đề nghiệp vụ.
3.3. Kiến trúc của ứng dụng
Luận văn tốt nghiệp cao học
19










Hệ thống ứng dụng bán hàng qua mạng được phát triển trên nền tảng
J2EE và được chia thành ba ứng dụng con: Website ứng dụng, trung
tâm xử lý đơn hàng, ứng dụng của các nhà phân phối sản phẩm. Trong
đó Website ứng dụng là thành phần cốt lõi của cả ứng dụng, nên luận
văn chỉ tập trung vào kiến trúc của Website ứng dụng. Dựa trên nền
tảng J2EE, Webite ứng dụng được phân tầng như sau:
3.4. Các môđun của website ứng dụng
 Môđun Xem hàng (Catalog): Môđun này dùng để hiển thị các loại
hàng hóa cho khách hàng chọn.
 Môđun Mua hàng (ShoppingCart): đánh dấu các mục hàng mà
một người dùng đã chọn để mua.
 Môđun Đăng nhập (Signon) và Đăng ký khách hàng: Cho phép
người dùng đăng nhập vào hệ thống hoặc đăng ký một khách hàng
mới.
 Môđun Khách hàng: đánh dấu các thông tin về các khách hàng,
liên kết những khách hàng này với thông tin người sử dụng để
đăng nhập hệ thống.
TÇng Web
Servlet
JSP
TÇng EJB
EJB
TÇng d÷ liÖuTÇng kh¸ch
Tr×nh
duyÖt
DB

HTTP JDBC

Hình vẽ 3.4 – Mô hình các tầng của website ứng dụng








Luận văn tốt nghiệp cao học
20







 Môđun Điều khiển(Control): điều phối các hoạt động tất cả các
môđun khác, và là môđun duy nhất tương tác trực tiếp với người
dùng.
 Môđun truyền thông điệp không đồng bộ: truyền thông tin giữa
Website ứng dụng và trung tâm xử lý đơn hàng.
Luận văn tốt nghiệp cao học
21








KẾT LUẬN

Kiến trúc phần mềm hai tầng khách/chủ tuy được sử dụng rộng rãi
trong nhiều năm qua nhưng vẫn có những hạn chế và không thích hợp
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ệ thông thông tin của đối tác cũng như 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 khách 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 thế
Luận văn tốt nghiệp cao học
22








giới quan tâm hơn, được nhiều 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 hoặc bốn 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 nhà khoa học
cũng như các nhà phát triển trong lĩnh vực Công nghệ Thông tin, nâng
cao khả năng phân tích thiết kế hệ thống sử dụng kiến trúc phần mềm
đa tầng, ngôn ngữ UML (Unified Modeling Language) và hy vọng sẽ
đóng góp một phần nhỏ trong quá trình áp dụng kiến trúc này ở Việt
Nam. Tuy nhiên do thời gian có hạn và trình độ, nên luận văn mới
dừng lại ở việc phân tích và thiết kế ví dụ ứng dụng mà chưa phát
triển cũng như cài đặt được ứng dụng. Hơn nữa luận vă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.

×