Чому у нас так багато ароматів .NET? Це добре? [зачинено]


9

Існує багато "ароматів" .NET Framework :

  • Повна ("нормальна")
  • Підмножина профілю клієнта
  • Silverlight у веб-браузерах
  • "Silverlight" на Windows Phone
  • Компактний каркас
  • WinRT

Коли потрібен код C # на новій платформі, то, здається, Microsot вважає за краще взяти повний CLR і зменшити його до невеликого підмножини, створюючи нові збірки та переміщуючись типи, а не просто використовувати існуючі збірки, такі, як у BCL . Наприклад, Silverlight має різні класи / методи WPF (навіть до деяких методів, що мають дещо різні підписи або дуже різні реалізації), замість того, щоб просто посилатися на ту саму реалізацію, що List<T>і WPF.

Це ідеальна архітектура чи ознака спадщини? Чи не повинен BCL працювати на всіх платформах, з різними бібліотеками презентації / вводу-виводу на кожній? Або BCL та інші бібліотеки занадто роздуті, і розділення їх створило б занадто багато проблем із сумісністю назад, щоб бути прийнятними?

Якби ми починали з чистого полотна і не переживали за зворотну сумісність, чи справді ситуація справді була б найкращим способом обробляти кілька платформ?


7
Що з усіма близькими голосами? Це цілком законне питання.
Мейсон Уілер

2
Це схоже на те, що воно може закритися, ймовірно, тому, що це написано трохи судженням (це звучить так, ніби ви вже вирішили, що це "погано архітектурно"). Ви можете перефразувати це як " чому так багато ароматів .NET?"
FrustratedWithFormsDesigner

1
@FrustratedWithFormsDesigner має рацію. Питання починається з упередженості щодо .NET. Якби тон був більш нейтральним, я підозрюю, що закритих голосів не було б.
Oded

2
Мені здається, що ти намагаєшся почати аргументи, не шукаючи конструктивних відповідей на своє запитання. Я здогадуюсь, що саме тому ви наближаєтесь до голосів.
Тіанна

2
@ Додано та інші - я переформулював заголовок та тіло, сподіваюсь, що зустрінеться з вашим схваленням :)
Пол Стовелл

Відповіді:


5

Що робить Microsoft, розбиваючи підпрограми на кілька пакетів, є загальним явищем. Існує версія .NET, яка працює на одноплатних комп'ютерах (.Net Micro Framework) з обмеженою пам'яттю. Не було б сенсу включати до цієї версії все необхідне, наприклад, для запуску повного графічного інтерфейсу користувача.

Якщо ви подивитеся на Apple, iPhone не містить усіх процедур, які можна було б знайти на Mac.


Але замість того, щоб розробник копіював / вставляв код для List<T>створення Micro Framework List<T>, чи не слід BCL розбивати належним чином, щоб двійкові файли працювали на всіх платформах?
Пол Стовелл

2
Іншими словами, чи не слід змушувати код працювати на іншій платформі просто випадком вибору, які збірки підтримувати?
Пол Стовелл

1
Java робить це також. Наприклад, Java Card - це підмножина Java.
Бернар

2
@PaulStovell: Я не впевнений, як це робить MS ... але я би не здивувався, якби у MS був окремий шлях / сценарій збірки (легше кажучи), який приймає код і будує його для цільової платформи - так це не копія / вставка, List<T>але це може обрізати деякі речі з коду або об'єднатись з деякими конкретними платформами речами та створити елемент розгортання.
Стівен Еверс

1

Я не думаю, що .NET - це проблема. Хоча існують різні умови виконання, вони все ще сумісні, і саме тому такі технології, як Бібліотеки портативного класу, працюють (для більшості перерахованих вами періодів виконання).

Наприклад, чи не повинен кожен аромат посилатися на одну спільну збірку під назвою "System.Collections.dll", замість того, щоб кожен час виконання мав власну копію System.dll / mscorlib.dll з різними копіями колекцій?

Для чого це потрібно? Поки вони всі сумісні (ще раз, див. Бібліотеки портативного класу), це не має значення, оскільки BCL є частиною самого часу виконання та розповсюджується в тандемі.


Чи не можу я мати можливість написати клас, який використовує List<T>та запускає його на будь-якій платформі, не створюючи портативної бібліотеки? Або не повинно List<T>бути в переносній бібліотеці? Портативні бібліотеки вважають мене як вирішення, а не частиною елегантного дизайну.
Пол Стовелл

1

.NET по суті замінює та розширює ком-об’єкти у середовищі Windows. Він також використовується для ідентифікації багатьох надзвичайно різних технологій, уявіть, якби Adobe перейменувала всі свої продукти, щоб у їхньому імені було спільне слово, це щось із того, що відбувається з .NET

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.