Традиция поддержки платформы .NET Framework

С первых дней появления .NET framework поддержка ОС была минимальной:

  • .NET 1.0 - Windows NT или выше (также поддерживаются Windows 98 / ME)
  • .NET 2.0 - Windows 2000 или выше (также поддерживаются Windows 98 / ME)
  • .NET 3.0 - Windows XP или выше
  • .NET 3.5 - Windows XP или выше

Эта минимальная поддержка ОС позволила игнорировать проблемы, связанные с платформой, за счет использования только фреймворка. Новые функции игнорировались на старых платформах. Например, стиль «Мозаичный вид» в элементе управления ListView или прозрачность формы в Windows 98 / ME.

Однако в System.Core.dll (часть .NET 3.5) есть несколько классов, которые используют новый API Vista и генерируют исключение PlatformNotSupportedException, если используется на машине XP. Например, взгляните на новый класс EventLogReader (в пространстве имен System.Diagnostics.Eventing.Reader).

Разве Microsoft нарушает традицию поддержки платформ?

Честно говоря, в .NET 2.0 уже были классы, поддерживающие функции безопасности NTFS, которых нет в Windows 98 / ME.


person Michael Damatov    schedule 30.09.2008    source источник


Ответы (6)


Microsoft явно продвигается к среде разработки, ориентированной на Vista. Это не только из-за очевидной причины «нам нужно зарабатывать деньги», но и потому, что Vista - это то место, где появляются новые крутые API.

Честно говоря, так было всегда с Windows API, и, вероятно, так будет и с .NET. Нет такой «традиции», как вы описываете, это скорее традиция создания API-интерфейсов, которые могут не работать, уведомляя вас о том, что вы работаете в операционной системе, которая ее не поддерживает. Они всегда стараются быть обратно совместимы, а не ограничивают вперед, если вы понимаете :)

person dguaraglia    schedule 30.09.2008

Минимальная поддержка ОС означает, что продукт тестировался на определенной платформе и выше. Это не гарантирует, что все функции (или классы / API в случае платформы разработки, такой как .Net) будут работать на всех поддерживаемых платформах.

Существуют специфичные для Vista собственные API-интерфейсы, которых нет в XP. .Net 3.5 добавляет поддержку управляемого мира для этих API-интерфейсов, но не пытается предоставить управляемую реализацию для несуществующих собственных API-интерфейсов в XP.

person Franci Penov    schedule 30.09.2008

Я могу сказать вам по опыту, что .NET никогда по-настоящему не работал с Windows 98 или ME. Я помню, как еще в 2002 году, когда версия 1.0 была новой, мы с некоторыми коллегами обнаружили, что что-либо более сложное, чем WinForm с некоторыми кнопками и совершенно простой функциональностью, не будет работать в Windows 9x, несмотря на утверждения Microsoft об обратном. Учитывая, что у нас был год в XP и мы могли разумно ожидать Windows 2000, по крайней мере, на машинах, с которыми мы имели дело в то время, это не было большой проблемой.

Но в основном игнорирование Microsoft более старых версий Windows с .NET не является чем-то новым. По крайней мере, в наши дни они выбрасывают исключения PlatformNotSupportedException.

person Tom Kidd    schedule 30.09.2008

Поддержка платформы всегда различалась по типу. Например, Compact Framework не поддерживает многие типы.

person Justin R.    schedule 30.09.2008

Я не могу говорить обо всем этом, но я знаю, что, например, система журнала событий в Vista была полностью капитально отремонтирован и практически не похож на систему журнала событий в Windows XP. Наверное, это просто несовместимо.

person Mark Allen    schedule 30.09.2008

Проблема здесь в том, что System.Diagnostics.Eventing используется в AppFabric (т. Е. Windows Azure), поэтому вам придется вести тяжелую битву, заставляя Windows XP взаимодействовать с облаком.

person Scott Barnes    schedule 27.07.2011