Loose coupling là gì? Kiến thức chi tiết về Loose coupling
Các xu hướng lập trình hiện đại gần đây như API, microservices, container được thiết kế để tái sử dụng và thay thế mà không ảnh hưởng quá nhiều đến các kết nối hiện có được gọi là Loose coupling. Vậy khớp nối Loose là gì? Ý nghĩa thực sự của Khớp nối lỏng là gì? Những câu hỏi này sẽ được thuthuatkiemtien.com giải đáp trong bài viết dưới đây!
Tìm hiểu về Khớp nối lỏng
Khớp nối là gì?
Coupling được hiểu là cách thức kết nối các dịch vụ phần mềm. Các kết nối giữa các dịch vụ trong phần mềm có thể được kết nối với nhau theo cách ít phụ thuộc hoặc chặt chẽ; chúng thậm chí không cần phải được kết nối với nhau. Mỗi phương pháp kết nối này đều có những ưu nhược điểm riêng và phù hợp với những mục đích sử dụng khác nhau.
Bài viết sẽ chỉ đề cập đến Khớp nối lỏng lẻo - kết nối ít phụ thuộc hơn và Khớp nối chặt chẽ - kết nối chặt chẽ.
Khớp nối lỏng là gì?
Khớp nối lỏng lẻo Cũng được biết đến như là khớp nối thấp. Đây là một mẫu thiết kế khuyến khích bạn triển khai nhiều dịch vụ với các vai trò riêng biệt và giới hạn mức độ phụ thuộc lẫn nhau trong một chương trình.
Để bạn đọc phổ thông cũng có thể hiểu được mô hình này, thuthuatkiemtien.com sẽ lấy một ví dụ đơn giản từ thực tế mà bạn gặp phải hàng ngày!
Ví dụ, mặc quần áo của bạn. Trong tủ quần áo (nhất là đối với các bạn nữ) sẽ có những bộ quần áo đi làm, đi chơi, đi ngủ, thậm chí là mặc sáng, chiều,… Trang phục là vật ngoài thân. , không liên quan gì đến cơ thể hoặc làn da của bạn.
Vì vậy bạn có thể thay quần áo tùy thích. Thay quần áo sang màu trắng hoặc đen sẽ không ảnh hưởng đến làn da và cơ thể của bạn.
Liên kết đến thiết kế của phần mềm, cụ thể là microservices, bạn sẽ thấy những điểm tương đồng giữa chúng. Các dịch vụ trong microservice sẽ không phụ thuộc vào nhau quá nhiều. Nếu bạn muốn thay đổi một dịch vụ nội bộ, bạn có thể chỉ cần ngắt kết nối và thực hiện thay đổi.
Áo sẽ làm nhiệm vụ của áo, quần sẽ làm nhiệm vụ của quần, mỗi dịch vụ sẽ có một chức năng riêng. Khi thay chỉ cần tháo ra và thay thế, không ảnh hưởng đến các dịch vụ khác.
Khớp nối chặt là gì?
Ngược lại với khớp nối lỏng lẻo, Khớp nối chặt chẽ tốt đẹp khớp nối cao là một nhóm các dịch vụ / lớp được ràng buộc, phụ thuộc vào các dịch vụ / lớp khác trong chương trình.
Chưa kể đến sự tiến bộ của y học, yếu tố môi trường và mỹ phẩm ví dụ như da người hay một bộ phận nào đó trên cơ thể con người đều có mối liên hệ chặt chẽ với nhau và không dễ thay đổi chúng.
Còn nếu bạn muốn thay đổi làn da của mình từ trắng thành đen? Bạn sẽ phải lột da và khoác lên mình một làn da mới? Ồ! Chỉ nghĩ đến điều đó thôi cũng khiến tôi cảm thấy thật kinh khủng!
Tương tự như sự kết nối của da với cơ và của cơ với xương, khớp nối chặt là một mô hình phần mềm cổ điển được phát triển với khớp nối chặt chẽ. Nếu bạn muốn thay đổi, bạn sẽ cần phải thực hiện cấu trúc lại hoàn toàn phần mềm. Việc này vừa tiêu tốn nguồn tài nguyên khổng lồ, vừa gây đau nhức, ê ẩm và không chắc da mới có thực sự phù hợp với cơ thể bạn hay không.
Kiến thức chi tiết về Khớp nối lỏng
Tại sao nên bắt đầu với Khớp nối lỏng?
Tương thích với xu hướng phát triển
Nếu bạn thường xuyên theo dõi sự phát triển của công nghệ và quan tâm đến các khái niệm cực kỳ phổ biến như: RESTful API, microservices hoặc container, thì tất cả các khái niệm / xu hướng này đều tuân theo mô hình khớp nối lỏng lẻo.
RESTful API là một công nghệ cần có khả năng mở rộng, tùy trường hợp sử dụng, có thể mở rộng và sử dụng nhiều tài nguyên. Bỏ qua phần sâu bên trong, mô hình khớp nối Loose là mô hình hoàn hảo nhất cho các API RESTful.
Với các khớp nối ít phụ thuộc vào nhau, bạn sẽ có thể dễ dàng mở rộng, cải thiện các chức năng và tăng hiệu suất tổng thể mà không ảnh hưởng đến các dịch vụ khác trong phần mềm.
Tiết kiệm tài nguyên đáng kể
Giả sử bạn là nhà cung cấp dịch vụ vận chuyển. Bạn đã thuê lập trình viên viết một phần mềm có thể giúp người dùng đặt hàng và tính toán cho đơn vị đối tác A, sau đó phát triển phần mềm, giao diện riêng cho đối tác B, C, D, E, F… Điều này sẽ tiêu tốn rất nhiều tài nguyên!
Tuy nhiên, bạn có thể thuê lập trình viên phát triển API và cung cấp API cho các đơn vị đối tác để họ “nhúng” vào trang web, hệ thống của mình và giúp khách hàng xem giá. Đơn đặt hàng là bao nhiêu, hoặc ước tính thời gian sẽ đến nơi, v.v. Điều này sẽ giúp bạn tiết kiệm nguồn lực và tập trung vào việc xây dựng dịch vụ.
Bạn có thể tham khảo API của các ví điện tử và nhà mạng lớn trong nước để hiểu rõ hơn nhé!
Hạn chế ảnh hưởng, xâm lấn tài nguyên
Một trong những ưu điểm lớn nhất của mô hình Khớp nối lỏng là nó hạn chế sự phụ thuộc giữa các dịch vụ và các lớp trong một ứng dụng.
Khi bạn muốn thêm một dịch vụ, bạn chỉ cần tạo các liên kết giữa dịch vụ mới và dịch vụ cũ.
Trong trường hợp một dịch vụ nào đó bị tấn công hoặc gặp sự cố, việc gỡ lỗi sẽ trở nên dễ dàng hơn. Lý do là vì với chỉ báo lỗi rõ ràng hơn, bạn sẽ nhanh chóng tìm ra dịch vụ / lớp phù hợp => cô lập và sửa chữa chúng. Nếu dịch vụ bị lỗi do hacker tấn công thì hacker cũng rất khó tấn công các module dịch vụ khác vì chúng độc lập và ít kết nối với nhau.
Ngoài ra, các dịch vụ / lớp có thể hoạt động độc lập với nhau, không tranh giành tài nguyên của nhau trong quá trình hoạt động.
Tuy nhiên, điểm này cũng sẽ gây khó khăn cho việc phát triển phần mềm của bạn, chẳng hạn như:
- Phải phát triển từng mô-đun dịch vụ riêng biệt
- Nếu là một chương trình nhỏ triển khai theo mô hình microservice thì sẽ tiêu tốn rất nhiều tài nguyên.
- Mỗi dịch vụ sẽ cần thiết kế hệ thống bảo mật riêng.
Cách triển khai Khớp nối lỏng lẻo
Tại trang C # Corner có một ví dụ rất hay và thực tế, thuthuatkiemtien.com sẽ copy làm ví dụ để các bạn hiểu cách triển khai Loose coupling!
Đầu tiên, chúng tôi sẽ phát triển một khớp nối chặt chẽ cho điều khiển từ xa C # như sau:
namespace
TightCoupling
public class Remote
private Television Tv get; set;
protected Remote()
Tv = new Television();
static Remote()
_remoteController = new Remote();
static Remote _remoteController;
public static Remote Control
get
return _remoteController;
public void RunTv()
Tv.Start();
Trong số đó, chúng tôi thấy lợi ích rõ ràng nhất là mô hình này đơn giản, ít mã và dễ thực hiện. Tuy nhiên, nếu nhà sản xuất muốn tích hợp chiếc remote này không chỉ cho tivi mà còn dùng để điều khiển nhiều thứ khác thì sao?
Lúc này, Khớp nối lỏng lẻo sẽ là hình mẫu để phát huy sức mạnh. Bạn có thể tạo mã cho bộ điều khiển như sau:
public interface IRemote
void Run();
public class Television : IRemote
protected Television()
static Television()
_television = new Television();
private static Television _television;
public static Television Instance
get
return _television;
public void Run()
Console.WriteLine("Television is started!");
public class Remote
IRemote _remote;
public Remote(IRemote remote)
_remote = remote;
public void Run()
_remote.Run();
Khi bạn muốn điều khiển TV, bạn chỉ cần phát triển một mô-đun riêng để điều khiển TV như sau:
class Program
static void Main(string[] args)
Remote remote = new Remote(Television.Instance);
remote.Run();
Console.Read();
Khi xem ví dụ, bạn sẽ thấy rằng mô hình khớp nối lỏng lẻo phức tạp hơn nhiều so với khớp nối chặt. Tuy nhiên, khi bạn muốn, bạn có thể đưa chức năng của điều khiển từ xa lên cấp độ tiếp theo.
Bạn chỉ cần phát triển các mô-đun cơ sở và không cần thiết kế lại bộ điều khiển của mình. Điều này sẽ giúp bạn không phải thiết kế nhiều điều khiển từ xa khác nhau, bạn có thể sử dụng điều khiển từ xa của tivi để bật điều hòa, làm chìa khóa ô tô hay bất cứ chức năng nào bạn muốn.
Đến đây, thuthuatkiemtien.com mong rằng các bạn đã hiểu rõ hơn về mô hình Khớp nối lỏng. Trên thực tế, để triển khai mô hình này bạn tiêu tốn tài nguyên hơn rất nhiều. Tuy nhiên, Khớp nối lỏng vẫn là một mô hình rất đáng quan tâm. Nếu có sai sót trong bài viết, mong các bạn liên hệ ngay với thuthuatkiemtien.com để chúng tôi điều chỉnh thông tin sao cho phù hợp nhất hoặc các bạn có những ví dụ hay hơn, thuthuatkiemtien.com sẵn sàng tiếp thu ý kiến đóng góp. từ bạn!
Bài viết có sự tham khảo từ nhiều nguồn: Nordic APIs, stackoverflow, viblo, topdev,…
Câu hỏi thường gặp về Khớp nối lỏng lẻo
Tôi nên sử dụng Khớp nối lỏng hay Khớp nối chặt?
Tùy thuộc vào dịch vụ hoặc phần mềm bạn muốn phát triển, bạn có thể chọn giữa Khớp nối lỏng hoặc Khớp nối chặt.
Một khớp nối lỏng bền vững cần chú ý đến những yếu tố nào?
Để một mô hình Loose coupling có thể phát triển lâu dài, bạn sẽ cần chú ý đến: lưu trữ, phát triển, kết nối và tính toán rất nhiều thứ khác. Bạn có thể tìm hiểu thêm tại tài liệu AWS.
“Người mới” có nên tìm hiểu về Khớp nối lỏng hay không?
Vâng, nếu bạn muốn phát triển trong tương lai, Khớp nối lỏng là một mô hình tuyệt vời để noi theo. Tuy nhiên, tốt hơn hết là bạn nên bắt đầu triển khai ứng dụng của mình bằng Khớp nối chặt vì Khớp nối chặt chẽ đơn giản hơn.
Mô hình nào một phần mềm đơn giản nên sử dụng?
Có lẽ bạn đã có câu trả lời cho câu hỏi của tôi, Khớp nối chặt chẽ sẽ phù hợp với các phần mềm và chương trình đơn giản. Trong khi đó, khớp nối Loose sẽ phù hợp với các chương trình phức tạp với nhiều chức năng.
CÔNG TY CỔ PHẦN TẬP ĐOÀN TINO
- Trụ sở chính: L17-11, Lầu 17, Tòa nhà Vincom Center, Số 72 Lê Thánh Tôn, P. Bến Nghé, Q.1, TP.
VPĐD: 42 Trần Phú, P.4, Q.5, TP.HCM - Điện thoại: 0364 333 333
Tổng đài miễn cước: 1800 6734 - Email: sales@tino.org
- Trang web: www.tino.org
Nguồn: Loose coupling là gì? Kiến thức chi tiết về Loose couplingXem thêm nhiều bài viết về : Kiến Thức Cơ Bản
Nhận xét
Đăng nhận xét