2010-11-12 8 views
8

Zastanawiam się, jakie są różne koszty odwoływania się do złożeń w rozwiązaniu .NET. Interesują mnie zarówno koszty techniczne, jak i organizacyjne.Jakie są koszty nieużywanych referencji montażowych?

Kilka przykładów:

  • Niewykorzystana Zgromadzenie zawiera dodatkowe bajty na statku (dłuższe pobieranie, zmarnowana przestrzeń)
  • Niewykorzystana Zgromadzenie może zawierać wykorzystywaną lukę
  • Niewykorzystana Zgromadzenie może ponieść dodatkowe uruchomienie koszty
  • Niewykorzystane Zgromadzenie może ponieść dodatkowe koszty przeglądu (takie jak to pytanie)
  • Niewykorzystany zespół może zmylić nowego programistę
+0

Nawet jeśli nieużywany zespół został wysłany, nie widzę, jak może to stanowić zagrożenie bezpieczeństwa. Ponieważ nie jest używany, żaden z jego kodów nigdy nie zostanie wykonany (nawet konstruktory statyczne). – Heinzi

+0

@Heinzi: Jestem tutaj całkowicie z Marijnem. Usunięcie odnośnika, a nie rozmieszczenie zespołu, to trochę ciach, który oszczędza mnóstwo głupich pytań. –

+0

Nie powiedziałem, że nie zgadzam się z Marijnem - wręcz przeciwnie: istnieje wiele dobrych powodów, aby nie odwoływać się i nie wdrażać niepotrzebnych zgromadzeń. Po prostu nie rozumiem sensu dotyczącego bezpieczeństwa, ponieważ nie mogę wymyślić żadnego wektora ataku, który wykorzystałby lukę bezpieczeństwa w nieużywanym złożeniu. – Heinzi

Odpowiedz

11

Jeśli odwołujesz się do zespołu w projekcie, ale w rzeczywistości nie używasz żadnych typów w tym zestawie, nieużywany zespół nie będzie częścią produktu końcowego. Odniesienie zostało usunięte podczas kompilacji.

Jedyne "obciążenie" odwoływania się do nieużywanych złożeń jest podczas opracowywania, w którym odniesienie do wielu nieużywanych złożeń może wprowadzać w błąd dewelopera co do zależności projektu. Każde nowe złożenie w projekcie spowoduje również pewne obciążenie dla IntelliSense i kompilatora, ale w większości przypadków nie zauważysz.

ReSharper ma funkcję do przeanalizowania, czy zestaw referencyjny nie jest używany.

+0

Dzięki, czy masz jakieś odniesienie wskazujące na to, że zostanie to usunięte podczas kompilacji? –

+1

@RobertJeppesen: Nie jestem pewien czy czytałem Essential .NET, Volume I przez Don Box wiele lat temu, ale możesz po prostu przetestować go samodzielnie, kompilując projekt z "zbyt wieloma" referencjami i patrząc na wynikowy montaż. –

0

Jeśli nie używasz niczego z zespołu, to są one usuwane po skompilowaniu, więc koszt to nic.

1

Moim zdaniem, koszty organizacyjne dla mnie (i moich współpracowników), aby nawet myśleć o nieużywanych referencjach (dlaczego potrzebujemy tutaj XML?) To wystarczająca motywacja, aby je usunąć. W związku z tym nigdy nie brałem pod uwagę wpływu na wdrożenie lub wydajność.