Message Exchange PatternsSO FAR, WE HAVE CONSIDERED A SERVICE AS AN IT dịch - Message Exchange PatternsSO FAR, WE HAVE CONSIDERED A SERVICE AS AN IT Việt làm thế nào để nói

Message Exchange PatternsSO FAR, WE

Message Exchange Patterns


















SO FAR, WE HAVE CONSIDERED A SERVICE AS AN IT REPRESENTATION OF SOME BUSINESS FUNCTIONALITY THAT technically works by messages being sent between a service provider and a service con-sumer. The typical scenario we looked at was that of a consumer performing a service call and getting a response. Now it’s time to go into the details of the different ways of exchanging messages between providers and consumers. As you will see, there are multi-ple message exchange patterns (MEPs), which exist on different communication layers. One pattern leads to events and event-driven architectures.

10.1 Introduction to MEPs

There are different ways to exchange data between distributed systems. One fundamental approach to dealing with these differences is to categorize the way chunks of data are exchanged. These chunks of data are called messages. Thus, by categorizing different ways of exchanging messages, we get the so-called message exchange patterns. MEPs define the sequence of messages in a service call or service operation, specifying the order, direction, and cardinality of those messages.

a book (see, e.g., [HohpeWoolf04]). Because of space constraints, I will concentrate here on MEPs in the context of SOA. When useful, I will use SOA terms such as “provider” and “consumer” instead of general message terms such as “sender” and “receiver.”

10.2 Basic MEPs

There are different approaches to categorizing MEPs. I’ll start with two basic patterns and then explain some others based on these patterns.

10.2.1 Request/Response

Probably the most important pattern for SOA is request/response (sometimes also called request/reply). In this pattern, the consumer sends a request message to the service pro-vider and waits for the provider to send a response message (see Figure 10-1). The response message might contain requested data and/or a confirmation of successful pro-cessing of the request.


Consumer ESB Provider


Send request
Route request Process
request
Send response
Route response



F I G U R E 1 0 - 1 . Request/response message exchange pattern

From a consumer’s point of view, such a service call is like a remote procedure call (RPC). That is, the consumer is blocked until the response arrives. You can think of this like a tele-phone conversation, where you ask a question and wait for the answer before continuing.

Exchanging messages according to this pattern has a big advantage: it makes code pretty simple. A service call is handled like any other function or procedure call. When you need some information or need something to be done, you make your request, wait for the answer or confirmation, and then continue with your work, knowing that the problem has been solved.


The drawback of this pattern is that you cannot do anything else while you are waiting for the response. This typically means either that you need a fast response or that running time doesn’t matter. In practice, a provider processing such a request should usually be available and able to send a response in a reasonable amount of time.



124 C H A P T E R T E N

timers to start some exception handling if a response does not arrive in a given amount of time, but conceptually you can consider this to be an extended and more complicated MEP based on the fundamental request/response pattern. (For more on this issue, see Section 10.5 later in this chapter.)

Note that you might also arrange to do something else while waiting for the response. For this reason, sometimes people differentiate between blocking and nonblocking request/ response patterns (sometimes also called synchronous and asynchronous request/response pat-terns). Again, you can consider the latter to be another, slightly more complicated MEP, which is typically called the request/callback pattern (see Section 10.3.1 later in this chapter).

10.2.2 One-Way

If you don’t need a response, there is an alternative that’s even simpler from a consumer’s point of view: send a message, and you’re done. This one-way pattern is often also called “fire and forget” (see Figure 10-2).

Consumer ESB Provider


Send request
Route request Process
request





F I G U R E 1 0 - 2 . One-way message exchange pattern

You might wonder why I didn’t introduce this pattern first, because it looks like the sim-plest and most fundamental one. In addition, you might argue that the request/response pattern is just a composition of two one-way messages. However, this is not necessarily the case, for two reasons:

• From a consumer’s point of view, a combination of two one-way messages would lead to an asynchronous or nonblocking request/response (or request/callback) pattern, because the client is not blocked between the time when it sends the initial request and the time when the response arrives (see Section 10.3.1).

• From an infrastructure’s (ESB’s) point of view, sending two one-way messages would require the sender of the first request (i.e., the service consumer) to be able to receive the second one-way request (which logically is the service provider’s response). That means the consumer has to be able to be a provider (i.e., it must be addressable and able to process incoming messages).

The next section explains this in more detail.


1 0 . 2 B A S I C M E P S

necessitates a response from system B to system A. This response might or might not be required to be sent to the process/thread of the original consumer.

If the consumer process (which might be a frontend, a batch application, or a service itself) needs the response for its further processing, it is important that the response is delivered to the specific process instance that performed the initial request (see Figure 10-3).

1

2
Service Service

4 3
Backend A Backend B

F I G U R E 1 0 - 3 . Two systems connected with a request/response pattern

For example, a CRM service might need to know about a customer’s actual payment behavior to determine whether to allow a certain contract option. For this, it calls a service of the billing system. But it needs the response in order to continue to perform the initial service, so it is important that the response is routed to the original CRM service instance. In this case, the consumer must block and wait for the reply.

If, on the other hand, system A needs the response to the request but the specific initial consumer can continue to do its work without getting the response, it is not important that the response be delivered to the process instance that performed the initial request. Instead, you can consider the response message to be another service request back to the system that initiated the first request (see Figure 10-4). In other words, you can use two one-way messages.



1
Service 2
Service
Service 4
5 3

Backend A Backend B

F I G U R E 1 0 - 4 . Two systems connected with two one-way patterns




126 C H A P T E R T E N

ing system has processed the request, it might call another service in the CRM system to store the new invoice number and date there. (Of course, it must also include the cus-tomer ID so that the “response request” corresponds to the right customer.)

Figure 10-5 shows the corresponding sequence diagram for this scenario.

System A System A System B
Cons. side Prov. side ESB Provider


Send request
Route request Process
request
Route response request Send response
(technical new request)
Process response
request


F I G U R E 1 0 - 5 . Two one-way message exchange patterns

As the last example demonstrates, the big advantage of one-way messages is that no pro-cess is blocked. That is, the consumer and the provider don’t have to be available at the same time. In fact, you can insert message queues in your infrastructure (ESB), so that once a message is sent it is persisted and can’t get lost. This is the core of message-oriented middleware (MOM) such as MQ and JMS.

N O T E

Sequences of one-way messages led to the concept of (business) process

chains, discussed in Section 10.6.

The advantage of the request/response message pattern is that the response is delivered to the same process instance that triggered the initial request.

If you have no support for the request/response pattern in your infrastructure, you’ll have to program in the ability for the providing side of the requesting system to find the right instance to deliver the response to. In this case the consumer usually sends an internal “return address” to the provider, which the provider sends back with the response mes-sage. The consumer process/thread that processes the incoming response message can then use this information to internally route this response to the right process instance (i.e., the one that initially sent the request).





1 0 . 2 B A S I C M E P S

There are many possible extensions to and variations of these two fundamental MEPs.

Let’s discuss some of the most typical ones.

10.3.1 Request/Callback

Often a process/thread needs some data or confirmation, but doesn’t need to be blocked until it arrives. This pattern may be called nonblocking request/response, asynchronous request/response, or just request/callback (I prefer the latter term).

Conceptually, a consumer’s API for such a scenario works such that the consumer initiates a request and specifies what to do when the answer arrives. Technically, the consumer might (for example) define a so-called “callback function,” which is a function/procedure that is called when the response arrives.

Dealing with asynchronous responses usually leads to more complicated code. For example:

• If you send more than one request/callback message, you have to deal with the fact that the responses may return in a different order from the order in which you sent the requests. That is, you have to correlate the answers to the initial requests. This is usu-ally done by introducing correlation IDs that are passed with the requests
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
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..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Các mẫu báo cáo TTTD SO FAR, CHÚNG TÔI CÓ COI Một DỊCH VỤ AS AN ĐẠI DIỆN CỦA MỘT SỐ CHỨC NĂNG CNTT kinh doanh về mặt kỹ thuật hoạt động bằng tin nhắn được gửi đi giữa một nhà cung cấp dịch vụ và dịch vụ con-Sumer. Kịch bản tiêu biểu chúng tôi đã 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ờ là thời gian để đi vào các chi tiết trong những cách khác nhau trao đổi thông điệp giữa các nhà cung cấp và người tiêu dùng. Như bạn sẽ thấy, có rất nhiều dụ mô hình trao đổi tin nhắn (MEP), mà tồn tại trên lớp truyền thông khác nhau. Một mô hình dẫn đến các sự kiện và kiến trúc hướng sự kiện. 10.1 Giới thiệu về MEP Có nhiều 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 cách khối dữ liệu được trao đổi. Các khối dữ liệu được gọi là tin nhắn. Như vậy, bằng cách phân loại cách khác nhau trao đổi tin nhắn, chúng tôi nhận được cái gọi là mô hình trao đổi tin nhắn. MEP xác định trình tự của tin nhắn trong một cuộc gọi dịch vụ hoặc hoạt động dịch vụ, quy định cụ thể trình tự, chỉ đạo, và cardinality của những tin nhắn. một cuốn sách (xem, ví dụ, [HohpeWoolf04]). Vì hạn chế về không gian, tôi sẽ tập trung ở đây trên MEP trong bối cảnh của SOA. Khi hữu ích, tôi sẽ sử dụng thuật ngữ SOA như "nhà cung cấp" và "người tiêu dùng" thay vì từ ngữ tin chung như "người gửi" và "nhận". 10.2 cơ bản MEP Có nhiều phương pháp khác nhau để phân loại MEP. Tôi sẽ bắt đầu với hai mô hình cơ bản và sau đó giải thích một số người khác dựa trên những mô hình. 10.2.1 Yêu cầu / đáp ứng Có lẽ mô hình quan trọng nhất đối với SOA là yêu cầu / đáp ứ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 với dịch vụ chuyên nghiệp-vider và chờ đợi cho các nhà cung cấp để gửi một thông điệp trả lời (xem hình 10-1). Thông điệp trả lời có thể chứa dữ liệu yêu cầu và / hoặc xác nhận thành công chuyên nghiệp cessing được yêu cầu. tiêu dùng ESB cung cấp Gửi yêu cầu Route yêu cầu quá trình yêu cầu Gửi phản ứng phản ứng Route F IGURE 1 0 - 1. Yêu cầu / đáp ứng tin nhắn mẫu ngoại tệ Từ quan điểm của một người tiêu dùng, một cuộc gọi dịch vụ như vậy cũng giống như một cuộc gọi thủ tục từ xa (RPC). Đó là, người tiêu dùng sẽ bị khóa cho đến khi phản ứng đến. Bạn có thể nghĩ về điều này như một cuộc trò chuyện điện thoại từ xa, nơi bạn đặt một câu hỏi và chờ đợi câu trả lời trước khi tiếp tục. Trao đổi thông điệp 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 cuộc gọi dịch vụ được xử lý giống như bất kỳ chức năng khác hoặc gọi thủ tụ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 thực hiện yêu cầu của bạn, 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à bạn không thể làm bất cứ điều gì khác trong khi bạn đang chờ đợi phản ứng. Điều này thường có nghĩa rằng bạn cần một phản ứng nhanh hoặc thời gian chạy không quan trọng. Trong thực tế, một nhà cung cấp xử lý một yêu cầu như vậy nên thường có sẵn và có thể gửi một phản ứng trong một khoảng thời gian hợp lý. 124 CHAPTERTEN giờ để bắt đầu một số xử lý ngoại lệ nếu một phản ứng không đến trong một khoảng thời gian nhất định, nhưng khái niệm bạn có thể coi đây là một MEP mở rộng và phức tạp hơn dựa trên mô hình yêu cầu / đáp ứng cơ bản. (Để biết thêm về vấn đề này, xem Phần 10.5 sau trong chương này.) Lưu ý rằng bạn cũng có thể sắp xếp để làm cái gì khác trong khi chờ đợi phản ứng. Vì lý do này, đôi khi người ta phân biệt giữa mô hình ngăn chặn và không chặn yêu cầu / đáp ứng (đôi khi còn được gọi là đồng bộ và không đồng bộ yêu cầu / đáp ứng pat-chim nhạn biển). Một lần nữa, bạn có thể xem xét cuối cùng này có khác, MEP 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 một chiều Nếu bạn không cần phải có Đáp lại, có một sự thay thế mà thậm chí còn đơn giản hơn từ quan điểm của người tiêu dùng: gửi tin nhắn, và bạn đang làm. Mô hình một chiều này thường cũng được gọi là "bắn và quên" (xem hình 10-2). tiêu dùng ESB cung cấp Gửi yêu cầu Route yêu cầu quá trình yêu cầu F IGURE 1 0 - 2. Một chiều mô hình trao đổi tin nhắn Bạn có thể tự hỏi tại sao tôi không giới thiệu mô hình này đầu tiên, bởi vì nó trông giống như sim-plest và một 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 / đáp ứng chỉ là một thành phần của hai thông điệp một chiều. Tuy nhiên, điều này không nhất thiết phải là trường hợp, vì hai lý do: • Từ quan điểm của một người tiêu dùng, một sự kết hợp của hai thông điệp một chiều sẽ dẫn đến sự không đồng bộ hoặc không chặn yêu cầu / đáp ứ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 phản ứng đến (xem phần 10.3.1). • Từ quan điểm của một cơ sở hạ tầng (ESB của) xem, gửi hai thông điệp một chiều sẽ yêu cầu người gửi yêu cầu đầu tiên (tức là, người tiêu dùng dịch vụ) để có thể nhận được thứ hai yêu cầu một chiều (trong đó một cách hợp lý là đáp ứng của nhà cung cấp). Điều đó có nghĩa người tiêu dùng có để có thể trở thành 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 đến). Phần tiếp theo giải thích chi tiết hơn. 1 0. 2 BASICMEPS đòi hỏi một phản ứng từ hệ thống B vào hệ thống A. phản ứng này có thể hoặc không thể được yêu cầu phải được gửi đến các quá trình / thread của người tiêu dùng ban đầu. Nếu quá 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ụ riêng của mình) cần đáp ứng để chế biến tiếp của nó, điều quan trọng là đáp ứng được gửi đến các trường hợp cụ thể mà quá trình thực hiện các yêu cầu ban đầu (xem hình 10-3). 1 2 Dịch vụ 4 3 phụ Một phụ B F IGURE 1 0 - 3. Hai hệ thống kết nối với một mô hình yêu cầu / đáp ứng Ví dụ, một dịch vụ CRM có thể cần phải biết về hành vi thanh toán thực tế của khách hàng để xác định xem có nên cho phép một lựa 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 đáp ứng để tiếp tục thực hiện các dịch vụ ban đầu, vì vậy điều quan trọng là đáp ứng được chuyển đến các 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 ngăn chặn và chờ đợi câu trả lời. Nếu, mặt khác, hệ thống A cần đáp ứng yêu cầu nhưng người tiêu dùng ban đầu cụ thể có thể tiếp tục làm công việc của mình mà không nhận được phản ứng, nó không phải là quan trọng đáp ứng được gửi đến các trường hợp quá trình thực hiện các yêu cầu ban đầu. Thay vào đó, bạn có thể xem xét các tin nhắn trả lời là một yêu cầu dịch vụ trở 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 thông điệp một chiều. 1 Dịch vụ 2 Dịch vụ Dịch vụ 4 5 3 phụ Một phụ B F IGURE 1 0 - 4. Hai hệ thống kết nối với hai mô hình một chiều 126 CHAPTERTEN hệ thống ing đã xử lý yêu cầu, nó có thể gọi dịch vụ khác trong hệ thống CRM để lưu trữ các số hóa đơn mới và ngày đó. (Tất nhiên, nó cũng phải bao gồm ID hải Tomer để các "đáp ứng yêu cầu" tương ứng với khách hàng ngay.) Hình 10-5 cho thấy sơ đồ trình tự tương ứng cho trường hợp này. Hệ thống Một hệ thống Một hệ thống B Cons. bên Tỉnh. bên ESB cung cấp Gửi yêu cầu Route yêu cầu quá trình yêu cầu đáp ứng yêu cầu Route Gửi phản ứng (yêu cầu mới kỹ thuật) đáp ứng quá trình yêu cầu Hình 1 0 - 5. Hai một chiều mô hình trao đổi tin nhắn Như ví dụ mới nhất cho thấy, lợi thế lớn của các thông điệp một chiều là không chuyên nghiệp truy nhập bị chặn. Đó là, người tiêu dùng và các nhà cung cấp không phải là có sẵn cùng một lúc. Trong thực tế, bạn có thể chèn hàng đợi tin nhắn của bạn trong cơ sở hạ tầng (ESB), để khi tin nhắn được gửi nó được tiếp tục tồn tại và không thể bị lạc. Đây là cốt lõi của tin nhắn theo định hướng middleware (MOM) như MQ và JMS. Chú ý Thứ tự của thông điệp một chiều dẫn đến khái niệm (kinh doanh) quá trình dây chuyền, thảo luận trong phần 10.6. Lợi thế của mô hình thông báo yêu cầu / đáp ứng là đáp ứng được giao cho các ví dụ quá trình tương tự như kích hoạt các yêu cầu ban đầu. Nếu bạn không có hỗ trợ cho các mô hình yêu cầu / đáp ứng 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 những ví dụ ngay để cung cấp đáp ứng. Trong trường hợp này người tiêu dùng thường gửi một "địa chỉ trả lại" nội bộ để các nhà cung cấp, trong đó các nhà cung cấp sẽ gửi lại với các phản ứng mes-hiền. Quá trình người tiêu dùng / chủ đề đó xử lý các tin nhắn trả lời đến sau đó có thể sử dụng thông tin này để nội bộ tuyến đường phản ứng này để thể hiện đúng quy trình (ví dụ, một trong những ban đầu gửi yêu cầu). 1 0. 2 BASICMEPS Có rất nhiều phần mở rộng có thể và các biến thể của hai MEP cơ bản. 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 là một quá trình / thread 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à không chặn yêu cầu / đáp ứng, không đồng bộ yêu cầu / đáp ứng, hoặc chỉ yêu cầu / gọi lại (tôi thích thuật ngữ thứ hai). Khái niệm, API của người tiêu dùng đối với một kịch bản như vậy hoạt động như vậy mà người tiêu dùng khởi tạo một yêu cầu và quy định cụ thể 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", mà là một chức năng / thủ tục được gọi là khi phản ứng đến. Đối phó với phản ứng không đồng bộ thường dẫn đến mã phức tạp hơn. Ví dụ: • Nếu bạn gửi nhiều tin nhắn yêu cầu / gọi lại, 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 với thứ tự mà bạn đã gửi yêu cầu. Đó là, bạn phải tương quan câu trả lời cho các yêu cầu ban đầu. Đây là USU-đồng minh thực hiện bằng cách giới thiệu các ID tương quan được thông qua với các yêu cầu















































































































































































đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2025 I Love Translation. All reserved.

E-mail: