Почему так много отдельных библиотек System.Web. *? - PullRequest
2 голосов
/ 07 декабря 2009

Я думал о способах реорганизации довольно обширной библиотеки классов / утилит, которую я имею, и я хотел бы сделать одну вещь - отделить все вспомогательные утилиты более высокого уровня, которые вводят новые зависимости. Я прочитал некоторые предыдущие вопросы здесь, и один, который я особенно заметил, был комментарием о том, как Microsoft свободно использует пространства имен в библиотеках DLL. Приведенный пример был System.Web - он находится в базовой платформе, но есть также System.Web.dll, который добавляет больше функциональности в пространство имен, если вы этого хотите.

Я также заметил несколько других доступных System.Web.* DLL, и мне было интересно, есть ли причина, по которой они не будут объединены в одну DLL. Может ли быть так, что у них есть свои индивидуальные зависимости, и Microsoft (как и я) хотела разделить сборки по этим направлениям? Или это для облегчения обслуживания? Что-то еще целиком?

Ответы [ 3 ]

3 голосов
/ 07 декабря 2009

Причина, по которой они не являются 1 .dll, заключается в том, что разные версии фреймворка.

System.Web для версии 2.0

System.Web.Abstractions, System.Web.DymanicData, System.Web.DymanicData.Design, так далее. . , , System.Web.Extensions

все написано в рамках 3.5.

Если вы изменили System.Web на 1 .dll, а все пользователи должны будут изменить .NET 3.5 framework, IIS все еще использует 2.0.

2 голосов
/ 07 декабря 2009

Ну, могут быть и другие ответы, но самый важный для меня - это угол безопасности. Вы предоставляете разрешения для сборок, а не пространств имен. Это позволит вам логически группировать классы намеренно через пространства имен, но иметь классы, которые обращаются к ресурсам, сгруппированным в сборке.

О, и вы также можете иметь не зависящие от языка сборки, позволяющие группировать зависящие от языка подпрограммы в другую сборку.

1 голос
/ 07 декабря 2009

Многие из сборок System.web используются только тогда, когда сервер ASP.net обрабатывает и обслуживает страницу или веб-службу. Они, как правило, не требуются для клиентских приложений .Net и не включаются в .Net Client Profile меньшего размера; уменьшенная версия платформы .Net. (ссылка: http://msdn.microsoft.com/en-us/library/cc656912.aspx)

...