Міфи та помилки з приводу

Дуже часто мені доводиться спілкуватися з різними людьми, які не працюють щільно з .NET Framework. І дуже часто чую твердження, які мало мають спільного із реальністю. Тому я вирішив зібрати найпопулярніші твердження (помилки) з приводу .NET Framework.

№1. Навіть для невеликої програми необхідно "тягнути" за собою повний .NET Framework

Це затверджене правильне - програма, написана на .NET, не може бути запущена на машині, де не встановлена ​​потрібна версія .NET Framework.

Сучасні версії Windows вже містять встановлений .NET Framework. Нижче показано таблицю, в якій показано, які версії .NET Framework встановлені на різних версіях Windows.

Крім того, існує обрізана версія. NET Framework - .NET Framework Client Profile, який займає набагато менше місця на клієнтській машині (.NET Framework Client Profile 2.0 займає близько 28 МБ). Він містить ті бібліотеки, які потрібні для запуску додатків і не містить бібліотеки, які використовуються для їх розробки (наприклад, бібліотека System.Drawing.Design потрібна лише для розробки додатків, і ніяк не використовується на етапі виконання). Ви можете скомпілювати вашу програму під цей фреймворк, а клієнту не потрібно буде встановлювати весь "повноважний" пакет.

Якщо ви підете на сайт Майкрософта і спробуєте завантажити .NET Framework Client Profile, то, напевно, помітите, що розмір установника далеко не 28 МБ, як це сказано вище (255.6 МБ). Причина в тому, що установник містить багато різних компонентів, які встановлюються в залежності від конфігурації та вже встановлених компонентів на конкретній машині (якщо компонент вже є в системі, він пропускається при установці). Крім тогоповний фреймворк та client profile не можуть бути встановлені разом.

Але, у будь-якому випадку, ці компоненти повинні якимось чином потрапити на машину клієнта. Найпростіший спосіб - це створити інсталятор програми, у властивостях якого потрібно вказати, що у разі відсутності необхідних компонентів (наприклад, .NET Framework або SQL Server) їх необхідно попередньо встановити. У властивостях кожного необхідного компонента потрібно вказати, з якого джерела його потрібно завантажити – з мережі чи локального джерела. У другому випадку інсталятор вашої програми включить інсталяційні файли необхідних компонентів (розмір інсталятора, природно, збільшиться на розмір цих компонентів).

Оптимальним рішенням є створення двох типів установників - більш "легкий" з можливістю завантаження необхідних компонентів з мережі та "важчий" для офлайн установки.

№2. Windows хостинг дорожчий ніж Linux хостинг

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

№3. Розробка для .NET Framework – дуже дорога

. Адже окрім покупки Visual Studio (що теж не дешево) необхідно придбати ліцензії на Windows, SQL Server і т.д.

По-перше, потрібно сказати про те, що багато продуктів надаються безкоштовно:

  • Visual Studio Express Edition
  • SQL Server Express Edition
  • Windows Server Web Edition
  • Windows Phone Developer Tools

Цих інструментів має вистачити для розробки проектів середнього рівня складності.

Також потрібно сказати, що існує багато програм, за якими можна отримати ліцензійне програмне забезпечення безкоштовно:

  • DreamSpark - для школярів, студентів та аспірантів (на період навчання)
  • BizSpark - для стартапів (протягом 3 років)
  • WebsiteSpark - для веб-студій (протягом 3 років)

Після закінчення цих програм ви повинні видалити встановлене ПЗ або придбати ліцензії. Також можна купити одну з підписок MSDN, які дають змогу отримати достатню кількість ліцензій за порівняно невеликі гроші.

№4. .NET Framework - не кросплатформовий

По-перше, це не завжди необхідно.

Якщо це все ж таки необхідно, тобто проекти Mono, Moonlight, MonoTouch, які дозволяють писати кросплатформовий код. Ці проекти розвиваються дуже динамічно та дозволяють задовольнити більшість бізнес-потреб. Крім того, сумісність кросплатформового .NET коду набагато краща, ніж, наприклад, сумісність класичних Java фреймворків та SDK для Android різних версій або BlackBerry.

Ну і зараз дуже сильно розвивається ринок SaS рішень, тому перед розробкою потрібно подумати про те, що, можливо, є сенс надавати послугу у вигляді сервісу і тоді питання кроссплатформенності відпаде саме собою.

№5. .NET і C# - для бидлокодерів та формошлепства

Такі висловлювання – не рідкість, їх можна зустріти дуже часто на різних ресурсах (навіть пристойних) та при особистому спілкуванні. Автори цих тверджень забувають, що .NET Framework не обмежується однією технологією (Windows Forms), а містить велику кількість технологій (ASP.NET (MVC), WCF, WPF, WF, XNA, Silverlight, Windows Phone тощо) та продуктів (SharePoint, BizTalk і т.д.) різних рівнів складності та областей застосування. Хоча, якщо чесно, після таких фраз спілкування з людиною, як правило, закінчується через безперспективність дискусії.

Упродовження цього пункту.

№6. На .NET Framework ніколи не напишеш високонавантажену систему

Наприклад наводять фейсбук і вконтакте, які написані на PHP. Але тут потрібно уточнити, що ці системи обслуговує величезний технопарк, а код PHP попередньо скомпільований в машинний код, за рахунок чого досягається висока швидкість роботи цих систем.

Як контр-приклад можна навести сайт StackOverflow, який написаний повністю на стеку MS-технологій. Цей сайт щодня відвідує величезну кількість людей з усього світу. Докладніше про те, як працює StackOverflow, можна почитати тут.

Також пропоную звернути увагу на сайти Українського Медіа Холдингу, карти Mail.ru, які працюють на MS-технологіях. Ці проекти є яскравими прикладами хибності думки №6.

Ну і насамкінець скажу, що не технологія фарбує людину, а людина – технологію.