Zauważyłem, że jeden z argumentów przeciwko używaniu CSL jest fałszywy, ponieważ deweloperzy uważają, że ta biblioteka jest w stanie wykonać tylko wzór Service Locator. Tak jednak nie jest, ponieważ jest również łatwy w użyciu ze wzorem Dependency Injection.
Jednak biblioteka CSL została specjalnie zaprojektowana dla projektantów frameworków, którzy muszą zezwalać użytkownikom na rejestrowanie zależności. Ponieważ biblioteka będzie wywoływała CSL bezpośrednio, z perspektywy ramowej mówimy o wzorze SL, stąd jego nazwa.
Jednak jako projektant frameworków uzależnienie od CSL nie powinno być lekceważące. Dla użyteczności twojej struktury zwykle lepiej jest mieć swój własny mechanizm DI. Bardzo powszechnym mechanizmem jest konfigurowanie zależności w pliku konfiguracyjnym. Ten wzorzec jest używany w całej strukturze .NET. Niemal każda zależność może być zastąpiona inną. Wzorzec dostawcy .NET jest zbudowany na tym.
Kiedy, jako projektant frameworków, będziesz zależny od CSL, użytkownicy będą trudniej z niego korzystać. Użytkownicy będą musieli skonfigurować kontener IoC i podłączyć go do CSL. Jednak nie jest możliwe, aby framework sprawdzał konfigurację, co można zrobić podczas korzystania z systemu konfiguracyjnego .NET, który obsługuje wszystkie rodzaje sprawdzania poprawności.
Szukasz scenariuszy użycia dla Common Service Locator specjalnie lub bardziej ogólnie dla wzorca lokalizatora usług? Terminy niekoniecznie są zamienne ... – MattDavey