Nói một cách khác, mỗi dạng cổng gọi đến mỗi ứng dụng sử dụng một giao thức kết nối cụ thể và định dạng thông điệp/dữ liệu cụ thể để cung cấp các chức năng của chúng.. Do đó cần phải có
Trang 1Cổng đa năng cho trục tích hợp Enterprise Service Bus
Như chúng ta đã tìm hiểu trong bài viết “Vai trò của trục tích hợp ESB trong kiến trúc ứng dụng hướng dịch vụ SOA”, trục tích hợp Enterprise Service Bus (ESB) là một thành phần quan trọng của hạ tầng kiến trúc hướng dịch vụ Trục tích hợp ESB cung cấp khả năng kết nối các ứng dụng lại với nhau Những ứng dụng này có thể sử dụng các hình thức khác nhau của dịch vụ để cung cấp một phần hay tất cả những chức năng của chúng Hình 1 thể hiện sự kết nối của các ứng dụng khác nhau đến trục tích hợp ESB thông qua các dạng cổng khác nhau
Hình 1 - Các ứng dụng khác nhau kết nối đến trục tích hợp ESB thông qua các dạng cổng
khác nhau
Điều quan trọng nhất mà chúng ta cần lưu ý từ hình bên trên đó là mỗi ứng dụng riêng biệt kết nối đến trục tích hợp ESB thông qua một dạng cổng riêng biệt nhất định Ví dụ, ứng dụng 1 kết nối đến trục tích hợp ESB thông qua cổng SOAP/HTTP, ứng dụng 2 kết nối đến trục tích hợp thông qua cổng XML/HTTP Nói một cách khác, mỗi dạng cổng gọi đến mỗi ứng dụng sử dụng một giao thức kết nối cụ thể và định dạng thông điệp/dữ liệu
cụ thể để cung cấp các chức năng của chúng Tuy nhiên điều này dẫn đến việc phải sử dụng rất nhiều các dạng cổng khác nhau, cũng như các giao thức kết nối khác nhau cho các ứng dụng khác nhau, gây ra sự khó khăn đối với người thiết kế cũng như người triển khai việc tích hợp các ứng dụng lại với nhau Do đó cần phải có một kiểu trục tích hợp mà
có khả năng cung cấp một kiểu cổng đa năng duy nhất, có thể kết nối đến tất cả các ứng dụng khác nhau mà sử dụng các giao thức kết nối khác nhau Điều này loại bỏ sự cần thiết phải phát triển và triển khai từng dạng cổng mới cho từng loại ứng dụng mới, hạn chế việc phải sử dụng lại quá nhiều lần các đoạn mã
Trang 2Hình 2 - Trục tích hợp ESB kiểu mới cung cấp cổng kết nối đa năng đến tất cả các ứng
dụng
Ý tưởng về trục tích hợp ESB cung cấp một dạng cổng kết nối đa năng cũng tương tự như ý tưởng về cổng USB của máy tính Như chúng ta đã biết, trước đây khi chưa có cổng USB thì để kết nối với máy in, chuột, bàn phím hay ổ cứng bên ngoài thì máy tính phải cung cấp các định dạng cổng kết nối nhất định để có thể kết nối các thiết bị ngoại vi này với máy tính Tuy nhiên, kể từ khi xuất hiện cổng kết nối USB, thì việc cần phải có các dạng cổng khác nhau để máy tính kết nối đến các thiết bị ngoại vi khác nhau là không cần thiết nữa Hầu hết hiện nay, tất cả các thiết bị kết nối đến máy tính chỉ cần sử dụng cổng kết nối USB Xuất phát từ ý tưởng cổng kết nối đa năng USB, các nhà phát triển đã xây dựng nên một trục tích hợp ESB trong đó nó cũng cung cấp một dạng cổng kết nối đa năng duy nhất để có thể kết nối đến các ứng dụng khác nhau, sử dụng khác phương thức kết nối khác nhau
Hình 3 bên dưới cho chúng ta thấy quy trình làm việc của trục tích hợp ESB sử dụng các cổng kết nối đa năng
Trang 3Hình 3 - Quy trình làm việc của trục tích hợp ESB với các cổng kết nối đa năng
Quy trình làm việc của trục tích hợp ESB với các cổng kết nối đa năng bao gồm những bước sau:
1 Quy trình này được bắt đầu với việc một ứng dụng kết nối đến trục tích hợp ESB thông qua một cổng kết nối đa năng và gửi một thông điệp Thông điệp này có thể
ở bất kỳ định dạng nào và được gửi bởi bất kỳ giao thức nào
2 Thông điệp sau đó được can thiệp bởi một phần mềm chuyên dùng để phát hiện ra giao thức kết nối đã được sử dụng
3 Sau khi tìm ra được giao thức kết nối đã được sử dụng, thông điệp được gửi tới một thành phần xử lý giao thức thích hợp Lưu ý rằng hệ thống sẽ có một bộ vi xử
lý giao thức cho từng giao thức một Do đó chúng ta sẽ có các bộ vi xử lý giao thức
Trang 4lý giao thức này là để trích ra nội dung của thông điệp Nội dung thông điệp nên độc lập với giao thức sẽ được sử dụng bởi ứng dụng
4 Phần nội dung thông điệp sau khi được trích ra sẽ được gửi đến một thành phần phần mềm khác, gọi là phát hiện định dạng Thành phần phần mềm này chịu trách nhiệm xác định định dạng của thông điệp Ví dụ về định dạng của thông điệp bao gồm SOAP, XML (nguyên thủy)
5 Sau khi đã xác định được định dạng của thông điệp, thành phần phát hiện định dạng sẽ chuyển tiếp thông điệp đến một thành phần thích ứng khác cho việc chuyển đổi đến một định dạng phổ biến
6 Tiếp đó, định dạng phổ biến này sẽ được chuyển sang một định dạng đích khác bởi một thành phần phần mềm chuyển đổi Định dạng đích này phụ thuộc vào dạng của ứng dụng đích
7 Thành phần phần mềm chuyển đổi sau đó sẽ gửi thông điệp đến thành phần khởi tạo giao thức đích Sau khi nhận được thông điệp, thành phần khởi tạo giao thức đích sẽ tạo ra giao thức cho thông điệp
8 Cuối cùng, thành phần khởi tạo giao thức đích sẽ gửi thông điệp đến ứng dụng đích
Lưu ý rằng hầu hết các bước từ 3-8 có thể thực hiện ở bên ngoài thành phần cổng và bên trong trục tích hợp ESB Nếu chúng ta chuyển các bước từ 3-8 vào trong trục tích hợp ESB thì sẽ gây ra việc tái sử dụng rất nhiều mã code Nhiệm vụ duy nhất dành cho cổng kết nối đa năng đó là xác định giao thức kết nối được sử dụng bởi ứng dụng kết nối đến trục tích hợp Hình 4 mô tả chức năng của cổng kết nối đa năng này
Hình 4 - Chức năng của cổng kết nối đa năng trong trục tích hợp ESB
Cổng kết nối đa năng này cũng là một thành phần rất nhẹ, rất thuận tiện cho việc tích hợp với trục tích hợp ESB
Phần tiếp theo chúng ta sẽ tìm hiểu 02 phương thức xác định giao thức kết nối của cổng kết nối đa năng
Xác định giao thức kết nối
Trang 5 Phương pháp siêu giao thức: phương thức này được sử dụng như một chiếc phong
bì cho từng giao thức mức độ cao Phong bì của siêu giao thức này sẽ bao gồm một phần tiêu đề chứa thông tin về dạng của giao thức mức độ cao (ví dụ như HTTP, IIOP, JRMP hoặc JMS/MQ) sẽ được sử dụng bởi ứng dụng Phần tiêu đề này sẽ được gắn kèm trong thông điệp bởi ứng dụng kết nối trong dòng đầu tiên của thông điệp Phần còn lại của thông điệp sẽ chứa các tiêu đề giao thức mức độ cao hơn và nội dung của thông điệp Nếu siêu giao thức này được sử dụng, thì cổng kết nối đa năng sẽ chỉ cần phải phân tách dòng đầu tiên của mỗi thông điệp nhận được để xác định giao thức mức độ cao nào sẽ được sử dụng bởi ứng dụng kết nối Sau khi xác định được giao thức mức độ cao, thành phần phần mềm thiết lập cổng kết nối đa năng sẽ đơn giản chỉ là chuyển tiếp thông điệp tới thành phần lắng nghe giao thức thích hợp trong trục tích hợp ESB cho việc xử lý Cổng kết nối đa năng sẽ là một thành phần phần mềm rất nhẹ sẽ phân tách dòng đầu tiên của thông điệp Thêm nữa, mã lệnh lắng thành phần lắng nghe giao thức mức độ cao sẽ được tái sử dụng một cách hiệu quả nhất bởi vì mỗi một thành phần lắng nghe giao thức mức độ cao
sẽ là một phần của trục tích hợp ESB và có thể được sử dụng bởi bất kỳ thành phần cổng kết nối đa năng khác Tuy nhiên, có một điểm bất lợi nhỏ của phương thức này
đó là các mã code ứng dụng sẽ cần phải có thay đổi nhỏ để có thể kích hoạt sự sử dụng siêu giao thức này
Xác định mức độ chân cắm: phương thức thứ 2 đó là việc nhận ra tất cả các giao thức mức độ cao như HTTP, IIOP, JRMP, JMS/MQ được xây dựng trên đỉnh của giao thức TCP/IP Nói một cách khác tất cả những giao thức này sử dụng chân cắm TCP/IP để kích hoạt các kết nối giữa các ứng dụng và trục tích hợp ESB Hơn thế nữa, tất cả các giao thức bao gồm phần tiêu đề và thông tin trong những tiêu đề này
có thể được sử dụng để phát hiện ra giao thức mức độ cao nào sẽ được sử dụng bởi ứng dụng kết nối Những tiêu đề này có thể thấy và đọc được nếu thông điệp đang tới được đọc tại mức độ chân cắm (socket) Hơn thế, phương thức phát hiện giao thức này sẽ phụ thuộc vào việc lắng nghe thông điệp đang tới tại mức độ chân cắm Điều này sẽ làm cho cổng kết nối đa năng rất nhỏ gọn do nó chỉ có chức năng
là đọc dòng đầu tiên của thông điệp và chuyển tiếp thông điệp đến thành phần lắng nghe giao thức trong trục tích hợp ESB Một hạn chế của phương thức này, cũng giống như phương thức đầu tiên, đó là nó cũng tạo ra rất nhiều việc tái sử dụng mã code do mỗi một thành phần lắng nghe giao thức sẽ là một phần của trục tích hợp ESB và cùng một thành phần lắng nghe giao thức có thể được sử dụng bởi bất kỳ cổng kết nối đa năng nào
Qua bài viết này, chúng ta có thể thấy được ý tưởng về các cổng kết nối đa năng cho trục tích hợp ESB cũng như 02 phương thức xác định giao thức kết nối của cổng kết nối đa năng đến trục tích hợp ESB Một cổng kết nối đa năng có thể được sử dụng để kết nối hầu hết các ứng dụng đến trục tích hợp ESB, do đó, nó kết nối một cách gián tiếp đến bất
kỳ ứng dụng nào kết nối đến trục tích hợp ESB Ứng dụng có thể sử dụng bất kỳ giao thức kết nối hoặc định dạng thông điệp bất kỳ nào chỉ thông qua một dạng cổng kết nối đa năng mà thôi
Trang 6Trong bài viết này, chúng ta cũng biết được quy trình xử lý của một cổng kết nối đa năng Điều quan trọng chúng ta cần nhớ đó là trong quy trình xử lý này, cổng kết nối đa năng là một thành phần nhỏ gọn, chỉ có chức năng phát hiện giao thức kết nối được sử dụng bởi một ứng dụng kết nối mà thôi Do đó việc phát triển, triển khai là tương đối đơn giản và dễ dàng