JavaRush /Blog Java /Random-VI /Phần 2. Nói một chút về kiến trúc phần mềm

Phần 2. Nói một chút về kiến trúc phần mềm

Xuất bản trong nhóm
Tài liệu này là một phần của loạt bài “ Giới thiệu về Phát triển Doanh nghiệp ”. Phần đầu tiên về mạng là ở đây . Phần 2. Nói một chút về kiến ​​trúc phần mềm - 1Kiến trúc phần mềm là cấu trúc trên cơ sở đó một ứng dụng được tạo ra và các mô-đun cũng như thành phần của toàn bộ chương trình tương tác với nhau. Các lập trình viên đã cố gắng tạo ra kiến ​​trúc tốt trong một thời gian rất dài, vì vậy không có gì ngạc nhiên khi ngày nay chúng ta biết rất nhiều mẫu kiến ​​trúc. Bạn cần hiểu chúng: khi bạn viết một ứng dụng web, vấn đề về kiến ​​trúc trở nên gay gắt vì có nhiều thành phần và mô-đun trong đó hơn so với một ứng dụng thông thường. Một mẫu kiến ​​trúc là một cách đã được suy nghĩ sẵn để giải quyết một số vấn đề thiết kế phần mềm. Có thể bạn đã từng gặp các mẫu thiết kế như Factory Method, Tóm tắt Factory, Builder, Prototype, Singleton và có lẽ những mẫu khác. Chúng được sử dụng để viết mã, tạo lớp và lập kế hoạch tương tác. Các mẫu kiến ​​trúc được sử dụng ở mức độ trừu tượng cao hơn - khi lập kế hoạch tương tác của người dùng ứng dụng với máy chủ, dữ liệu và các thành phần khác của dự án. Chúng ta hãy xem nhanh một số mẫu và cách sử dụng chúng.

Kiến trúc máy khách-máy chủ

Ngay từ cái tên, người ta có ấn tượng rằng mọi thứ liên quan đến chủ đề này đều đơn giản và rõ ràng. Nhưng hãy làm rõ một số điểm để khi bắt đầu nghiên cứu Mùa xuân có điều kiện, bạn sẽ hiểu chính xác những gì chúng ta đang nói đến. Giả sử bạn đã viết một cuộc trò chuyện và bạn cùng bạn bè của bạn bắt đầu sử dụng nó. Có thể thực hiện một tùy chọn đơn giản ở đây - bạn gửi tin nhắn trực tiếp cho nhau qua Internet bằng các địa chỉ IP mà bạn biết: Phần 2. Nói một chút về kiến ​​trúc phần mềm - 2Lúc đầu, có vẻ như mọi thứ đều ổn, cho đến khi một người bạn khác của bạn xuất hiện với câu hỏi: “Tại sao không bạn không thêm tôi vào cuộc trò chuyện của mình à?” Và khi quyết định thêm một người bạn chung vào cuộc trò chuyện, bạn sẽ gặp phải một vấn đề về kiến ​​trúc: mỗi người dùng trò chuyện cần cập nhật thông tin về số lượng người dùng, thêm địa chỉ IP của người dùng mới. Và khi gửi tin nhắn thì nó phải được chuyển đến tất cả những người tham gia. Đây là những vấn đề rõ ràng nhất sẽ phát sinh. Còn rất nhiều vấn đề khác sẽ được ẩn giấu trong chính đoạn mã đó. Để tránh chúng, bạn cần sử dụng một máy chủ sẽ lưu trữ tất cả thông tin về người dùng và biết địa chỉ của họ. Tin nhắn sẽ chỉ cần được gửi đến máy chủ. Và đến lượt anh ta sẽ gửi tin nhắn đến tất cả người nhận. Khi bạn quyết định thêm phía máy chủ vào cuộc trò chuyện của mình, bạn sẽ bắt đầu xây dựng kiến ​​trúc máy khách-máy chủ.

Các thành phần của kiến ​​trúc client-server

Hãy tìm hiểu xem cô ấy là gì. Kiến trúc client-server là một mẫu thiết kế, là cơ sở để tạo ra các ứng dụng web. Kiến trúc này bao gồm ba thành phần: Phần 2. Nói một chút về kiến ​​trúc phần mềm - 3
  1. Khách hàng - ngay từ cái tên, có thể thấy rõ đây là người dùng dịch vụ (ứng dụng web) liên hệ với máy chủ để lấy một số thông tin.

  2. Máy chủ là nơi đặt ứng dụng web của bạn hoặc phần máy chủ của nó. Anh ta sở hữu thông tin cần thiết về người dùng hoặc có thể yêu cầu nó. Ngoài ra, khi khách hàng liên hệ, máy chủ sẽ trả về thông tin được yêu cầu.

  3. Mạng rất đơn giản: nó đảm bảo việc trao đổi thông tin giữa máy khách và máy chủ.

Máy chủ có thể xử lý một số lượng lớn yêu cầu từ những người dùng khác nhau. Nghĩa là có thể có nhiều khách hàng và nếu họ cần trao đổi thông tin với nhau thì việc này sẽ phải được thực hiện thông qua máy chủ. Do đó, máy chủ nhận được thêm một chức năng nữa - kiểm soát lưu lượng. Nếu chúng ta đang nói về cuộc trò chuyện nhiều người dùng mà chúng ta đã tạo, toàn bộ mã chương trình sẽ bao gồm hai mô-đun:
  • client - chứa giao diện đồ họa để ủy quyền, gửi/nhận tin nhắn;

  • phía máy chủ - một ứng dụng web được lưu trữ trên máy chủ và nhận tin nhắn từ người dùng, xử lý chúng và sau đó gửi chúng đến người nhận.

Phần 2. Nói một chút về kiến ​​trúc phần mềm - 4Khi chúng tôi muốn xem thông tin hữu ích (hoặc không hữu ích) trên Internet, chúng tôi mở trình duyệt, nhập truy vấn vào thanh tìm kiếm và để phản hồi, chúng tôi nhận được thông tin từ công cụ tìm kiếm. Trong chuỗi này, trình duyệt là khách hàng của chúng tôi. Nó sẽ gửi một yêu cầu có thông tin về những gì chúng tôi đang tìm kiếm đến máy chủ. Máy chủ xử lý yêu cầu, tìm kết quả phù hợp nhất, đóng gói chúng thành định dạng mà trình duyệt (máy khách) có thể hiểu được và gửi lại. Trong các dịch vụ phức tạp như công cụ tìm kiếm có thể có nhiều máy chủ. Ví dụ: máy chủ ủy quyền, máy chủ tìm kiếm thông tin, máy chủ tạo phản hồi. Nhưng khách hàng không biết gì về điều này: đối với anh ta, máy chủ là một thứ gì đó thống nhất. Máy khách chỉ biết về điểm vào, tức là địa chỉ của máy chủ mà nó cần gửi yêu cầu. Hãy nhớ lại ứng dụng mà chúng ta đã xem ở phần trước - để theo dõi nhiệt độ không khí trung bình ở tất cả các quốc gia trong thời gian thực. Kiến trúc của nó sẽ trông giống như thế này: Phần 2. Nói một chút về kiến ​​trúc phần mềm - 5Ứng dụng của chúng tôi được đặt trên một máy chủ. Giả sử, cứ sau 5 giây, nó sẽ gửi yêu cầu đến máy chủ của các trung tâm khí tượng thủy văn địa phương, nhận thông tin từ họ về nhiệt độ ở một quốc gia cụ thể và lưu trữ thông tin này. Khi khách hàng liên hệ với chúng tôi với yêu cầu “xem nhiệt độ không khí hiện tại trên thế giới”, chúng tôi sẽ trả về thông tin được lưu trữ mới nhất, được sắp xếp theo quốc gia. Như vậy, ứng dụng của chúng ta vừa là máy chủ (khi xử lý yêu cầu của người dùng) vừa là máy khách (khi nhận thông tin từ các máy chủ khác).
Quan trọng: khái niệm máy chủ không phải về một máy tính cụ thể mà là về mối quan hệ giữa các thuê bao mạng .
Kiến trúc client-server đơn giản hiếm khi được sử dụng và chỉ dành cho những ứng dụng rất đơn giản. Đối với các dự án thực sự lớn và phức tạp, các loại kiến ​​trúc khác nhau được sử dụng mà bạn sẽ trở nên quen thuộc hơn trong tương lai. Bây giờ, chúng ta hãy xem một mô hình rất giống với mô hình máy khách-máy chủ.

Kiến trúc ba tầng

Đây là mẫu kiến ​​trúc giới thiệu thành phần thứ ba: kho dữ liệu . Khi sử dụng mẫu này, ba cấp độ thường được gọi là lớp: Phần 2. Nói một chút về kiến ​​trúc phần mềm - 6
  1. Lớp khách hàng là giao diện người dùng. Đây có thể là một trình duyệt web mà các trang HTML được gửi tới hoặc một ứng dụng GUI được viết bằng JavaFX. Điều chính là với sự trợ giúp của nó, người dùng có thể gửi yêu cầu đến máy chủ và xử lý các phản hồi của nó.

  2. Lớp logic là máy chủ nơi xử lý các yêu cầu/phản hồi. Nó thường còn được gọi là lớp máy chủ. Tất cả các hoạt động logic cũng diễn ra ở đây: tính toán toán học, hoạt động dữ liệu, gọi đến các dịch vụ khác hoặc lưu trữ dữ liệu.

  3. Lớp dữ liệu là máy chủ cơ sở dữ liệu: máy chủ của chúng tôi truy cập nó. Lớp này lưu trữ tất cả các thông tin cần thiết mà ứng dụng sử dụng trong quá trình hoạt động.

Do đó, máy chủ của chúng tôi đảm nhận mọi nghĩa vụ truy cập dữ liệu mà không cho phép người dùng truy cập trực tiếp.

Lợi ích của kiến ​​trúc ba tầng

Sử dụng kiến ​​trúc như vậy, chúng tôi nhận được nhiều lợi ích, bao gồm:
  1. Khả năng xây dựng biện pháp bảo vệ chống lại việc tiêm SQL là một cuộc tấn công vào máy chủ trong đó mã SQL được truyền đi và khi mã này được thực thi, kẻ tấn công có thể ảnh hưởng đến cơ sở dữ liệu của chúng tôi.

  2. Phân định dữ liệu mà chúng tôi muốn quản lý quyền truy cập của người dùng.

  3. Khả năng sửa đổi dữ liệu trước khi gửi cho khách hàng.

  4. Khả năng mở rộng - khả năng mở rộng ứng dụng của chúng tôi lên một số máy chủ sẽ sử dụng cùng một cơ sở dữ liệu.

  5. Ít yêu cầu hơn về chất lượng kết nối của người dùng. Khi tạo phản hồi trên máy chủ, chúng ta thường lấy rất nhiều thông tin khác nhau từ cơ sở dữ liệu, định dạng nó, chỉ để lại những gì người dùng cần. Bằng cách này, chúng tôi giảm lượng thông tin mà chúng tôi gửi dưới dạng phản hồi cho khách hàng.

Bạn nên sử dụng các mẫu kiến ​​trúc thường xuyên như thế nào?

Ví dụ: nếu bạn đã quen thuộc với mẫu thiết kế Factory Method , bạn có thể tự hỏi khi nào nên sử dụng nó. Đôi khi rất khó để quyết định phải làm gì: tạo một đối tượng bằng toán tử mới hoặc sử dụng phương thức xuất xưởng. Nhưng theo thời gian, sự hiểu biết sẽ đến. Với các mẫu kiến ​​trúc, mọi thứ có một chút khác biệt. Các khung công tác doanh nghiệp được thiết kế để người lập trình sử dụng chúng để tạo một dự án dựa trên một số mẫu được chấp nhận rộng rãi. Vì vậy, trước khi tìm hiểu Spring Framework, bạn nhất định cần phải hiểu kiến ​​trúc client-server, kiến ​​trúc three-tier và kiến ​​trúc MVC là gì. Đừng lo lắng: chúng ta sẽ nói về kiến ​​trúc MVC sau. Phần 1. Những điều bạn cần biết trước khi học Spring và JavaEE Phần 3. Giao thức HTTP/HTTPS Phần 4. Kiến thức cơ bản về Maven Phần 5. Servlets. Viết một ứng dụng web đơn giản Phần 6. Thùng chứa Servlet Phần 7. Giới thiệu mẫu MVC (Model-View-Controller) Phần 8. Viết một ứng dụng spring-boot nhỏ
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION