Существует множество «разновидностей» .NET Framework :
- Полный («нормальный»)
- Подмножество профиля клиента
- Silverlight в веб-браузерах
- «Silverlight» на Windows Phone
- Компактный каркас
- WinRT
Когда на новой платформе требуется код C #, может показаться, что Microsot предпочитает взять полный CLR и сократить его до небольшого подмножества, создавая новые сборки и перемещая типы, а не просто используя существующие сборки, такие как в BCL. , Например, Silverlight имеет различные классы / методы для WPF (даже если некоторые методы имеют слегка отличающиеся сигнатуры или очень разные реализации), вместо того, чтобы просто ссылаться на ту же реализацию, List<T>
что и WPF.
Это идеальная архитектура или признак наследства? Разве BCL не должен работать на всех платформах с разными библиотеками презентаций / ввода-вывода на каждой? Или BCL и другие библиотеки слишком раздуты, и их разделение создаст слишком много проблем обратной совместимости, чтобы быть приемлемым?
Если бы мы начали с чистого листа и не беспокоились о обратной совместимости, будет ли текущая ситуация действительно лучшим способом работы с несколькими платформами?
источник
Ответы:
То, что делает Microsoft, разделяя подпрограммы на несколько пакетов, является распространенным явлением. Существует версия .NET, которая работает на одноплатных компьютерах (.Net Micro Framework) с ограниченной памятью. Не имеет смысла включать в эту версию все, что требуется для запуска, например, полноценного графического интерфейса пользователя.
Если вы посмотрите на Apple, iPhone не содержит всех процедур, которые можно найти на Mac.
источник
List<T>
создания Micro FrameworkList<T>
, разве не следует правильно разделить BCL, чтобы исполняемые файлы работали на всех платформах?List<T>
но это может убрать некоторые вещи из кода или слиться с некоторыми специфичными для платформы вещами и создать элемент развертывания.Я не думаю, что .NET - это проблема. Несмотря на то, что существуют различные среды выполнения, они все еще совместимы, поэтому такие технологии, как Portable Class Libraries, работают (для большинства перечисленных вами сред времени выполнения).
Зачем это нужно? Пока все они совместимы (опять же, смотрите Portable Class Libraries), это не должно иметь значения, поскольку BCL является частью самой среды выполнения и распространяется в тандеме.
источник
List<T>
и запускает его только на любой платформе, не создавая переносимую библиотеку? ИлиList<T>
сам не должен быть в переносимой библиотеке? Переносимые библиотеки кажутся мне обходным путем, а не частью элегантного дизайна..NET по сути заменяет и расширяет com-объекты в среде Windows. Он также используется для определения множества совершенно разных технологий. Представьте, что если Adobe переименовала все свои продукты в общее название, это то, что происходит с .NET.
источник