6

Tại SpringOne2GX 2015, Juergen đã công bố kế hoạch cho Spring Framework 5 với trọng tâm chính là các kiến ​​trúc phản ứng. Những nỗ lực cụ thể đã được tiến hành và rất nhiều điều đã xảy ra kể từ đó!

Ở cấp độ cơ bản nhất, các mô hình lập trình phản ứng cho phép viết các dịch vụ và ứng dụng không chặn. Điều này đòi hỏi một sự thay đổi cơ bản từ việc viết logic bắt buộc sang không đồng bộ, không chặn, mã kiểu chức năng, đặc biệt khi tương tác với các tài nguyên bên ngoài.

Ứng dụng web phản ứng

Hầu hết các ứng dụng web Java được xây dựng trên API Servlet ban đầu được tạo ra với ngữ nghĩa đồng bộ và chặn. Trong những năm qua, hỗ trợ cho các yêu cầu không đồng bộ (Servlet 3.0) và I / O không chặn (Servlet 3.1) đã được thêm vào. Trong Spring MVC, chúng tôi thấy rằng việc thêm xử lý yêu cầu HTTP không đồng bộ chọn lọc vào các ứng dụng hiện có là khả thi. Tuy nhiên, chúng tôi cũng nhận thấy rằng rất khó để giới thiệu I / O không chặn trong một hệ sinh thái các ứng dụng và khung web hiện có. Làm như vậy đòi hỏi phải thay đổi rất sâu tất cả các hợp đồng cốt lõi cần chuyển từ chặn sang ngữ nghĩa không đồng bộ.

Một lý do cho sự phổ biến liên tục của Spring MVC là mô hình lập trình dựa trên chú thích, trực quan dựa trên chữ ký của phương thức điều khiển linh hoạt. May mắn thay, điều tương tự có thể tiếp tục phục vụ như một nền tảng cho các ứng dụng web phản ứng. Đây là hướng cho nỗ lực Spring Reactive , nơi bạn sẽ tìm thấy TestContoder trông giống như bất kỳ bộ điều khiển Spring MVC nào nhưng chạy trên một công cụ phản ứng mới với các thử nghiệm tích hợp chống lại Tomcat, Jetty, Undertow và Netty. Lưu ý rằng dự án này sẽ được sáp nhập vào nhánh chính của Spring Framework ngay sau khi phát hành 4.3 vào tháng 5, để chuẩn bị cho phiên bản 5.0 M1 vào tháng 6.

Nền tảng phản ứng

Một thành phần quan trọng cho nỗ lực này là thông số Luồng phản ứng có mục đích là cung cấp " tiêu chuẩn cho xử lý luồng không đồng bộ với áp suất không chặn ". Thông số kỹ thuật cho phép xen kẽ giữa các nhà cung cấp thành phần không đồng bộ khác nhau: từ máy chủ HTTP đến khung web, trình điều khiển cơ sở dữ liệu, v.v. Nó sẽ được đưa vào JDK 9 dưới dạng java.util.concản.Flow .

Thông số kỹ thuật nhỏ và bao gồm 4 giao diện, một số quy tắc và TCK. Tuy nhiên, để hiển thị nó dưới dạng API, cần có cơ sở hạ tầng xung quanh nó để soạn logic không đồng bộ. Spring Reactive sử dụng Reactor Core , một thư viện nhỏ và tập trung làm nền tảng cho các thư viện và khung công tác muốn xây dựng trên Luồng phản ứng. Đối với những người có thể quen thuộc với Project Reactor , rất nhiều điều đã xảy ra trong 6-8 tháng qua dẫn đến việc phát hành Reactor Core 2.5 M1 trong tuần này, mà Stephane Maldini sẽ sớm cập nhật đầy đủ.

Hãy theo dõi các bài đăng blog tiếp theo về lập trình phản ứng từ các dự án mùa xuân khác nhau. Ngoài ra, mong đợi một số tiếng vang phản ứng tại hội nghị Mùa xuân I / O năm nay tại Barcelona xinh đẹp!

|