Tải bản đầy đủ (.docx) (15 trang)

Báo cáo Hệ Phân Tán Middleware

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 (184.92 KB, 15 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐÀO TẠO QUỐC TẾ
───────***───────

BÁO CÁO
MÔN: PHẦN MỀM PHÂN TÁN

Đề tài : “Tìm hiểu về Middleware”
Sinh viên thực hiện : Chu Ngọc Minh (NT)
Trần Đăng Phong
Hoàng Tuấn Anh

Lớp
: SIE – LTU11A
Giáo viên hướng dẫn : TS. Cao Tuấn Dũng

Hà Nội, tháng 10 năm 2016


Mục lục
1. Phần mềm trong Hệ phần tán................................................................................3
1.1. Hệ điều hành phân tán........................................................................................3
1.2. Hệ điều hành mạng.............................................................................................4
2. Middleware............................................................................................................5
2.1. Tại sao lại có sự xuất hiện của Middleware.......................................................5
2.2 Vị trí của Middleware trong hệ phân tán............................................................5
2.3. Middleware và Tính mở.....................................................................................6
2.4. Phân loại Middleware.........................................................................................7
2.4.1. Lời gọi thủ tục và Thông điệp bất đồng bộ.....................................................7
2.4.2. Ngôn ngữ riêng biệt và Độc lập về ngôn ngữ.................................................8
2.4.3. Độc quyền và Tiêu chuẩn................................................................................8


2.4.4. Thiết bị nhúng và Hệ thống doanh nghiệp......................................................8
2.5. Mô hình của Middleware...................................................................................9
2.6. Dịch vụ của Middleware....................................................................................10
2.7. Thử thách cho Middleware.................................................................................11
3. Bài tập....................................................................................................................12

2


1. Phần mềm trong Hệ phân tán.
Trong hệ phân tán thì phần cứng là vô cùng quan trọng, nhưng chính phần mềm mới
là thứ đóng vai trò quyết định một hệ thống sẽ như thế nào. Các hệ thống phân tán
bản chất rất giống với hệ điều hàng truyền thống. Trước tiên, chúng đều hoạt động
giống như một thành phần quản lý tài nguyên cho các phần cứng ở tầng dưới, cho
phép nhiều người sử dụng và nhiều ứng dụng có thể chia sẻ tài nguyên : CPU, bộ
nhớ, mạng, các thiết bị ngoại vi và dữ liệu thuộc tất cả các loại khác. Thứ hai, quan
trọng hơn đó là hệ thống phân tán tạo ra nhằm tre dấu đi sự phức tạp và tính không
đồng nhất của các thành phần phần cứng bằng việc cung cấp các máy ảo khiến bất kì
ứng dụng nào cũng có thể được khởi chạy trên đó.
Hệ điều hành cho một hệ thống máy tính phân tán có thể được chia thành hai loại :
hệ thống liên kết chặt và hệ thống liên kết lỏng. Trong hệ thống liên kết chặt thì hệ
điều hành cố gắng cung cấp và duy trì một góc nhìn đơn, toàn thể cho các tài nguyên
mà nó quản lý. Trong khi đó, hệ thống loại liên kết lỏng có thể được nghĩ như một
tập các máy tính, mỗi máy tính chạy một hệ điều hành của riêng nó. Tuy nhiên
những hệ điều hành này làm việc với nhau, liên kết liên hệ với nhau tạo ra những
dịch vụ chung và những tài nguyên có sẵn cho các máy tính khác sử dụng.
Một hệ điều hành liên kết chặt thông thường được biết đến và gọi tên là DOS (hệ
điều hành phân tán), được sử dụng để quản lý đa vi xử lý và các đa máy tính thuần
nhất. Giống như một hệ điều hành đơn vi xử lý truyền thống, mục tiêu cơ bản của
một hệ điều hành phân tán là tre dấu đi tính phức tạp của việc phải quản lý các phần

cứng nền tảng ví dụ như chúng có thể chia sẻ bởi nhiều tiến trình.
Một loại liên kết lỏng khác tên là NOS ( network operating system ) hệ điều hành
mạng được sử dụng cho các hệ thóng đa máy tính phi thuần nhất. Mặc dù việc quản
lý nền tảng phần cứng là một vấn đề quan trọng trong NOS, sự khác biệt đến từ việc
đối với hệ điều hành truyền thống thì các dịch vụ địa phương được thiết kế để sẵn
sàng điều khiển các clients từ xa.
1.1. Hệ điều hành phân tán (Distributed Operating System)
Có hai loại của hệ điều hành phân tán : hệ điều hành đa vi xử lý quản lý các tài
nguyên của đa vi xử lý, hệ điều hành đa máy tính được phát triển cho các đa mát
tính thuần nhất. Chức năng của hệ điều hành phân tán là cần thiết giống như là hệ
điều hành đơn vi xử lý truyền thống, ngoại trừ việc chúng có thể quản lý nhiều nhân
CPU.

3


1.2. Hệ điều hành mạng (Network Operating System)
Ngược lại với các hệ điều hành phân tán, hệ điều hành mạng không đặt ra giả định
rằng nền tảng phần cứng là thuần nhất và nó phải được quản lý giống như một hệ
thống đơn duy nhất. Thay vào đó, chúng được xây dựng từ các tập (collection) của
các hệ thống đơn vi xử lý, mỗi một máy tính có 1 hệ điều hành riêng. Các máy tính
khác nhau về phần cứng và hệ điều hành, nhưng chúng được kết nối với nhau thông
qua hệ thống mạng. Hệ điều hành mạng cung cấp các cơ sở cho phép người dùng có
thể sử dụng các dịch vụ có sẵn trên từng thiết bị cụ thể.
Ví dụ: dịch vụ mà thường được cung cấp bởi hệ điều hành mạng đó là cho phép
người dùng có thể đăng nhập vào một máy tính khác từ xa thông qua một dòng lệnh
command : rlogin machine, giả dụ như người dùng đang ngồi sau một graphical
workstation, dòng lệnh được nhập vào từ bàn phím được gửi tới máy tính từ xa, và
đầu ra kết quả từ máy tính từ xa đó của nó được hiển thị lên trên cửa sổ của người
đang sử dụng.

Hệ điều hành mạng rõ ràng là mang tính nguyên thủy, thô sơ hơn rất nhiều so với hệ
điều hành phân tán, sự khác biệt lớn nhất giữa hai loại này đó là hệ điều hành phân
tán nỗ lực cố gắng tạo ra sự trong suốt tuyệt đối, từ đó cung cấp chỉ một single-view
duy nhất cho hệ thống.
Sự thiếu tính trong suốt của hệ điều hành mạng có những nhược điểm dễ nhận thấy,
chúng thường khó sử dụng hơn, hay như việc người dùng bắt buộc phải đăng nhập
vào máy tính khác từ xa, copy file từ một máy tính sang máy khác để sử dụng. Nó
còn có vấn đề về quản lý, khi mà một người chỉ có thể đăng nhập từ xa vào máy tính
X chỉ khi có account trên X, hay như muốn sử dụng một mật khẩu của riêng họ, thay
đổi password phải thực hiện trên tất cả các máy có account đó. Ngoài ra việc quản lý
quyền truy nhập cũng phải được xem xét trên các máy tính một cách chính xác.
Không có cách nào có thể đơn giản thay đổi quyền truy cập chỉ 1 lần cho mọi nơi
trên hệ thống. Tính phi tập trung dẫn tới vấn đề bảo mật khi rất khó khăn để bảo vệ
hệ thống trước kẻ tấn công.
Nhưng hệ điều hành mạng cũng có một số lợi điểm so với hệ điều hành phân tán, đó
là mỗi máy tính trong mạng giống như một nút, chúng hầu như độc lập với các nút
khác nên rất dễ dàng để thêm hay loại bỏ một máy tính trong hệ thống. Trong 1 số
trường hợp, điều duy nhất mà chúng ta phải làm để thêm một nút vào mạng là kết
nối máy tính vào hệ thống mạng, tuần tự theo đó là làm các máy tính khác nhận biết

4


được nó. Ví dụ như trên mạng internet, để một máy tính tham gia vào chúng ta chỉ
cần cho nó một địa chỉ IP hay đơn giản hơn nữa là một tên miền DNS.

2. Middleware
2.1. Tại sao lại có sự xuất hiện của Middleware
DOS có tính trong suốt cao nhưng vấn đề của nó là khó có thể mở rộng và truy cập
từ xa do yêu cầu về tính thuần nhất cao.

Ngược lại, NOS có thể mở rộng và truy cập từ xa dễ dàng nhưng tính trong suốt lại
không cao.
Từ đó, Middleware ra đời nhằm kết hợp những ưu điểm của hai HĐH này lại.
2.2. Vị trí của Middleware trong Hệ phân tán
Nhiều ứng dụng phân tán sử dụng trực tiếp giao diện lập trình cung cấp bởi hệ điều
hành mạng. Thêm vào đí, các ứng dụng này thường sử dụng cả giao diện của file hệ
thống. Vấn đề với cách tiếp cận này là việc phân tán rất khó trong suốt. Một giải
phải là thêm vào một lớp phần mềm nằm giữa ứng dụng và hệ điều hành mạng, cung
cấp một tầng trừu tượng hóa cao hơn, được gọi là phần dẻo.
Mỗi hệ thống cục bộ là một phần của hệ điều hành mạng nằm dưới đều được giả
định rằng có khả năng quản lý tài nguyên bổ sung vào việc giao tiếp đơn giản giữa
các máy tính. Đồng thời, phần dẻo không có khả năng quản lý từng node con riêng
biệt mà hoàn toàn giao cho hệ điều hành cục bộ.

5


Một mục tiêu quan trọng khác là phải che giấu được tính phi thuần nhất của các hệ
thống nằm bên dưới tầng ứng dụng. Vì vật rất nhiều hệ thống middleware cung cấp
một tập nhiều hoặc ít hơn một dịch vụ hoàn chỉnh và không khuyến khích sử dụng
những giao diện khác ngoài của họ. Điều đó đồng nghĩa với việc bỏ qua lớp
middleware và gọi trực tiếp đến các dịch vụ nằm ở hệ điều hành bên dưới đều bị
phản đối.
Middleware không được phát minh ra như một nghiên cứu học thuật trong việc đạt
được tính trong suốt trong hệ phân tán. Sau khi được giới thiệu và việc hệ điều hành
mạng được sử dụng rộng rãi, rất nhiều tổ chức thấy rằng họ có vấn đề với những
ứng dụng không thể dễ dàng tích hợp vào một hệ thống đơn lẻ. Tại điểm đó, các nhà
sản xuất bắt đầu xây dựng những dịch vụ ứng dụng độc lập mức cao vào hệ thống
của họ. Những ví dụ điển hình bao gồm hộ trợ cho giao dịch phân tán và giao tiếp
cao cấp giữa các cơ sở hạ tầng. Tất nhiên việc đồng ý sử dụng middleware nào

không dễ dàng. Một hướng tiếp cận là thiết lập một tổ chức nhằm đưa ra các tiêu
chuẩn thông thường cho các giải pháp về middleware. Vào thời điểm hiện tại, đã có
một số tiêu chuẩn sẵn sàng. Những tiêu chuẩn này nhìn chung không tương thích với
nhau và tệ hơn những sản phẩm cài đặt tiêu chuẩn giống nhau nhưng khác nhà sản
xuất hiếm khi hoạt động cùng nhau.

6


2.3. Middleware và Tính mở
Nhiều hệ thống phân tán hiện đại nhìn chung được xây dựng như là middleware cho
các hệ điều hành khác nhau. Với cách này, ứng dụng xây dựng cho một hệ phân tán
nhất định trở thành độc lập với hệ điều hành. Không may, việc độc lập này lại bị
thay thế bằng sự phụ thuộc chặt chẽ với một middleware nhất định. Vấn đề gây ra
bởi một sự thật là middleware thì thường ít mở hơn so với khẳn định. Một hệ thống
phân tán thực sự mở được định rõ bởi giao diện bằng sự hoàn chỉnh. Hoàn chỉnh có
nghĩa là mọi thứ cần cho việc cài đặt hệ thống, đã được thực sự chỉ rõ. Việc không
hoàn thiện các định nghĩa về giao diện dẫn tới các trường hợp các nhà phát triển hệ
thống bị ép phải dùng các giao diện của riêng họ. Điều này dẫn tới chúng ta rơi vào
tình trạng hai middleware của các đội phát triển có chung chuẩn nhưng ứng dụng
viết trên middleware này khó có thể chuyển sang cái còn lại.
Một tình trạng tương tự là hai cách cài đặt khác nhau của cùng một giao diện nhưng
khác giao thức nằm dưới cũng không thể tương hợp được với nhau. Vd: nếu hai cài
đặt dựa trên hai giao thức truyền thông không tương thích với nhau có sẵn trong hệ
điều hành nằm dưới. Điều chúng ta cần là các giao thức của middleware và các giao
diện của middleware phải giống nhau.

Một ví dụ khác, để đảm bảo tính tương hợp giữa các cài đặt khác nhau, các thực thể
bên trong các hệ thống khác nhau cần phải có mối quan hệ với nhau. Nếu thực thể ở
một hệ thống được có địa chỉ là URL, trong khi ở hệ thống khác lại là địa chỉ mạng,

điều đó dẫn tới việc tương tác chéo gặp vấn đề.Trong trường hợp đó, việc định nghĩa
giao diện cần được miêu tả tương đối chính xác việc liên kết đó sẽ như thế nào.

7


2.4. Phân loại middleware
2.4.1. Lời gọi thủ tục từ xa và Thông điệp bất đồng bộ (Remote Procedure
Call and Asynchronous Message)
Tại tầng trừu tượng, RPC cho phép lập trình viên có thể gọi tới những dịch vụ từ xa
như là gọi thủ tục từ những ứng dụng bên trong. Cũng giống như gọi hàm hay gọi
thủ tục trong các ngôn ngữ lập trình truyền thống, RPC khóa luồng dữ liệu khi dịch
vụ khi gọi yêu cầu đến dịch vụ. Điều này có nghĩa là khi dịch vụ được gọi tới đang
thực hiện yêu cầu, dịch vụ đang gọi sẽ khóa luồng gọi và đợi đến khi có dữ liệu trả
về hoặc quá thời gian chờ kết nối.
Hệ thống truyền thông điệp, ngược lại, dựa trên việc trừu tượng hóa hàng đợi trong
đó bên gửi sẽ gửi dữ liệu vào hàng đợi cho bên nhận thu nhận và xử lý dựa trên đó.
Hệ thống truyền thông điệp điển hình thường là hướng dữ liệu hoặc hướng văn bản,
trong khi đó hệ thống RPC là hướng thủ tục hoặc hướng đối tượng. Các ứng dụng
dựa trên thông điệp thường trừu tượng hóa khóa và thiết kế xoay quanh thông tin,
trong khi các ứng dụng dựa trên RPC tập trung vào đối tượng và hàm để cung cấp
các dịch vụ hệ thống.
2.4.2. Ngôn ngữ riêng biệt và Độc lập về ngôn ngữ.
Nhiều hệ thống middleware hộ trợ tích hợp các ứng dụng viết trong nhiều ngôn ngữ
lập trình khác nhau. Corba là một ví dụ siêu điển hình vì nó hỗ trợ nhiều ngôn ngữ
ánh xạ tới Ngôn ngữ Định nghĩa Giao diện (Interface Definition Language - IDL) ,
được dùng để định nghĩa thỏa thuận với các đối tượng của Corba. Chủ đề tranh luận
về kiểu middleware như vậy là các hệ thống tính toán phức tạp, có lẽ liên quan đến
hầu hết mọi thứ - từ các thiết bị cầm tay, laptop Windows đến server Unix - thường
hiếm khi được viết bởi một ngôn ngữ. Tuy nhiên, nhiều hệ thống, như J2EE, dựa

trên việc đơn giản hóa rằng chỉ có một ngôn ngữ được sử dụng. Một vài hệ thống
phân tán đơn ngôn ngữ khác cũng được phát triển sử dụng C++, Modula-3 và
Smalltalk.
2.4.3. Độc quyền và Tiêu chuẩn
Các cuộc tranh luận về tiêu chuẩn cho middleware thường là về khả năng tương hợp
và khả chuyển giữa các sản phẩm, họ thường tránh việc người sử dụng bị “khóa trái”
và cho phép người dùng lựa chọn middleware dựa trên chất lượng. Trong thực tế, ý
tưởng này đã bị thay đổi khá nhiều, nhiều nhà cung cấp khẳng định họ theo các tiêu
chuẩn trong khi vẫn ép người dùng vào tình trạng bị “khóa trái”.

8


Mặt khác, cho dù những nhà cung cấp middleware này vẫn dựa theo tiêu chuẩn
nhưng họ vẫn độc quyền các tính năng mà chưa có tiêu chuẩn nào đề cập tới. Không
một tiêu chuẩn nào có thể chỉ ra tất cả các vấn đề có thể xảy ra - kể cả những tiêu
chuẩn lâu đời như Corba hay tập hợp tiêu chuẩn tạo ra bởi Java Community Process
(www.jcp.org). Hơn nữa, nỗ lực tiêu chuẩn hóa có thể rất lâu, quan liêu, đắt đỏ và
chính trị. Các nỗ lực phát triển độc quyền đều cố gắng tránh những khía cạnh tiêu
cực này trong khi vẫn bảo vệ những bí mật có lợi trước các đối thủ cạnh tranh.
Những công ty khổng lồ (như Microsoft) hay những công ty rất nhỏ thường là
những đối tượng theo đuổi sự độc quyền. Những công ty lớn thì tin rằng những nỗ
lực độc quyền của họ sẽ có lúc trở thành tiêu chuẩn thực tế dựa vào số lượng người
sử dụng quá lớn. Những công ty nhỏ thì tin rằng hệ thống của họ đủ “hư cấu” để
gián đoạn thị trường và bắt những người khác phải tiêu chuẩn hóa theo họ.
2.4.4. Thiết bị nhúng và Hệ thống doanh nghiệp.
Trong lịch sử, middleware nhắm tới hệ thống doanh nghiệp, điển hình trong việc các
hệ thống tính toán nằm tách biệt nhau, thường bao gồm một hoặc nhiều các máy tính
lớn, nằm ở nhiều bộ phận khác nhau của doanh nghiệp. Những hệ thống này thường
tìm cách cải thiện quy trình kinh doanh tự động. Những hệ thống nhúng, với môi

trường phần cứng đặc thù và những yêu cầu về phần mềm điển hình, thường bị giới
hạn về middleware cho đến tận gần đây. Sự phát triển của phần cứng và phần mềm
đã làm middleware cho phần nhúng khả thi, tuy nhiên, các lập trình có thể tạo ra
những hệ thống nhúng từ các bộ kit có sẵn. Các middleware nhúng vẫn phải đối mặt
với những ràng buộc về thời gian thực và khả năng dự đoán bởi kích cỡ và tính
năng.
Cũng như các thiết bị nhúng, các hệ thống doanh nghiệp cũng phải giải quyết quá tải
khi chạy trong thời gian thực. Các phần nhúng doanh nghiệp cũng cần phải có khả
năng được cấu hình linh hoạt cao và nó yêu cầu khả năng quản lý hệ thống khi chạy
cho phép người quản trị hệ thống thay đổi các tác vụ phù hợp. Vì việc cần phải tích
hợp hàng loạt các hệ thống riêng rẽ, người sử dụng thường đánh giá middleware
doanh nghiệp bởi cách nó có dễ dàng tương thích các hệ thống mới hay không. Mặt
khác, người sử dụng lại đánh giá middleware thời gian thực - nhúng dựa trên tiêu
thụ bộ nhớ, hiệu suất và khả năng dự đoán trước được.
2.5. Mô hình middleware.
Để giúp việc phát triên và tích hợp các ứng dụng phân tán càng đơn giản nhất có thể,
phần lớn các middleware dựa trên một vài mô hình hoặc mẫu thiết kế đặc tả phân
9


tán và giao tiếp. Một mô hình tương đối đơn giản đó là coi mọi thứ như các file. Một
ứng dụng có thể mở file, đọc và ghi file sau đó đóng lại. Vì các file có thể được chia
sẻ bởi một vài tiến trình, việc tương tác trở nên đơn giản như khi truy cập cùng một
file.
Một cách tiếp cận tương tự, đó là xây dựng middleware lấy hệ thống file phân tán
làm trung tâm. Trong nhiều trường hợp, middleware đó chỉ hơn có đúng một bước
so với hệ điều hành mạng trong việc tính phân tán trong suốt, chỉ hộ trợ các file
truyền thống (vd như các file chỉ dùng để lưu trữ dữ liệu). Ví dụ, các tiến trình
thường được yêu cầu phải được khởi động một cách rõ ràng trên các máy được chỉ
ra. Middleware dựa trên hệ thống file phân tán được chứng minh là có khả năng mở

rộng, đã đóng góp rất nhiều vào sự phổ biến của nó.
Một mô hình middleware khác dựa trên RPC. Trọng tâm của mô hình này là che
giấu sự tương tác trên mạng bằng cách cho các tiến trình gọi nhau từ xa. Khi gọi các
thủ tục như vậy, các tham số được truyền đến các máy ở xa một cách trong suốt, sau
đó các thủ tục được thực thi sẽ trả về kết quả. Chính vì vậy, tiến trình gọi thủ tục
hoàn toàn không biết đến thực tế rằng việc truyền thông trên mạng đã thay thế,
ngoại trừ việc giảm đi một chút hiệu suất.
Khi mà hướng đối tượng trở nên thịnh hành, nếu việc gọi hàm có thể vượt qua ranh
giới của các máy thì việc có thể truy cập vào các đối tượng ở trên các máy ở xa một
cách trong suốt cũng hoàn toàn khả thi. Điều này đã dẫn tới việc có nhiều hệ thống
middleware đặt ra các khái niệm về đối tượng phân tán.Bản chất của các đối tượng
phân tán mà mỗi đối tượng cài đặt một giao diện che giấu đi thông tin bên trong của
đối tượng trước người sử dụng. Một giao diện bao gồm các phương thức mà đối
tượng cài đặt.Thứ duy nhất mà tiến trình thấy về đối tượng là giao diện của nó.
Mô hình có thể đơn giản hóa việc sử dụng hệ thống mạng có lẽ được diễn tả tốt qua
World Wide Web. Sự thành công của Web phần lớn là dựa vào sự đơn giản cũng
như hiệu năng cao của các văn bản phân tán. Trong mô hình web, thông tin được
sắp xếp vào các văn bản với mỗi văn bản lại nằm ở một máy hoàn toàn trong suốt về
địa điểm. Các văn bản chứa các đường dẫn liên kết tới vị trí của nó để người dùng
có thể lấy về và hiển thị trên màn hình. Khải niệm về một văn bản không chỉ giới
hạn ở việc nó chỉ chứa thông tin về text. Web hỗ trợ cả video và audio cũng như các
loại văn bản đồ họa.

10


2.6. Dịch vụ của Middleware
Các hệ thống middleware đều có một số dịch vụ cơ bản. Mọi hệ thống middleware,
cách này hay cách khác, đều cố để đạt được tính trong suốt, bằng cách cung cấp các
phương tiện liên lạc ở tầng cao che giấu đi các thông điệp tầng thấp truyền đi trong

mạng máy tính. Việc lập trình giao diện ở tầng giao vận cung cấp bởi hệ điều hành
mạng cũng hoàn toàn bị thay thế bằng các phương tiện khác. Việc truyền thông
được hỗ trợ như thế nào phụ thuộc vào mô hình phân tán của middleware cung cấp
cho người dùng và ứng dụng. Chúng ta đã đề cập đến RPC và đối tượng phân tán.
Thêm vào đó, nhiều hệ thống middleware cung cấp các phương tiện nhằm truy cập
một cách trong suốt đến các dữ liệu từ xa như hệ thống file phân tán hay cơ sở dữ
liệu phân tán.
Một dịch vụ cơ bản khác của tất cả các middleware là đặt tên. Tên dịch vụ cho phép
các đối tượng được chia sẻ và tìm kiếm, và có thể được so sánh với nhau như danh
bạ điện thoại. Mặc dù việc đặt tên có thể trông đơn giản nhưng độ phức tạp tăng lên
khi hệ thống cần mở rộng. Vấn đề nằm ở việc tìm kiếm tên hiệu quả trong một hệ
thống lớn, vị trí của thực thể phải được giả sử là cố định. Việc giả định này được
làm ở chính trong World Wide World, mỗi văn bản được đặt tên bởi một URL. Mỗi
URL chứa tên của máy chủ chứa văn bản đó. Vì vậy nếu văn bản bị chuyển sang
một máy chủ khác, URL sẽ ngưng hoạt động.
Nhiều hệ thống middleware thường cung cấp các phương tiện lưu trữ, thường liên
quan đến tính cố định. Trong hình thái đơn giản nhất, cố định được cung cấp thông
qua hệ thống file phân tán, nhưng những middleware phát triển hơn tích hợp cơ sở
dữ liệu vào trong hệ thống hoặc cung cấp các phương tiện cho ứng dụng để kết nối
tới cơ sở dữ liệu.
Trong môi trường nơi mà dữ liệu lưu trữ đóng một vai trò quan trọng, các phương
tiện nhìn chung cung cấp giao dịch phân tán. Một thuộc tính quan trọng khác của
giao dịch là nó cho phép các thao tác đọc ghi diễn ra một cách nguyên tử. Nguyên tử
có ý nghĩa là cả giao dịch phải diễn ra thành công, tức là tất cả các thao tác ghi đều
được thực thi hoặc giao dịch đó sẽ thất bại, và dữ liệu không bị tác động. Giao dịch
phân tán làm việc trên dữ liệu nằm ở trên các máy khác nhau.
Cuối cùng, hầu như các hệ thống middleware được sử dụng trong các môi trường
không phải thử nghiệm đều cung cấp pương tiện bảo mật. So sánh với hệ điều hành
mạng, vấn đề với bảo mật trong middleware là nó nên bị xâm nhập. Theo nguyên
11



tắc, tầng middleware không thể dựa trên hệ điều hành nằm dưới để hỗ trọ các vấn đề
về bảo mật.Điều này dẫn tới bảo mật được cài đặt một phần trong bản thân nó. Kết
hợp với việc cần thiết phải mở rộng, bảo mật đã trở thành một dịch vụ khó cài đặt
nhất trong hệ phân tán.
2.7. Thử thách cho Middleware.
Mặc cho sự khác biệt giữa các hệ thống cạnh tranh với nhau, tất cả các middleware
đều chia sẻ những đặc điểm chung. Phần lớn mọi người đều muốn middleware phải
linh hoạt hết sức có thể đồng thời phải có hiệu năng cao. Để có thể đạt được hai yếu
tố ở mức chấp nhận được tương đối khó khăn. Người sử dụng muốn chọc vào mọi
phần của middleware để có thể kiểm soát bất cứ thứ gì họ cần nhưng họ cũng muốn
hiệu năng của ứng dụng phải cao như khi họ chạy nó trên một hệ điều hành. Quá
nhiều cách cấu hình gây khó khăn cho người mới, họ muốn đơn giản quá trình cài
đặt middleware và để nó chạy. Tìm kiếm sự cân bằng giữa những điều này thực sự
là một thử thách khiến các nhà kiến trúc sư và thiết kế middleware mất ngủ.
Cùng với sự phát triển của phần cứng, khả năng phối hợp middleware thông qua cấu
hình thay vì qua lập trình cũng tăng lên. Bằng cách phân tách các vấn đề với sự phát
triển với việc triển khai, việc tiếp cận này giảm chi phí bảo trì middleware cho các
ứng dụng. Mục tiêu là có thể thay đổi cách chương trình hoạt động mà không cần
phải chỉnh sửa, biên dịch lại, kiểm thử lại và triển khai lại mã nguồn. Việc triển khai
này có một ví dụ điển hình là Enterprise Java Bean. Tuy nhiên hiệu ứng phụ của
việc này là làm tăng việc cấu hình ứng dụng, khiến cho việc cấu hình cũng phức tạp
y như lập trình.
Giảm độ phức tạp của hệ thống thực sự là một thử thách cho các nhà cung cấp
middleware. Tuy nhiên , các hệ thống middleware đồng thời chỉ ra các vấn đề mà
bản thân chúng trở nên phức tạp. Rõ ràng là các nhà thiết kế middleware cần chắc
chắn hệ thống của họ đủ linh hoạt nhưng họ cũng cần có những cài đặt hợp lý khiến
việc cấu hình lại không cần thiết trong phần lớn các trường hợp
Có lẽ thử thách có ý nghĩa nhất ngày nay là tạo điều kiện cho các ứng dụng Internet

có thể mở rộng chuyển thành các ứng dụng tích hợp. World WIde Web đã cho
chúng ta thấy Internet có thể hỗ trợ những sự tương tác người mua với người bán
thành công như thế nào. Tuy nhiên, kiến trúc các website không chỉ học theo mô
hình ứng dụng hai lớp truyền thống, mà còn đi kèm cả những giới hạn. Trong khi
các dự án tích hợp điều hành cổ điển , như đóng gói cơ sở dữ liệu nằm sau máy chủ
12


ứng dụng, không bao giờ đơn giản hay dễ dàng, các middleware đồng thời làm
chúng trở nên rõ ràng hơn. Mục tiêu tiếp theo là xây dựng dựa trên những gì đã
thành công và mở rộng tương thích ứng dụng từ intranet lên internet.

3. Bài tập
Rectangle.java:
public interface Rectangle {
void scale(float factor);
float getWidth();
void setWidth(float width);
float getHeight();
void setHeight(float height);
float area();
void printInformation();
}
NonScaleableRectangle.java:
public class NonScaleableRectangle {
private float width,height;
public NonScaleableRectangle(float width, float height) {
this.width = width;
this.height = height;
}

public void setWidth(float width) {
this.width = width;
}
public float getWidth() {
return width;
}
public void setHeight(float height) {
this.height = height;
}
public float getHeight() {
return height;
13


}
public float area() {
return width * height;
}
public void printInformation(){
System.out.println(width);
System.out.println(height);
System.out.println(area());
}
}

14


ScaleableRectangle1.java:
public class ScaleableRectangle1 extends NonScaleableRectangle implements

Rectangle {
public void scale(float factor){
setWidth(factor * getWidth());
setHeight(factor * getHeight());
}
}
ScaleableRectangle2.java:
public class ScaleableRectangle2 implements Rectangle {
private NonScaleableRectangle r;
public ScaleableRectangle2(NonScaleableRectangle r) {
this.r = r;
}
public float getWidth() {
return r.getWidth();
}
public void setWidth(float w) {
r.setWidth(w);
}
public float getHeight() {
return r.getHeight();
}
public void setHeight(float h) {
r.setHeight(h);
}
public void scale(float factor) {
setWidth(factor*getWidth());
setHeight(factor*getHeight());
}
public float area(){
return r.area();

}
public void printInformation() {
r.printInformation();
}
}
15



×