Tin nhắn trao đổi mẫu
cho đến nay, chúng tôi có coi là một dịch vụ AS AN nó đại diện của một số doanh nghiệp chức năng rằng kỹ thuật hoạt động bằng cách tin nhắn được gửi đi giữa một nhà cung cấp dịch vụ và sumer con một dịch vụ. Trường hợp điển hình chúng tôi xem xét là một người tiêu dùng thực hiện một cuộc gọi Dịch vụ và nhận được một phản ứng. Bây giờ nó là thời gian để đi vào các chi tiết của các cách khác nhau để trao đổi tin nhắn giữa các nhà cung cấp và người tiêu dùng. Như bạn sẽ thấy, có rất đa-ple thư trao đổi mô hình (MEPs), mà tồn tại trên các lớp khác nhau giao tiếp. Một mô hình dẫn đến sự kiện và sự kiện-driven kiến trúc.
16.2 giới thiệu về MEPs
có những cách khác nhau để trao đổi dữ liệu giữa các hệ thống phân phối. Một cách tiếp cận cơ bản để đối phó với những khác biệt này là để phân loại đường khối dữ liệu được trao đổi. Các khối dữ liệu danh xưng trong tiếng Pháp là tin nhắn. Vì vậy, bởi phân loại một cách khác nhau để trao đổi tin nhắn, chúng tôi nhận được tin nhắn cái gọi là mô hình đổi Ngoại tệ. MEPs xác định trình tự tin nhắn trong một dịch vụ cuộc gọi hoặc dịch vụ hoạt động, xác định thứ tự, chỉ đạo, và cardinality của những tin nhắn.
một cuốn sách (xem, ví dụ: [HohpeWoolf04]). Do hạn chế về space, tôi sẽ tập trung ở đây trên MEPs trong bối cảnh SOA. Khi hữu ích, tôi sẽ sử dụng SOA thuật ngữ như "nhà cung cấp" và "người tiêu dùng" thay vì thư chung thuật ngữ như "người gửi" và "nhận."
10.2 basic MEPs
có những phương pháp tiếp cận khác nhau để phân loại MEPs. Tôi sẽ bắt đầu với hai mô hình cơ bản và sau đó giải thích một số những người khác dựa trên các mẫu.
9.2.1 yêu cầu/phản ứng
có thể các mô hình quan trọng nhất cho SOA là yêu cầu/phản ứng (đôi khi còn được gọi là yêu cầu/trả lời). Trong mô hình này, người tiêu dùng sẽ gửi một tin nhắn yêu cầu cho dịch vụ chuyên nghiệp-vider và chờ đợi cho các nhà cung cấp để gửi thư phản ứng (xem hình 10 - 1). Thư phản ứng có thể chứa dữ liệu yêu cầu và/hoặc xác nhận của pro-cessing thành công, với vị trí của yêu cầu.
nhà cung cấp người tiêu dùng ESB
yêu cầu gửi
Route yêu cầu quá trình
yêu cầu
gửi trả lời
Route phản ứng
F I G U R E 1 0 - 1. Mô hình trao đổi tin nhắn yêu cầu/phản ứng
từ theo quan điểm của người tiêu dùng, Dịch vụ gọi là giống như một cuộc gọi thủ tục từ xa (RPC). Đó là người tiêu dùng bị chặn cho đến khi các phản ứng đến. Bạn có thể nghĩ rằng điều này giống như một cuộc trò chuyện điện thoại truyền hình, nơi bạn đặt một câu hỏi và chờ câu trả lời trước khi tiếp tục.
trao đổi thư theo mô hình này có một lợi thế lớn: nó làm cho mã khá đơn giản. Một dịch vụ gọi xử lý giống như bất kỳ cuộc gọi chức năng hoặc thủ tục khác. Khi bạn cần một số thông tin hoặc cần một cái gì đó phải được thực hiện, bạn đưa ra yêu cầu, chờ đợi câu trả lời hoặc xác nhận, và sau đó tiếp tục với công việc của bạn, biết rằng vấn đề đã được giải quyết.
hạn chế của mô hình này là rằng bạn không thể làm bất cứ điều gì khác trong khi bạn đang chờ đợi các phản ứng. Điều này thường có nghĩa là bạn cần một phản ứng nhanh hoặc rằng chạy thời gian không quan trọng. Trong thực tế, một nhà cung cấp thực hiện một yêu cầu như vậy thường nên có sẵn và có thể gửi một phản ứng trong một số tiền hợp lý của thời gian.
124 C H A P T E R T E N
đồng hồ đếm ngược để bắt đầu một số ngoại lệ xử lý nếu một phản ứng không đến trong một số tiền nhất định của thời gian, Tuy nhiên, khái niệm bạn có thể xem xét điều này là một mở rộng và phức tạp hơn MEP dựa trên các mô hình cơ bản yêu cầu/phản ứng. (Để biết thêm về vấn đề này, xem phần 10,5 sau đó trong chương này.)
Lưu ý bạn cũng có thể sắp xếp để làm một cái gì đó khác trong khi chờ đợi các phản ứng. Vì lý do này, đôi khi người phân biệt giữa yêu cầu chặn và nonblocking / phản ứng mô hình (đôi khi còn được gọi là đồng bộ và không đồng bộ yêu cầu/phản ứng pat-Nhạn). Một lần nữa, bạn có thể xem xét sau này phải MEP khác, hơi phức tạp hơn, mà thường được gọi là mô hình yêu cầu/gọi lại (xem phần 10.3.1 sau đó trong chương này).
10.2.2 chiều
Nếu bạn không cần một phản ứng, có là một thay thế là thậm chí đơn giản từ góc độ của người tiêu dùng: gửi một tin nhắn, và bạn đã hoàn tất. Mô hình này một cách thường xuyên cũng được gọi là "lửa và quên" (xem hình 10-2).
nhà cung cấp người tiêu dùng ESB
yêu cầu gửi
Route yêu cầu quá trình
yêu cầu
F I G U R E 1 0 - 2. Một chiều thư trao đổi mô hình
Bạn có thể tự hỏi tại sao tôi đã không giới thiệu mô hình này lần đầu tiên, bởi vì nó trông giống như sim-plest và một trong những cơ bản nhất. Ngoài ra, bạn có thể tranh luận rằng các mô hình yêu cầu/phản ứng là chỉ là một phần của hai chiều thư. Tuy nhiên, đây không phải là nhất thiết phải là trường hợp, vì hai lý do:
• từ một người tiêu dùng của quan điểm trên, một sự kết hợp của hai chiều thư sẽ dẫn đến một nonblocking hoặc không đồng bộ yêu cầu/phản ứng (hoặc yêu cầu/gọi lại) mô hình, bởi vì khách hàng không bị chặn giữa thời gian khi nó sẽ gửi yêu cầu ban đầu và thời gian khi các phản ứng đến (xem phần 10.3.1).
• Từ một cơ sở hạ tầng của (ESB) quan điểm trên, gửi tin nhắn một cách hai sẽ yêu cầu người gửi của yêu cầu đầu tiên (tức là, người tiêu dùng dịch vụ) để có thể nhận được yêu cầu một chiều thứ hai (trong đó một cách hợp lý là phản ứng của nhà cung cấp dịch vụ). Đó có nghĩa là người tiêu dùng đã có thể là một nhà cung cấp (tức là, nó phải được địa chỉ và có thể xử lý các tin nhắn).
Phần tiếp theo giải thích điều này trong thêm chi tiết.
1 0. 2 B A S I C M E P S
đòi hỏi một phản ứng từ hệ thống B để hệ thống A. Phản ứng này có thể hoặc có thể không được yêu cầu để được gửi đến các quá trình/chủ đề của người tiêu dùng gốc.
nếu trình tiêu dùng (mà có thể là một lối vào, một ứng dụng hàng loạt hoặc một dịch vụ chính nó) cần các phản ứng để của nó chế biến tiếp, nó là quan trọng rằng các phản ứng được gửi đến trường hợp cụ thể quá trình thực hiện yêu cầu ban đầu (xem hình 10-3).
1
2
vụ
4 3
phụ trợ A phụ trợ B
F I G U R E 1 0 - 3. Hai hệ thống trang có liên quan đến một mẫu yêu cầu/phản ứng
ví dụ, một dịch vụ CRM có thể cần phải biết về một khách hàng thanh toán thực tế hành vi để xác định xem có nên cho phép một tùy chọn hợp đồng nhất định. Đối với điều này, nó gọi một dịch vụ của hệ thống thanh toán. Nhưng nó cần các phản ứng để tiếp tục thực hiện các dịch vụ ban đầu, do đó, nó là quan trọng rằng các phản ứng được định tuyến đến trường hợp dịch vụ CRM ban đầu. Trong trường hợp này, người tiêu dùng phải chặn và chờ đợi cho trả lời.
nếu, mặt khác, Hệ thống A nhu cầu đáp ứng yêu cầu nhưng ban đầu hàng cụ thể có thể tiếp tục làm công việc của mình mà không nhận được các phản ứng, nó không phải là quan trọng rằng các phản ứng được chuyển giao cho trường hợp quá trình thực hiện yêu cầu ban đầu. Thay vào đó, bạn có thể xem xét thư đáp ứng được yêu cầu dịch vụ một quay lại hệ thống bắt đầu yêu cầu đầu tiên (xem hình 10-4). Nói cách khác, bạn có thể sử dụng hai chiều thư.
1
Service 2
dịch vụ
dịch vụ 4
5 3
phụ trợ A phụ trợ B
F I G U R E 1 0 - 4. Hai hệ thống trang có liên quan đến hai mẫu một chiều
126 C H một P T E R T E N
ing hệ thống đã xử lý yêu cầu, nó có thể gọi Dịch vụ khác trong hệ thống CRM để lưu trữ số hóa đơn mới và ngày có. (Tất nhiên, nó cũng phải bao gồm cus-tomer ID do đó yêu cầu phản ứng"" tương ứng với khách hàng bên phải.)
Hình 10-5 cho thấy sơ đồ trình tự tương ứng cho kịch bản này.
Hệ thống A hệ thống A hệ thống B
Prov. Cons. bên nhà cung cấp ESB
yêu cầu gửi
Route yêu cầu quá trình
yêu cầu
Lộ trình phản ứng yêu cầu trả lời gửi
(kỹ thuật yêu cầu mới)
xử lý phản ứng
yêu cầu
F I G U R E 1 0 - 5. Hai chiều thư trao đổi mô hình
như ví dụ cuối minh chứng, lợi thế lớn của tin nhắn một cách là không ủng hộ cess bị chặn. Có nghĩa là, người tiêu dùng và các nhà cung cấp không cần phải có cùng một lúc. Thực tế bạn có thể chèn hàng đợi tin nhắn trong cơ sở hạ tầng (ESB), do đó, một khi thư được gửi nó tiếp tục tồn tại và không thể bị lạc. Điều này là cốt lõi của thông điệp theo định hướng trung gian (MOM) chẳng hạn như MQ và tấn thành.
N O T E
trình tự của các tin nhắn một cách đã dẫn đến các khái niệm về quá trình (kinh doanh)
dây chuyền, thảo luận trong phần 10.6.
Lợi thế của mô hình thư yêu cầu/phản ứng là các phản ứng được gửi đến trường hợp tương tự trong quá trình kích hoạt yêu cầu ban đầu.
nếu bạn có không có hỗ trợ cho các mẫu yêu cầu/phản ứng trong cơ sở hạ tầng của bạn, bạn sẽ có để chương trình trong khả năng cho các bên cung cấp của hệ thống yêu cầu để tìm thấy phần bên phải để cung cấp những lời. Trong trường hợp này người tiêu dùng thường gửi nội bộ địa chỉ trả lại một"" cho người chăm sóc, mà các nhà cung cấp sẽ gửi lại với phản ứng mes-sage. Các quá trình tiêu dùng/chủ đề xử lý tin nhắn đến phản ứng sau đó có thể sử dụng thông tin này để nội bộ định tuyến này phản ứng với trường hợp đúng quá trình (tức là, một trong đó ban đầu gửi yêu cầu).
1 0. 2 B MỘT S TÔI C M E P S
Có rất nhiều có thể mở rộng và các biến thể của những hai cơ bản MEPs.
của Hãy để thảo luận về một số trong những người tiêu biểu nhất.
10.3.1 yêu cầu/gọi lại
thường một quá trình/chủ đề cần một số dữ liệu hoặc xác nhận, nhưng không cần phải bị chặn cho đến khi nó đến. Mô hình này có thể được gọi là nonblocking yêu cầu/phản ứng, không đồng bộ yêu cầu/phản ứng, hoặc chỉ cần yêu cầu/gọi lại (tôi thích thuật ngữ sau này).
khái niệm, một người tiêu dùng của API cho kịch bản như vậy làm việc sao cho người tiêu dùng bắt đầu một yêu cầu và xác định những việc cần làm khi câu trả lời đến. Về mặt kỹ thuật, người tiêu dùng có thể (ví dụ) xác định một cái gọi là "chức năng gọi lại," đó là một chức năng/thủ tục được gọi là khi các phản ứng đến.
Đối phó với không đồng bộ phản ứng thường dẫn đến mã phức tạp hơn. Ví dụ:
• nếu bạn gửi nhiều hơn một yêu cầu/gọi lại thư, bạn phải đối phó với thực tế là các câu trả lời có thể trở lại theo một thứ tự khác nhau từ thứ tự mà trong đó bạn đã gửi các yêu cầu. Có nghĩa là, bạn phải tương quan câu trả lời cho các yêu cầu ban đầu. Điều này là thực hiện bằng cách giới thiệu tương quan ID được thông qua với các yêu cầu usu-đồng minh
đang được dịch, vui lòng đợi..
