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.)