fbpx
close

Loose coupling là gì? Kiến thức chi tiết về Loose coupling

Tác giả: TinoHost Ngày cập nhật: 10/10/2021 Chuyên mục: Webmasters
Disclosure
Website Wiki.tino.org được cung cấp bởi Tino Group. Truy cập và sử dụng website đồng nghĩa với việc bạn đồng ý với các điều khoản và điều kiện trong chính sách bảo mật - điều khoản sử dụng nội dung. Wiki.tino.org có thể thay đổi điều khoản sử dụng bất cứ lúc nào. Việc bạn tiếp tục sử dụng Wiki.tino.org sau khi thay đổi có nghĩa là bạn chấp nhận những thay đổi đó.
Why Trust Us
Các bài viết với hàm lượng tri thức cao tại wiki.tino.org được tạo ra bởi các chuyên viên Marketing vững chuyên môn và được kiểm duyệt nghiêm túc theo chính sách biên tập bởi đội ngũ biên tập viên dày dặn kinh nghiệm. Mọi nỗ lực của chúng tôi đều hướng đến mong muốn mang đến cho cộng đồng nguồn thông tin chất lượng, chính xác, khách quan, đồng thời tuân thủ các tiêu chuẩn cao nhất trong báo cáo và xuất bản.

Những xu hướng lập trình hiện đại gần đây như API, microservices, containers được thiết kế để có thể tái sử dụng thay thế mà không gây ảnh hưởng quá nhiều đến những kết nối hiện có đều được gọi là Loose coupling. Vậy Loose coupling là gì? Ý nghĩa thật sự của Loose coupling ra sao? Những thắc mắc này sẽ được Tino Group giải đáp trong bài viết dưới đây nhé!

Tìm hiểu về Loose coupling

Coupling là gì?

Coupling được hiểu là cách kết nối giữa 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ể kết nối với nhau một cách ít phụ thuộc hoặc một cách chặt chẽ; thậm chí chúng còn không cần kết nối với nhau. Mỗi phương pháp kết nối này đều có ưu điểm và nhược điểm riêng và phù hợp với từng mục đích sử dụng khác nhau.

Bài viết sẽ chỉ đề cập đến Loose couplingkết nối ít phụ thuộcTight couplingkết nối chặt chẽ.

loose-coupling-la-gi

Loose coupling là gì?

Loose coupling còn được biết đến với cái tên khác là low coupling. Đây là một mô hình thiết kế khuyến khích bạn nên thực hiện nhiều dịch vụ với những vai trò riêng biệt và hạn chế mức độ phụ thuộc vào nhau trong một chương trình.

Để cả những người đọc phổ thông có thể hiểu về mô hình này, Tino Group sẽ lấy ví dụ đơn giản từ thực tiễn bạn gặp hằng ngày nhé!

Ví dụ như việc mặc trang phục của bạn. Trong tủ quần áo (đặc biệt là của các bạn nữ), sẽ có những bộ trang phục để đi làm, đi chơi, đi ngủ, thậm chí là mặc buổi sáng, buổi chiều,… Những bộ trang phục là những thứ ngoài thân, không có liên kết gì với cơ thể hay làn da của bạn.

Vì thế, bạn có thể thay đổi quần áo tùy thích. Việc bạn thay đổi quần áo thành trắng hay đen sẽ không ảnh hưởng gì đến làn da, cơ thể của bạn.

Liên kết đến việc thiết kế phần mềm, cụ thể là microservice, bạn sẽ thấy đ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ụ bên trong, bạn 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 một dịch vụ sẽ có một chức năng cụ thể. Khi thay đổi, bạn chỉ cần cởi bỏ và thay mới, không gây ảnh hưởng gì đến các dịch vụ khác.

loose-coupling-la-gi

Tight coupling là gì?

Ngược lại với Loose coupling, Tight coupling hay high coupling là một nhóm các dịch vụ/ lớp có sự ràng buộc, phụ thuộc vào những dịch vụ/ lớp khác trong chương trình.

Không đề cập đến sự tiến bộ của y học, các yếu tố môi trường và các sản phẩm mỹ phẩm trong ví dụ này, da người hay một bộ phận nào đó trên cơ thể con người đều được liên kết chặt chẽ với nhau và không dễ dàng để thay đổi chúng.

Nếu bạn muốn thay đổi làn da của mình từ trắng sang đen thì sao? Bạn sẽ phải lột bỏ da và gắn một bộ da mới lên cơ thể của mình? Ôi! Chỉ nghĩ đến thôi cũng thấy thật sự khủng khiếp!

loose-coupling-la-gi

Tương tự với sự liên kết của da với cơ, của cơ với xương, tight coupling là một mô hình phần mềm cổ điển được phát triển với sự liên kết chặt chẽ với nhau. Nếu bạn muốn thay đổi, bạn sẽ cần phải thực hiện tái cấu trúc toàn bộ phần mềm. Điều này vừa gây hao tổn một lượng tài nguyên khổng lồ, vừa gây đau nhức, ê ẩm và chưa chắc làn da mới của bạn thực sự ổn đối với cơ thể của bạn.

Kiến thức chi tiết về Loose coupling

Vì sao nên bắt đầu với Loose coupling?

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 vô cùng phổ biến như: RESTful API, microservices hay containers, tất cả những khái niệm/ xu hướng này đều đi theo mô hình Loose coupling.

RESTful API là một công nghệ cần phải có thể mở rộng, biến đổi tùy theo trường hợp sử dụng, có thể phân chia tỷ lệ và sử dụng nhiều nguồn tài nguyên. Bỏ qua những yếu tố chuyên sâu bên trong, mô hình Loose coupling là mô hình hoàn hảo nhất dành cho RESTful API.

Với các coupling í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à gia tăng tổng thể mà không gây ảnh hưởng đến các dịch vụ khác trong phần mềm.

loose-coupling-la-gi

Tiết kiệm đáng kể nguồn tài nguyên

Giả sử, bạn là một nhà cung cấp dịch vụ vận chuyển. Bạn đã thuê các lập trình viên để viết một phần mềm có thể giúp người dùng đặt đơn 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 lẻ cho đối tác B, C, D, E, F… Điều này sẽ gây hao tổn tài nguyên rất nhiều!

Tuy nhiên, bạn có thể thuê các lập trình viên để phát triển các API và cung cấp API cho các đơn vị đối tác để họ “nhúng” vào website, hệ thống của họ và giúp khách hàng của họ có thể nhìn thấy được giá 1 đơn hàng là bao nhiêu, hay ước tính bao nhiêu thời gian sẽ gửi đến,… Điều này sẽ giúp bạn tiết kiệm tài nguyên và tập trung vào xây dựng dịch vụ.

Bạn có thể tham khảo các API của các đơn vị vận chuyển, ví điện tử lớn trong nước để hiểu hơn nhé!

loose-coupling-la-gi

Hạn chế sự ảnh hưởng, lấn chiếm tài nguyên

Một trong những ưu điểm lớn nhất của mô hình Loose coupling đó chính là sự hạn chế phụ thuộc giữa các dịch vụ, các lớp trong một ứng dụng với nhau.

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ới dịch vụ cũ.

Trong trường hợp một dịch vụ nào đó bị tấn công hay bị lỗi, việc debug tìm lỗi sẽ trở nên dễ hơn. Lý do là vì nhờ dấu hiệu lỗi rõ ràng hơn, bạn sẽ nhanh chóng tìm đúng dịch vụ/ lớp đó => cách ly và sửa chữa chúng. Nếu dịch vụ bị lỗi do hacker tấn công, hacker cũng rất khó để có thể tấn công các module dịch vụ khác vì chúng độc lập và có ít liên kết với nhau.

Ngoài ra, các dịch vụ/ các lớp có thể hoạt động độc lập với nhau, không tranh giành những nguồn tài nguyên của nhau trong lúc hoạt động.

Tuy nhiên, điểm này cũng sẽ khiến việc phát triển phần mềm cả bạn gặp không ít khó khăn như:

  • Phải phát triển tách biệt từng module dịch vụ
  • Nếu là một chương trình nhỏ triển khai theo mô hình microservice sẽ hao tốn rất nhiều tài nguyên.
  • Mỗi dịch vụ sẽ cần phải được thiết kế hệ thống bảo mật riêng.

Cách triển khai Loose coupling

Tại trang C# Corner có một ví dụ rất hay và thực tế, Tino Group sẽ sao chép để làm ví dụ cho bạn hiểu về cách triển khai Loose coupling nhé!

Trước tiên, chúng ta sẽ phát triển một Tight coupling cho một chiếc điều khiển từ xa bằng ngôn ngữ 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 đó, chúng ta thấy rằng, lợi ích dễ thấy 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 điều khiển này không chỉ cho chiếc TV nữa mà sử dụng để điều khiển nhiều thứ khác thì sao?

Lúc này, Loose coupling sẽ là mô hình phát huy sức mạnh. Bạn có thể tạo ra đoạn mã cho chiếc đ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 muốn điều khiển TV, bạn chỉ cần phát triển riêng thêm 1 module cho việc đ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 nhìn vào ví dụ, bạn sẽ thấy mô hình Loose coupling phức tạp hơn Tight coupling rất nhiều. Tuy nhiên, khi muốn, bạn có thể mở rộng chức năng của chiếc điều khiển lên một tầm cao mới.

Bạn chỉ cần phát triển những module nền và không cần phải thiết kế lại chiếc điều khiến của bạn. Điều này sẽ giúp bạn không cần phải thiết kế nhiều chiếc điều khiển khác nhau, bạn có thể sử dụng chiếc điều khiển TV của mình để bật điều hoà, làm chìa khóa xe hay bất cứ chức năng nào bạn mong muốn.

loose-coupling-la-gi

Đến đây, Tino Group hi vọng rằng bạn đã hiểu hơn về mô hình Loose coupling. Trong thực tế, để triển khai được mô hình này bạn hao tốn nhiều tài nguyên hơn rất nhiều. Tuy nhiên, Loose coupling vẫn là một mô hình rất đáng được quan tâm. Nếu trong bài viết có những sai sót, hy vọng rằng bạn sẽ liên hệ ngay với Tino Group để chúng tôi có thể điều chỉnh lại thông tin cho phù hợp nhất hoặc bạn có những ví dụ hay hơn, Tino Group sẵn sàng nhận góp ý từ bạn!

Bài viết có tham khảo từ nhiều nguồn: Nordic APIs, stackoverflow, viblo, topdev,…

Những câu hỏi thường gặp về Loose coupling

Nên sử dụng Loose coupling hay Tight coupling?

Phụ thuộc vào dịch vụ hay phần mềm bạn muốn phát triển, bạn có thể lựa chọn Loose coupling hoặc Tight coupling.

Một Loose coupling bền vững cần chú ý đến những yếu tố nào?

Để một mô hình Loose coupling phát triển dài hạn, bạn sẽ cần phải chú ý đến việc: 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 của AWS.

“Người mới” nên học về Loose coupling hay không?

Có, nếu bạn muốn phát triển trong tương lai, Loose coupling là một mô hình rất tuyệt vời để theo đuổi. Tuy nhiên, bạn nên bắt đầu triển khai ứng dụng của mình với Tight coupling sẽ tốt hơn vì Tight coupling đơn giản hơn.

Một phần mềm đơn giản nên sử dụng mô hình nào?

Có lẽ bạn cũng đã có câu trả lời cho câu hỏi của minh, Tight coupling sẽ phù hợp cho những phần mềm, chương trình đơn giản. Trong khi đó, Loose coupling sẽ phù hợp đối với các chương trình phức tạp có nhiều chức năng.

Chia sẻ một chút thông tin về bạn. Những thông tin này có thể được công khai.

Xem thêm bài viết

Bài viết liên quan

Mục lục

Xem nhiều

giá tốt, chất lượng cao mình rất hài lòng
chất lượng dịch vụ tốt lắm...á
chất lượng dịch vụ rất tốt.
giá tốt, chất lượng cao mình rất hài lòng
Dịch vụ chăm sóc khách hàng tốt
Dùng rất oke nha mọi người
Dịch vụ chăm sóc khách hàng tốt, mình rất hài lòng về dịch vụ của TINOHOST
Đã mua rất nhiều tên miền tại Tinohost. Chất lượng tốt
dịch vụ và chăm sóc khách hàng rất tốt , mình rất thích tinohost , mình đã sử dụng nhiều dịch vụ của tinohost rồi
tuyệt vời chăm sóc khách hàng quá tốt
dịch vụ và chăm sóc khách hàng rất tốt , mình rất thích tinohost , mình đã sử dụng nhiều dịch vụ của tinohost rồi
Quá tốt - Quá xuất sắc và tuyệt
Hỗ trợ nhiệt tình. dịch vụ chất lượng
Đội ngũ support rất nhiệt tình.
Sử dụng dịch vụ của bạn Tinohost 2 3 năm nay chưa khi nào phải thất vọng.
host dùng chất lượng, miền giá rẻ
dịch vụ hỗ trợ rất nhanh, tốc độ hosting tốt
Hộ trợ tốt, nhanh. Tuyệt vời 🥰
tuyệt vời, dịch vụ cực tốt và hỗ trợ siêu nhanh
Làm việc nhanh chóng, giá thành hợp lí.
Hosting rẻ và nhanh thích hợp cho học sinh sinh viên như mình
dịch vu tốt ! Sẽ sử dụng thưởng xuyên !
Mỗi lần cần gì, nhắn Tino là được hỗ trợ ngay. Nên một đứa không biết gì về web như mình cũng tạo được blog. Cơ bản mình chỉ lo viết, mọi thứ có anh IT của Tino lo hết.
Nhìn chung thì Tino xứng đáng là một trong những nhà cung cấp host giá rẻ #1 tại VN. Bên này support khá nhanh và nhiệt tình nên quá trình sử dụng diễn ra tương đối trơn tru.
Chất lượng quá ok so với mức giá. Các SME có thể tham khảo để dựng web nhé.
uy tín chất lượng chuẩn cho 5 sao
Dịch vụ nhanh chóng thanh toán tiện lợi
Dịch vụ nhanh chóng, giá cả hợp lý
Chất lượng phục vụ ok, support khá nhanh chóng và chất lượng gói lớn tốt, gói nhỏ cần tốt hơn.
Dịch vụ tốt, giá cả hợp lý👍
Rất hay, rất tốt, rất hữu ích
Hỗ trợ rất nhanh và nhiệt tình
Chất lượng phục vụ ok, support khá nhanh chóng và chất lượng gói lớn tốt, gói nhỏ cần tốt hơn.
dịch vụ tốt, thanh toán nhanh chống
Hài lòng dịch vụ của tinohost
Sau khi sử dụng dịch vụ của TinoHost. Mình thấy website load nhanh hơn hẳn so với sử dụng ở nhà cung cấp cũ. Giá cả do mình đc mua với giá sale 99% của TinoHost nên rất là rẻ. Gói mình mua là gòi Hosting Bussiness 20GB. Thông số cấu hình cao nên web load khá mượt
Chúc TinoHost phát triển!
domain rẻ, có nhiều gói hữu ích thích hợp cho sinh viên
Hài lòng về dịch vụ và tư vấn
Dịch vụ tốt . Support nhiệt tình
Chất lượng OK
Nhanh chóng
dịch vụ rất tốt
Nhân viên support nhanh, hỗ trợ nhiệt tình, giao dịch tự động nên khá tiện
Đã dùng nhiều dịch vụ tại Tinohost, chất lượng tốt, rất hài lòng ...😀
Sự dụng rất hài lòng với các dịch vụ của tinohost
Dịch vụ tốt, uy tín chất lượng
Tino dịch vụ quá tuyệt vời
Giá rẻ, dịch vụ tốt, hỗ trợ nhanh chóng
dịch vụ rất tốt rất tuyệt vời
Giá hợp lý cho người mới dùng
Mình thấy Tinohost có giao diện thân thiện, dễ đăng ký sử dụng cho người mới tập tành làm web như mình. Hosting hỗ trợ có nhiều lựa chọn về dung lượng và giá cả! Thanh toán qua momo thuận tiện. Recommended!
wed quá ok làm việc nhanh ngọn
Dịch vụ tốt. Khá hài lòng vì support nhiệt tình
Dịch vụ quá tuyệt vời danh cho các bạn
Xin cảm ơn đội ngủ kỹ thuật. Các bạn rất chuyên nghiệp và thân thiện. Tôi sẽ giới thiệu các bạn cho bạn bè của mình.
Dịch vụ hỗ trợ tốt, ổn định, thanh toán dễ dàng.
Mình từng dùng VPS bên Vietel IDC, hay gặp lỗi vặt và bảo trì liên tục. Nhưng Tino thì rất ok
dùng tốt, nhanh, dễ sử dụng
Giao diện đẹp mắt, dễ sử dụng
Đề nghị xem lại vấn đề phục vụ khách hàng (livchat)!
Good. Tốc độ cao. Tùy chỉnh nhiều trên shared hosting.
hosting ngon, giá luôn rẻ, tôi làm code nhưng rất thích sài host tino
Tino cung cấp host rất chuyên nghiệp. Đội ngũ kỹ thuật hỗ trợ rất tận tâm và nhiệt tình. Mình sẽ tiếp tục ủng hộ Tino 🥰.
Rất tuyệt vời🙆🙆🙆🙆🙆🙆🙆🙆🙆
Xét về tầm giá thì TinoHost rất đáng để mua và sử dụng lâu dài.
Dịch vụ chất lượng, ủng hộ 1 năm nay rồi
tuyệt vời quá đi,tuyệt vời quá đi
Tốc độ ổn định, tư vấn nhiệt tình
mới tham gia, mong mọi người hỗ trợ thêm
Tốc độ khá tốt với gói rẻ nhất 9k
Giao dịch nhanh,support nhanh và tận tình,chuyển miền nhanh,Hosting Ok
mua sản phẩm dịch vụ tinhot rất tốt tặng ad 5tr ** luon nè🥰🥰🥰
tinohost
một truong những nơi bán hosting rẻ, chất lượng dành cho anh em nào cần để làm web
mua tại : tinohost.com
mình đã mua 2 tên miền + hosting của Tino Host . quả nhiên hiệu quả SEO cải thiện đáng kể và chứng chỉ bảo mật HTTPS miễn phí của Tino Host cũng ko kém phần quang trọng cho việc SEO website của mình
Tino host là một trong nhà cung cấp tốt nhất mình từng sử dụng. Với ưu đãi khuyến mại nhiều, giá thành rẻ kèm theo đó là sự support tuyệt vời của các admin. Nếu ai chưa lựa chọn được nhà cung cấp cho bản thân mình thì Tinohost sẽ là câu trả lời tốt nhất.
dịch vụ tốt, đội ngũ support nhiệt tình, cảm ơn #tinohost
Uy tín, chất lượng, nhân viên hỗ trợ nhiệt tình
mua 2 domain tại tinohost dùng rất chất lượng
Đã mua 02 domain và hosting tại TinoHost, hài lòng cách tư vấn và chăm sóc khách hàng của TinoHost :)
Giá rẻ cấu hình mạnh, black friday là sự bùng nổ của Tino
Hay web bán tài nguyên rất ngon
dịch vụ tốt, mua luôn host chất lượng cao của công ty nhân dịp blackfriday, cảm ơn #tinohost
Dịch vụ rất tốt, nhân viên tận tình.
Hỗ trợ nhiệt tình nhất trong các nhà cung cấp mih từng dùng. Không những server mạnh, ưu đãi có 1 không 2 mà còn nhiều plugin pro bản quyền đính kèm nữa. Quyết định gắn bó "Lifetime" với tino 😁
Dịch vụ tốt hỗ trợ nhanh chóng
Thích cách tư vấn tận tình và nhanh gọn của Tino mỗi khi có vấn đề trục trặc. Hosting ổn định, giá rẻ tốt lắm nhé mọi người
mình có mua 2 tên msiền của tino, mình rât thích cách tư vấn và chăm sóc khách hàng tại đây. Ngoài ra giá domain khá rẻ, phù hợp cho mọi người. 5 sao
Dịch vụ tốt, support nhiệt tình
tinohost tuyệt vời giá cả hợp lý
domain mua rất rẻ :))))
tốt, chất lượng, hostingok
Hosting tốt, giá cả cạnh tranh
Tuyệt vời , Hosting quá ổn
Chất lượng lắm ạ. Domain mua rẻ nhất thị trường
Dịch vụ tốt và chất lượng
Chất lượng lắm ạ. Domain mua rẻ nhất thị trường
Tino Host dùng quá ngon đi !💥💥💥💥💥
Tôi đã mua domain và hosting của các nhà cung cấp khác rồi, nhưng thực sự thấy không tốt bằng Tino, ngoài ra còn hỗ trợ rất tốt. Cảm ơn tino nhiều!
Next Reviews
CÔNG TY CỔ PHẦN TẬP ĐOÀN TINO
Trụ sở chính: L17-11, Tầng 17, Tòa nhà Vincom Center, Số 72 Lê Thánh Tôn,  Phường Bến Nghé, Q. 1, TP. Hồ Chí Minh

Văn phòng kinh doanh: Số 42 Trần Phú, Phường 4, Quận 5, TP HCM
GPKD số 0315679836 do Sở KH và ĐT TP Hồ Chí Minh cấp
Hotline: 0364 333 333
Góp ý/Phản ánh dịch vụ: 0933 000 886