2010-10-14 14 views
8

Przez większość mojej kariery programistycznej .NET byłem programistą ASP.NET/WCF, więc jestem bardzo przyzwyczajony do tego, że wszystkie biblioteki DLL znajdują się w folderze bin katalogu IIS.Czy instalujesz biblioteki DLL domeny w GAC?

Jednak w ostatnim projekcie musimy udostępnić kilka bibliotek DLL (około 50) między usługą WCF i kilkoma programami .exe, więc jeden z członków naszego zespołu zasugerował, że możemy zainstalować te biblioteki DLL w GAC.

Nie widzę niczego złego w tym pomyśle, ale po prostu mam wrażenie, że instalowanie bibliotek DLL domeny, takich jak dostęp do danych i logika biznesowa dla konkretnego produktu w GAC, jest złe, ponieważ te biblioteki DLL nie przypominają System.Data, które jest wielokrotnego użytku dla wielu różnych produktów.

Czy instalujesz biblioteki DLL produktu w GAC?

Odpowiedz

7

Ostrzeżenie, to jest święty obszar wojna

Widziałem go w obie strony, jeśli DLL jest dzielona na ogół GAC go (to nasza prosta zasada). Zasadniczo nie chcemy, aby wystąpiło wiele wystąpień tej samej biblioteki DLL. Jednak pomijamy tę zasadę, jeśli biblioteka jest niestabilna, czyli ciągle przechodzi zmiany/nowe wersje.

Niektórzy twierdzą, że lepiej jest silosować się (umieszczać w koszu), aby zapobiec ponownemu zainstalowaniu przez użytkownika droida gac'd, który może spowodować awarię aplikacji. Zasadniczo, gdy korzystasz z udostępnianej biblioteki, musisz zachować ostrożność przy wprowadzaniu zmian. Jeśli zamierzasz złamać kogoś innego, prawdopodobnie powinieneś pomyśleć o zwiększeniu wersji. Następnie możesz wdrożyć obie wersje do GAC.

Innym argumentem przeciwko umieszczaniu pojemnika jest to, że jeśli chcesz zainstalować nową wersję, musisz umieścić ją w N różnych lokalizacjach.

Moje nastawienie pokazuje poprzez moją odpowiedź (wolę GAC na powielanie)

+0

Ups, zbyt późno przeczytałem ostrzeżenie :-) Ale czy to naprawdę? Na przykład większość sprzedawców bibliotek (takich jak Telerik, DevExpress) po prostu kopiuje swoje złoŜenia do folderu bin, więc wydaje mi się, Ŝe większość ludzi unika GAC ​​(chyba Ŝe jest wymuszony, jak w COM +). –

+0

Większość ludzi jest dość ogólnikowym stwierdzeniem. Biblioteka korporacyjna to klasyczny przykład rzeczy, którą stworzyliśmy w GAC. Po co duplikować wszystkie biblioteki DLL wszędzie? Mówisz także o rozwoju, który różni się znacznie od pakowania w przypadku wdrożeń produkcyjnych. – Nix

+0

To prawda, moje oświadczenie "większość ludzi" jest przynajmniej wątpliwe.OTOH EntLib to kod związany z infrastrukturą, a ja starałem się, aby moja sprawa dotyczyła kodu aplikacji biznesowych. –

3

Wolałabym przechowywać je w folderze bin - wdrożenie xcopy jest znacznie łatwiejsze.

5

Przez większość czasu nie włożymy .DLLs aplikacji na GAC, prowadzi to do pewnego powielania, ale w godzinach nadliczbowych, upraszcza problemy jak wersjonowanie (im więcej masz aplikacji, tym więcej będą ewoluować z różnymi prędkościami), które są trudniejsze niż marnowanie (taniej) miejsca na dysku.

-1

Wdrażanie GAC to koszmar, jeśli trzeba zaktualizować biblioteki DLL, które tam umieściłeś. Cokolwiek trafi do GAC, powinno być dość statyczne, , wersjonowalna treść. W przeciwnym razie nie należy umieszczać w GAC.

Alternatywnym podejściem może być hostowanie współużytkowanych bibliotek DLL na 1) zabezpieczonym, intranetowym serwerze sieciowym lub 2) powszechnie dostępnym folderze sieciowym i użycie metody AssemblyResolve (MSDN link here) w celu ich załadowania. Robimy to w naszym obecnym projekcie i było bardzo, bardzo skuteczne.

+1

Po prostu daj zaktualizowanemu zestawowi inną wersję numer. Nie wiem, dlaczego to koszmar, to właśnie powinieneś zrobić. –

+0

@Hans: na pewno zaktualizuj numer wersji zespołu, a następnie wdróż na ponad 1000 stacji roboczych. Nie mała robota. Właściwie to prawdziwy koszmar, gdy wszystko jest brane pod uwagę. Właśnie dlatego potrzebujemy ClickOnce lub czegoś w rodzaju podejścia do folderów współdzielonych. – code4life

+0

Cóż, nie zgadzam się, miło, gdy programy są wystarczająco inteligentne, aby zaktualizować się. Może jednak poruszam się w niewłaściwych kręgach, nie widzę zbyt wielu pracowników IT, którzy zdecydują się na push-push. Nie lubią nawet ponad 1000 stacji roboczych. Jest to opcja, której OP nie wydaje się również rozważać, może powinieneś o tym wspomnieć w swojej odpowiedzi. –

Powiązane problemy