Idea „kanoniczna” jest wszechobecna w oprogramowaniu; wzory jak Canonical Modelu , Canonical Schema , Canonical Data Model i tak dalej, wydaje się pochodzić ponownie w rozwoju.
Jak wielu programistów, często bezkrytycznie podążałem za konwencjonalną mądrością, że potrzebujesz modelu kanonicznego, w przeciwnym razie spotkasz się z kombinatoryczną eksplozją twórców map i tłumaczy. A przynajmniej ja wykorzystane do zrobienia, że aż kilka lat temu, kiedy po raz pierwszy przeczytałem nieco-niesławny EF wotum nieufności :
Hipotezy, które kiedyś wspierały dążenie do kanonicznych modeli danych, nie obejmowały i nie mogły obejmować czynników, które zostaną odkryte po wdrożeniu pomysłu. Przez lata prób i błędów stwierdziliśmy, że stosowanie osobnych modeli dla każdego kontekstu, w którym można zastosować kanoniczny model danych, jest podejściem najmniej złożonym, podejściem najmniej kosztownym, a tym samym prowadzącym do większej łatwości konserwacji i rozszerzalności aplikacji i punktów końcowych za pomocą modeli kontekstowych, a podejście to nie zachęca do entropii oprogramowania, jaką robią modele kanoniczne.
Esej nie przedstawia żadnych dowodów na poparcie swoich twierdzeń, ale zmusił mnie do kwestionowania podejścia CDM wystarczająco długo, aby wypróbować alternatywę, a powstałe oprogramowanie nie wybuchło, dosłownie ani w przenośni. Ale to nie znaczy wiele w oderwaniu; Miałem szczęście.
Zastanawiam się więc, czy przeprowadzono jakieś poważne badania nad praktycznymi, długoterminowymi skutkami posiadania modelu kanonicznego w porównaniu z modelami kontekstowymi w systemie oprogramowania lub architekturze?
Lub, jeśli jest zbyt wcześnie, aby o to pytać, to czy programiści / architekci napisali o osobistych doświadczeniach zmieniających się z CDM na niezależne modele kontekstowe lub odwrotnie, i jakie praktyczne skutki wywarły na wydajności, złożoności lub niezawodności?
A co z różnicami na różnych poziomach, tj. Używaniem tego samego modelu w jednej aplikacji w porównaniu do używania go w systemie aplikacji lub w całym przedsiębiorstwie?
(Tylko fakty, proszę; historie wojenne są mile widziane, ale bez spekulacji.)
źródło
Odpowiedzi:
W odpowiedzi na artykuł EF Vote of No Confidence Tim Mallalieu pisze:
Artykuł w Wikipedii na temat modelu kanonicznego odwołuje się do takich elementów, jak Enterprise Service Bus , architektura zorientowana na usługi i CORBA , rzeczy, o których wydaje się, że już prawie się o nich nie mówi. Wszystkie zostały uznane za rozwiązanie problemów związanych z rozprzestrzenianiem danych i komunikacją w przedsiębiorstwie, „ One Ring to Rule Them All”. TM Udało im się? A może upadli pod własnym ciężarem?
Prosiłeś o osobiste doświadczenia, więc dam ci jedno. W przemyśle lotniczym często używamy telemetrii. Jednym z wyzwań związanych z systemami telemetrycznymi jest znalezienie sposobu, aby różne zakresy testów komunikowały się między sobą w znaczący sposób. Ten problem wydaje się dość prosty, dopóki nie spróbujesz zdefiniować słownika danych z typowymi terminami.
Co oznacza „wysokość”? Czy jest to wysokość nad ziemią, czy też wysokość nad poziomem morza? Co jeśli mówisz o łodzi podwodnej? Potem jego głębokość, a nie wysokość. Dla wojska słowo „transmisja” ma inne znaczenie w odniesieniu do anteny radarowej niż do pojazdu naziemnego. Powierzchnia skrzydła, która powoduje obrót samolotu, na niektórych płaszczyznach nazywana jest „lotkami”, a na innych „wysokością”.
To tylko wskazówka na temat następnych problemów. Chociaż istnieją standardy transmisji danych, każdy zakres testowy jest inny i ma inne potrzeby, cele i priorytety. Standardy mogą się różnić nawet w przypadku różnych projektów w tym samym zakresie. Z tego powodu zakresy testowe rozumieją, że rozwiązanie nie przyjdzie, zastępując wszystko jednym, monolitycznym systemem, ale uzgadniając proste protokoły komunikacyjne i zapewniając sposoby tłumaczenia słownictwa z jednego zakresu na inny.
Problemy, przed którymi stoją duże firmy, są podobne. Microsoft zwykle myśli monolitycznie, ale to dlatego, że ich firma jest w zasadzie monolityczna. Gdy tylko będziesz musiał komunikować się między różnymi firmami o bardzo różnych kulturach i sposobach prowadzenia działalności gospodarczej (lub nawet między różnymi działami w tej samej firmie), One Ring to Rule Them All. TM natychmiast zaczyna się rozpadać.
źródło