Volné spojení - Loose coupling

V oblasti výpočetní techniky a systémů je volně spojený systém jeden

  1. ve kterých jsou součásti slabě spojeny (mají rozbitný vztah) mezi sebou, a tak změny v jedné složce nejméně ovlivňují existenci nebo výkon jiné součásti.
  2. ve kterém každá z jejích složek má, nebo využívá, malou nebo žádnou znalost definic jiných samostatných komponent. Podoblasti zahrnují propojení tříd, rozhraní, dat a služeb. Volná spojka je opakem těsné spojky.

Výhody a nevýhody

Komponenty ve volně propojeném systému lze nahradit alternativními implementacemi, které poskytují stejné služby. Komponenty ve volně propojeném systému jsou méně omezeny na stejnou platformu, jazyk , operační systém nebo prostředí sestavení.

Pokud jsou systémy odpojeny v čase, je obtížné také zajistit integritu transakcí ; jsou vyžadovány další koordinační protokoly. Replikace dat napříč různými systémy poskytuje volné propojení (v dostupnosti), ale vytváří problémy při zachování konzistence ( synchronizace dat ).

V integraci

Volného propojení v širším distribuovaném návrhu systému je dosaženo použitím transakcí, front poskytovaných middleware orientovaným na zprávy a standardů interoperability.

Čtyři typy autonomie, které podporují volné propojení, jsou: referenční autonomie , časová autonomie , formátová autonomie a autonomie platformy .

Volná vazba je architektonickým principem a cílem návrhu v architekturách orientovaných na služby ; jedenáct forem volné spojky a jejich protějšky těsných spojek jsou uvedeny v:

  • fyzická připojení prostřednictvím zprostředkovatele,
  • asynchronní komunikační styl,
  • jednoduché běžné typy pouze v datovém modelu ,
  • systém slabého typu,
  • datově zaměřené a samostatné zprávy,
  • distribuované řízení procesní logiky,
  • dynamická vazba (spotřebitelů a poskytovatelů služeb),
  • nezávislost na platformě,
  • kompenzace na úrovni obchodu, nikoli transakce na úrovni systému,
  • nasazení v různých časech,
  • implicitní upgrady ve verzích.

Middleware Enterprise Service Bus (ESB) byl vynalezen za účelem dosažení volného propojení ve více dimenzích; overengineered a mispositioned ESBs mohou mít také opačný účinek a vytvářet nežádoucí těsné spojení a centrální architektonický hotspot.

Architektura řízená událostmi se také zaměřuje na podporu volného spojování.

Metody pro snížení vazby

Volné propojení rozhraní lze vylepšit publikováním dat ve standardním formátu (například XML nebo JSON ).

Volné propojení mezi komponentami programu lze zlepšit použitím standardních datových typů v parametrech. Předávání přizpůsobených datových typů nebo objektů vyžaduje, aby obě komponenty znaly definici vlastních dat.

Volné propojení služeb lze zlepšit snížením informací předávaných do služby na klíčová data. Například služba, která odesílá dopis, je nejvíce opakovaně použitelná, když je předán pouze identifikátor zákazníka a v rámci služby je získána adresa zákazníka. Tím se oddělí služby, protože služby není nutné volat v konkrétním pořadí (např. GetCustomerAddress, SendLetter).

V programování

Spojení se týká míry přímých znalostí, které má jedna složka druhé. Volná vazba ve výpočetní technice je interpretována jako zapouzdření vs. nezapouzdření.

K příkladu těsného spojení dochází, když závislá třída obsahuje ukazatel přímo na konkrétní třídu, která poskytuje požadované chování. Závislost nelze nahradit ani změnit její „podpis“ bez nutnosti změny závislé třídy. Volná vazba nastane, když závislá třída obsahuje ukazatel pouze na rozhraní, které pak může být implementováno jednou nebo mnoha konkrétními třídami. Závislost závislé třídy je na „smlouvě“ určené rozhraním; definovaný seznam metod a/nebo vlastností, které musí implementovat třídy. Jakákoli třída, která implementuje rozhraní, tak může uspokojit závislost závislé třídy, aniž byste museli třídu měnit. To umožňuje rozšiřitelnost v návrhu softwaru; lze napsat novou třídu implementující rozhraní, která nahradí aktuální závislost v některých nebo všech situacích, aniž by bylo nutné změnit závislou třídu; nové a staré třídy lze volně zaměňovat. Silná vazba to neumožňuje.

Toto je diagram UML ilustrující příklad volné vazby mezi závislou třídou a sadou konkrétních tříd, které poskytují požadované chování:

Volné spojení Příklad.JPG

Pro srovnání tento diagram ilustruje alternativní návrh se silnou vazbou mezi závislou třídou a poskytovatelem:

Příklad silné vazby.JPG

Jiné formy

Počítačové programovací jazyky, které mají pojmy buď funkcí jako základní modul (viz Funkční programování ), nebo funkcí jako objekty, poskytují vynikající příklady volně spojeného programování. Funkční jazyky mají vzory pokračování , uzavření nebo generátorů. Viz Clojure a Lisp jako příklady funkčních programovacích jazyků. Objektově orientované jazyky jako Smalltalk a Ruby mají bloky kódu, zatímco Eiffel má agenty. Základní myšlenkou je objektivizovat (zapouzdřit jako objekt) funkci nezávislou na jakémkoli jiném uzavíracím konceptu (např. Oddělení objektové funkce od jakékoli přímé znalosti obklopujícího objektu). Viz Prvotřídní funkce pro další pohled na funkce jako objekty, které se kvalifikují jako jedna forma prvotřídní funkce.

Například v objektově orientovaném jazyce, když je funkce objektu odkazována jako objekt (zbavuje ho jakékoli znalosti jeho obklopujícího hostitelského objektu), nový objekt funkce lze předat, uložit a volat na Později. Objekty příjemce (kterým jsou tyto funkční objekty dány) mohou bezpečně spouštět (volat) obsažené funkce podle vlastního pohodlí bez jakékoli přímé znalosti obklopujícího hostitelského objektu. Tímto způsobem může program spouštět řetězce nebo skupiny funkčních objektů, přičemž je bezpečně oddělen od jakéhokoli přímého odkazu na obklopující hostitelský objekt.

Telefonní čísla jsou vynikajícím analogem a mohou snadno ilustrovat míru tohoto oddělení.

Například: Některý subjekt poskytne jinému telefonní číslo, na které lze zavolat, aby mohl dokončit konkrétní práci. Když je číslo vytočeno, volající entita ve skutečnosti říká: „Udělejte prosím tuto práci za mě“. Rozpojení nebo uvolněné spojení je zřejmé okamžitě. Subjekt přijímající číslo k volání nemusí mít informace o tom, odkud číslo pochází (např. Odkaz na dodavatele čísla). Na druhé straně je volající oddělen od konkrétních znalostí o tom, komu volají, kde jsou, a od znalosti toho, jak přijímač volání interně funguje.

V příkladu o krok dále může volající říci příjemci hovoru: „Udělejte prosím tuto práci za mě. Zavolejte mi zpět na toto číslo, až budete hotovi.“ „Číslo“ nabízené příjemci se označuje jako „zpětné volání“. Opět je zřejmá volná vazba nebo oddělená povaha tohoto funkčního objektu. Přijímač zpětného volání neví, co nebo kdo je volán. Ví pouze, že může uskutečnit hovor, a sám se rozhodne, kdy zavolá. Ve skutečnosti nemusí být zpětné volání vůbec tomu, kdo toto zpětné volání poskytl. Tato úroveň indirection je to, co dělá z funkčních objektů vynikající technologii pro dosažení volně spojených programů.

Spojení měřicích datových prvků

Stupeň volné vazby lze měřit zaznamenáváním počtu změn v datových prvcích, které by mohly nastat ve vysílacích nebo přijímacích systémech, a určením, zda počítače budou nadále správně komunikovat. Tyto změny zahrnují položky jako:

  1. Přidávání nových datových prvků do zpráv
  2. Změna pořadí datových prvků
  3. Změna názvů datových prvků
  4. Změna struktur datových prvků
  5. Vynechání datových prvků

Viz také

Reference