sMột ESB là một kiến trúc phần mềm cho lóp giữa, cung cấp một cơ sở hạ tầng dê loại bò bất kỳ kết nổi trực tiếp giữa người tiêu dùng dịch vụ và các nhà cung cấp. Người tiêu dùng kết nối tới bus mà không phải kết nối trực tiếp tới nhà cung cấp. Kiêu kết nối này giúp phân tách giữa người tiêu dùng dịch vụ và các nhà cung cấp. Tích hợp và quản trị dịch vụ trong doanh nghiệp ngoài thực tế cài đặt các dịch vụ theo cách này để giúp tăng khả năng mềm dẻo và khả năng quản trị các dịch vụ tốt của SOA.
ESB đóng vai trò như một tầng giữa đế nhận và điều phối các thong điệp tới các dịch vụ trong hệ thống, đồng thời ESB có thể giúp SOA thực hiện một số các nguyên tắc của mình như kết nối lỏng lẻo, tái sử dụng, cân bằng tải, chuyển hướng dự phòng khi gặp sự cố. Sử dụng chính của nó là trong tích hợp ứng dụng doanh nghiệp (EAI) cùa các văn cảnh không đồng nhất và phức tạp.
2.2 Vai trò của ESB trong SOA
Đe hỗ trợ đầy đủ các mẫu tích hợp khác nhau, các mẫu đã được yêu cầu trong một SOA toàn diện (ví dụ như yêu cầu và đáp ứng, xuất bản và đăng ký, các sự kiện), ESB phải hồ trợ trong một cơ sở hạ tầng gồm 3 kiểu chính của tích hợp doanh nghiệp:
- SOA trong những ứng dụng truyền thông thông qua sự có thế tái sử dụng lại dịch vụ với sự xác định rõ, các giao diện rõ ràng. Hướng dịch vụ có tác dụng làm đòn bấy ớ dưới các mô hình thông điệp và các sự kiện truyền thông.
- Kiến trúc hướng message trong những ứng dụng gửi các message thông qua một ESB tới những ứng dụng nhận.
- Kiến trúc hướng sự kiện trong những ứng dụng sinh ra và tiêu dùng các thông điệp độc lập với nhau.
ESB làm điều này trong khi cung cấp thêm những khả năng đế gián tiếp hoặc biến đổi các thông điệp dịch vụ và tương tác, cho phép một sự khác nhau lớn của các hành vi và hồ trợ các mô hình khác nhau của các coupling tương tác.
42
l6Hinh 2.1: Mot Enterprise Service Bus
2.3 Cac mau Enterprise Service Bus
2.3.1 Ket noi diem t&i diem
Mot khia canh nai cac cong nghe ESB khac nhau la viec dem so lugng cac coupling ma chung cung cap cho cac ket noi vat ly. Nguoi tieu dung phai biet dia chi chinh xac cua nha cung cap dich vu, hoac khong ESB cung cap mot so co che mang den cho nguoi tieu dung yeu cau cac nha cung cap chinh xac?
Neu consumer phai biet cac thiet bi dau cuoi, no se giri moi yeu cau den mot nguoi nhan cu the. Ket noi dugc goi la mot ket noi diem tai diem. Van de voi loai hinh ket noi nay la cuoc goi khong thanh cong neu nguoi nhan vat ly la khong ton tai.
D é p l o y é e a : 1 9 2 . 1 6 8 . 1 . 4 2
Provider
17 Hình 2.2: Một ESB cung cắp các kết nối điêm tới điểm
Neu consumer không biết endpoint của nhà cung cấp, nó thay vì xác nhận cung cấp các dịch vụ bởi một thẻ hoặc ký tự mà ESB hiểu để tìm thấy một provider thích hợp. Thẻ này thường chứa đựng tên dịch vụ, và phải chứa đựng một vài thuộc tính thêm vào mà có ảnh hưởng tới việc định tuyến. Ví dụ, ESB phải xử lý một ưu tiên hoặc c ó
các chính sách khác nhau cho các consumer khác nhau. Trong trường hợp này, ESB đóng vai trò hòa giải hoặc trung gian, dần đến một cơ sở hạ tầng có các kết nối mềm dẻo.
ESB
18Hình 2.3: Một kết nổi hòa giải của ESB
17 [S O A in Practice] 18 [S O A in Practice]
44
Lợi ích của phương pháp tiếp cận gián tiếp là các ESB có thế thỏa thuận với sụ
chỉnh sửa động trong ngữ cảnh cùa SOA. Nhiều hệ thống có thế cung cấp một dịch vụ nhất định, dịch vụ cho phép cân bằng tải hoặc chuyển hướng dự phòng (nếu một hệ thống có lồi, các yêu cầu có thể được gửi tới các hệ thống cung cấp chính). Đe cấu hình phương pháp tiếp cận gián tiếp, ESB phải xử lý triển khai thông tin tại thời điêm băt đầu chạy (sử dụng một file cấu hình), hoặc tại thời điếm chạy (cho phép mỗi nhà cung cấp tự đăng ký khi nó sẵn dùng).
Nếu một nhà cung cấp công nghệ ESB cho kết nối điểm tới điểm, ta có thê vần thực hiện tính chat loose coupling. Một lựa chọn cho những consumer đế cài đặt một vài loại gián tiếp bằng việc hỏi một trung gian hoặc tên server nơi để gửi các yêu cầu trước khi thực sự gửi chúng. Chú ý, tuy nhiên, phương pháp tiếp cận này thường chI cho phép consumer để truy vấn các endpoint để gửi các yêu cầu tới tại thời điếm bắt đầu, hoặc khi dịch vụ đầu tiên gọi của một kiểu chỉ rõ đã được tạo. Đê xử lý các endpoint tại thời điểm chạy, mỗi cuộc gọi có thể cần được theo thứ tự bằng một cuộc gọi tới một trung gian
2.3.2 Kiểu lá chắn (Interceptors)
Theo một cách khác một ESB dựa trên một giao thức kết nối “điểm tới điểm” có thể hỗ trợ gián tiếp các cuộc gọi dịch vụ với điều kiện là để gọi “các bộ chắn” hoặc “các đối tượng ủy quyền”. Một phương pháp tiếp cận dễ dàng là để thay thế endpoint vật lý mà chúng cung cấp một dịch vụ với một phần của phần cứng hoặc phần mềm mà chúng phục vụ như một bộ cân bằng tải. Các consumer vẫn sử dụng một endpoint chính thức, các endpoint được ủy nhiệm các nhiệm vụ thực: khi các message đén, hộ cân bằng tải gửi chúng tới những nhà cung cấp dịch vụ vật lý khác nhau mà nó biết đến (xem hình dưới đây).
lo ad b a la n c e r T T Deplcyeca:: 152.168.1.51 P ro vid er A T T Deplcyec a:: 152.168.1.52 P rovider B
19Hình 2.4: Một ESB với một bộ cân bang tải cho các dịch vụ được cung cấp
Một phương pháp tiếp cận ESB phức tạp hon cung cấp một cách đánh chặn hoặc ủy quyền cho mỗi nhà cung cấp và mồi người tiêu dùng. Trong trường họp này, consumer sẽ truyền thông theo kiểu “điểm tới điểm” chỉ với bộ chắn được chi rõ của nó. Bộ chắn sẽ định tuyến mồi cuộc gọi tới một nhà cung cấp thích họp, sử dụng bộ chắn cụ thể cùa nó. Trong kịch bản này, sự kỳ diệu cùa việc định tuyến thông minh và các dịch vụ ESB khác được hoàn toàn đóng gói từ thế giới bên ngoài bằng các bộ chắn. Trên thực tế, bên trong nó một giao thức hoàn toàn khác nhau có thế được sử dụng. Chú ý ràng giao thức Web Service vốn đã là giao thức truyền thông “điếm tới điếm”. Vừa lúc sụ trao đối các dịch vụ giữa hai hệ thống không đòi hỏi các công cụ hoặc các chương trình, nhưng ta phải biết và chỉ rõ endpoint của một dịch vụ gọi trong quy trình chi phối của ta. Các chuẩn Web Service không cung cấp cho việc cân bằng tải và chuyèn hướng dự phòng.
46 C o nsu m er 2 I ị S e n e te a ie sT S :c : 1 5 2 . 1 6 8 . 1.C2 u --- --- ___________ T I Deplcyeca:: 192.1ÓE.1.C2 In te r c e p to r ESB ' In te r c e p to r _ _ _ _ _ _ _ ị _ _ _ _ _ _ _ Deplc/ec a:: 152.168.1.52 I P ro vid er B 20Hình 2.5: Một ESB sử dụng các bộ chắn
Mặc dù vậy, load balancing và failover là những yêu cầu cốt lõi cho các h ệ t h ố n g p h â n
tán lớn. Vì lý do này, sớm hoặc muộn mỗi ESB dựa trên web service sẽ kết h ọ p c h ặ t
chẽ với các bộ chắn. Những bộ chắn này cũng phải giúp đế thỏa thuận với những khía cạnh khác của một ESB, như bảo mật và theo dõi (monitoring)
Deplcyeca:: 152.168.1.51 Provider A In te rc e p to r C onsum er 1 Sere r e a e s T S :c: 152.11:5.1.Cl f T Deplcyec a:: 192.168.1 .Cl In te rc e p to r 2,1 [SOA in Practice]
CHU ONG 3 - ỨNG DỤNG WCF VÀO SOA
■&. Chương này trình bày tông quan vê công nghệ WCF trong .NET Framework 4.0 như mô hình các thành phần trong WCF, nội dung của chương này sẽ là kiên thức CO' bản để giúp hiện thực hóa các dịch vụ trong SOA bằng công nghệ wCF.
3.1 Giói thiệu về WCF
- 21 Windows Communication Foundation (WCF) là một công cụ phần mềm cho phát triển và triên khai các dịch vụ trên môi trường window. WCF cung cấp một môi trường chạy cho các service. Mặc dù trong lý thuyết ta có thể xây dựng các dịch vụ không dùng WCF, trong thực tế việc xây dựng các dịch vụ là dễ dàng hơn với WCF, WCF là một cài đặt chuẩn công nghiệp của Microsoft định nghĩa các dịch vụ tương tác, kiểu hội thoại, và quản lý các giao thức khác nhau. Bởi vậy WCF cung cấp thao tác giữa các dịch vụ.
- WCF cung cấp những tính năng trực tiếp hồ trợ ứng dụng của các nguyên tắc hướng dịch vụ. Sự mở rộng khác nhau và các công nghệ bên trong wcf đã được thiết kế dè tăng các tiềm năng của sự nhận thức rõ các chất lượng của SOA (như khớp nối long lẻo, sự tự trị, giảm thiểu tiêu thụ tài nguyên, khả năng dò tìm dịch vụ, tái sử dụng dịch
v ụ ) .
Tất cả các chuẩn của Web Service đều được hỗ trợ bởi WCF. Thực tế, ngôn ngữ WSDL đã thiết lập chính nó như một chuẩn ngôn ngừ định nghĩa giao diện (interface definition language) cho các dịch vụ WCF Siêu dữ liệu có thế được viện dần bằng tài liệu cho mỗi dịch vụ để các định nghĩa WSDL tương ứng có thể được phát hiện sứ dụng các điểm trao đổi siêu dữ liệu.
Nền tảng WCF gom nhóm các công nghệ phân tán cũ vào bên trong một mô hình chương trình thống nhất đơn giản
_ _ * f Î * t - _-
'y 2 * * 9
Hình 3.1: Mô hình chương trình thông nhât đã được thiêt lập bởi WCF
21 [P rogram m ing W C F S e r v ic e s] 22 [SO A w ith .N E T and W in d o w s A zu re]
48
3.2 Kiến trúc WCF
Hình dưới đây mô tả các lớp chú yếu trong kiến trúc của WCF
A p p lic atio n ị C o n tra c ts __ í ’ rị.-4 * r ì • v - ạ x . . ■ • , . ¿ é 1 1...1... ... _____ ... ...i ( Service R u n tim e Ị M essa g in g v , n;4 ■ 'Mề. ị p lề è m ỉ ỹ ệ - A W Ệ 2... - . . . - i l ! !Ë ---- _--- fT--?—■---- —' ' ■ • ■ ■ỉấấềiêắầ1<‘. ' Ề V— __________—__,________> - ...-¿ ¿ ¿ L_______■■ --- l i . ,
\ Activdtion and Hosting
v-*.: ; “ * .1 f Hi ... -mi, n rrtrw.1t... „ 1 LMÍII[rmi. Héi: ỵ>ẩ' 'ì 23Hình 3.2: Kiến trúc cùa WCF 3.2.1. Hợp đòng (Contracts)
Khái niệm contract trong WCF cũng giống như các họp đồng mà ta ký trong đời sống thật. Một họp đồng có thể chứa các thông tin như kiểu công việc ta sẽ làm, và những thông tin mà ta muốn đưa ra cho các bên khác. WCF contract cũng chứa các thông tin tương tự như vậy. Thông thường có các loại contract sau:
- Services Contract
Các hợp đồng dịch vụ mô tả toán từ mà dịch vụ có thể cung cấp. Ví dụ, dịch vụ đã được cung cấp để biết thời tiết của thành phố dựa trên mã vùng. Chúng ta gọi dịch vụ này như hợp đồng dịch vụ. Nó sẽ được tạo sử dụng thuộc tính “Service” và “Operational Contract”.
- Data Contract
Nó mô tả các kiểu dừ liệu tùy chỉnh đã được lộ ra tới client. Điều này xác định các kiểu dừ liệu được truyền đến và đi từ dịch vụ. Các kiểu dữ liệu như int, string đã được xác định bởi client bởi vì nó đã được đề cập đến trong tài liệu ngôn ngừ định nghĩa lược đồ XML, nhưng tùy chỉnh được tạo ra lóp hoặc kiểu dừ liệu không thế được xác định bởi các client, ví dụ như kiểu dữ liệu cho nhân viên. Bằng cách sử dụng
DataContract, chúng ta có thể làm cho khách hàng nhận thức được rằng chúng ta đang sư dụng kiểu dừ liệu nhân viên cho việc trả lại hoặc băng qua tham số tới phương thức.
- Message Contract
WCF tương tác với với mồi phần khác bàng sự trao đối các thông điệp SOAP. Bèn trong WCF, cẩu trúc và thiết kế thông điệp SOAP đã được tham chiếu như “message contract”. Một “message contract” có thể được bao gồm các định nghĩa cho một hoặc nhiều hơn các tiêu đề và thân SOAP.
- Policy and Bindings
Chỉ rõ các điều kiện yêu cầu để truyền thông với một dịch vụ,..., yêu cầu bao mật đế truyền thông với dịch vụ, giao thức và mã hóa đã được sử dụng cho sự liên kết.
3.3.2. Dịch vụ Runtime (Service Runtime)
Nó chứa đựng các hành vi xuất hiện trong thời gian chạy của dịch vụ. - Throttling behavior: Điều khiến số lượng thông điệp được xử lý. - E r r o r behavior: Chỉ rõ những gì xảy ra khi xuất hiện lồi trong dịch vụ.
- M etadata behavior: Hành xử như thế nào và liệu siêu dừ liệu là sằn dùng ra bèn ngoài dịch vụ chưa.
- Instance behavior: Chỉ rõ bao nhiêu thể hiện của dịch vụ phái được tạo trong khi chạy.
- Transaction behavior: Cho phép khôi phục lại của các toán tử giao tác nếu một lỗi xuất hiện.
- Message inspection: Kiểm tra thông điệp đem lại cho dịch vụ khả năng kiếm tra tất cả hay một số phần của thông điệp.
- Dispatch behavior: Kiểm soát cách thức thông điệp được xử lý bởi cơ sở hạ tầng WCF.
- Concurrency behavior: Hành xử này giúp cho việc điều khiển sổ lượng luồng có thể truy nhập tới một thực thể của dịch vụ.
- P aram eter filtering: Bộ lọc thông điệp.
3.2.3. Thông điệp (Message)
Tầng thông điệp bao gồm các kênh. Kênh A là một thành phần xử lý một thông điệp theo một cách nào đó, ví dụ sự xác thực một thông điệp. Một sự thiết lập các kênh cũng được biết như một chồng các kênh. Các kênh là sự trừu tượng cốt lõi cho việc gửi các thông điệp và nhận các thông điệp từ một điểm cuối. Có hai loại kênh là
- Các kênh truyền vận: Nắm giữ việc gửi và nhận các thông điệp từ mạng. Các giao thức như HTTP, TCP, MSMQ.
- Các kênh giao thức: Cài đặt SOAP dựa trên giao thức bằng sự xử lý và có thể chinh sửa thông điệp. Ví dụ, WS-Security và WS-Reliability.
3.2.4. Kích hoạt và Chửa (Activation and Hosting )
Các dịch vụ có thể được chứa và được thực thi, bởi vậy nó sẽ sẵn dùng đế tất cá mọi người truy cập từ client. WCF có thể host theo các cách sau:
50
- WCF có thê host trong Internet information Service (IIS).
- Dịch vụ kích hoạt Windows Activation Service (WAS) cua window là một cơ chế kích hoạt mới với I IS 7.0. Ngoài ra đế truyền thông dựa trên HTTP, WCF cũng có thê sử dụng WAS đề cung cấp sự kích hoạt thông điệp cơ bản trên các giao thức khác nhu TCP.
- Tự host (Self hosting)
Dịch vụ WCF có thể được host như ứng dụng console, winform hoặc ứng dụng WPF (Windows Presentation Foundation) với giao diện đồ họa.
- Dịch vụ của window (Windows Service)
WCF có the cũng được host như một window service, để nó là dưới sự kiêm soát của sự quán l ý điều khiển dịch vụ.
CH Ư Ơ N G 4 - N G H IỆ P v ụ PHẦN MỀM
Chương này trình bày về các quy trình nghiệp vụ dành cho giao dịch chứng khoán nhu’ quy trình đặt lệnh môi giới, quy trình sửa và hủy lệnh môi giới đê từ đó cỏ thờ trién khai các quv trình này vào ứng dụng phần mềm.
4.1 Quy trình nhập lệnh môi giói
4.1.1 Mô tả khái quát
- Ọuy trình này cho phép thực hiện nhập và duyệt lệnh giao dịch chứng khoán (buo gồm cả lệnh mua và lệnh bán). Khách hàng có thể đặt lệnh qua nhiều hinh thức khác nhau như đặt lệnh trực tiếp tại công ty chứng khoán, qua Fax, email hay điện thoại. - C á c lệnh đó sẽ được nhân viên môi giới nhập vào phần mềm giao dịch (StockPro). Hệ thống sẽ tự động kiểm tra số dư tiền đối với lệnh mua, số dư chứng khoán đối với lệnh bán. Trong trường hợp lệnh mua không đủ tiền, hệ thống sẽ đưa ra cảnh báo thiếu tiền. Trong trường hợp lệnh bán không đủ số dư chứng khoán, StockPro sẽ đưa ra cánh báo cho nhân viên môi giới biết, StockPro chỉ cho phép thực hiện lệnh bán thiếu chứng khoán đổi với tài khoản khách hàng có chứng khoán cầm cố. Nếu lệnh bán chứng