Jak mówi @amdluigi: „Zazwyczaj nazwa zestawu jest taka sama, jak przestrzeń nazw, którą zawiera, ale nie zawsze”.
Powyżej znajduje się zrzut ekranu pliku System.Data.dll w przeglądarce obiektów w Studio. To doskonały przykład, aby zbadać te kwestie. Należy zauważyć, że większość przestrzeni nazw zawartych w zestawie to System.Data lub podprzestrzeń nazw System.Data.
Ogólnie rzecz biorąc, dobrą praktyką jest powiązanie nazw zestawów z przestrzeniami nazw w nich zawartymi. Zauważ, że gdy Studio po raz pierwszy tworzy projekt w celu skompilowania zespołu, jedna z właściwości projektu jest domyślną przestrzenią nazw. Na początku Studio nadaje domyślnej przestrzeni nazw taką samą nazwę, jak sam projekt. Jeśli kiedykolwiek zdecydujesz się zmienić nazwę projektu, rozważ również zmianę jego domyślnej przestrzeni nazw.
Istnieją dwie dodatkowe przestrzenie nazw: Microsoft.SqlServer jest zrozumiały. Niektóre typy SQL Server, których nie chcieli pakować w osobnym zestawie.
Ale o co chodzi z System.Xml ???? Istnieje zestaw System.Xml.dll. Dlaczego ta przestrzeń nazw jest również wyświetlana w pliku System.Data.dll?
Zauważ, że zestaw może ponownie otworzyć przestrzeń nazw i dodać do niej więcej - dokładnie to robi System.Data.dll z przestrzenią nazw System.Xml.
Powodem jest to, że przestrzenie nazw mają zerowy wpływ na wydajność, ale zestawy bardzo dużo. Jeśli masz 1000 klas ze znaczną ilością kodu, nie chcesz jednego zestawu z bardzo dużym zużyciem pamięci. Nie chcesz też mieć 1000 zespołów z jedną klasą. Każdy zestaw musi zostać załadowany do pamięci, zanim jego zawartość będzie mogła zostać wykonana. Chcesz, aby zestaw zawierał rozsądną liczbę wzajemnie powiązanych klas, więc gdy aplikacja załaduje zestaw w celu uzyskania jednej z jego klas, pobierze inne klasy, których aplikacja prawdopodobnie będzie potrzebować za darmo. Ziarnistość jest ważna: nie za duża, nie za mała, w sam raz.
Zwróć uwagę, że System.Data.dll ponownie otwiera System.Xml i dodaje dokładnie jedną klasę: XmlDataDocument. Zdarza się, że ta klasa służy do interpretacji danych relacyjnych jako dokumentu XML. Jeśli twoja aplikacja używa tylko XML, nie będzie potrzebować tej klasy. Jeśli Twoja aplikacja zajmuje się danymi relacyjnymi, może tak. Więc chociaż XmlDataDocument dziedziczy po XmlDocument i znajduje się w przestrzeni nazw System.Xml, jest spakowany w zestawie System.Data.dll.
Wszystko to jest szczególnie ważne, jeśli masz doświadczenie w Javie, gdzie istnieje tylko jedna koncepcja, pakiet. W .NET są dwa, zestaw i przestrzeń nazw. Te dwa są ortogonalne. Zestaw może oczywiście zawierać więcej niż jedną przestrzeń nazw. Zestaw może ponownie otworzyć przestrzeń nazw i dodać do niej więcej - innymi słowy, typy w przestrzeni nazw mogą obejmować więcej niż jeden zestaw.