Руйнуємо .NET Міфи

Preview:

Citation preview

Руйнуємо .NET МіфиСергій КалінецьSigma Software

kalinets@gmail.com@skalinets

15 років у грі

Тренер з інженерних практик

Архітектор у 2

Міфи

Міф про проекти

• Успіх – это коли багато проектів у солюшені

Аргументи

• Солідність

• Розподіл відповідальності

• Можливість часткового деплойменту

Насправді

• Довше збирається

• Складніший деплоймент

• Збірка – це одиниця деплойменту

• Аналогічно і про папки/неймспейси

Міф про бази даних

• Зовнішні ключі

Аргументи

• Цілісність даних

Проблеми

• Повільні запити

• Deadlocks

• Більше церемоній для вставки даних

• Менший потенціал для масштабування

Системи без зовнішніх ключів

• NoSQL (Document, Table, Key-Value, etc.)

• NoDB (files, blobs, ect.)

Насправді

• Клієнтська система сама може контролювати цілісність

• БД краще використовувати лише як сховище

• Це саме стосується і інших БД артифактів (тригери, процедури та ін.)

Міф про properties

• public fields

Аргументи

• Так про це ж у всіх книжках пишуть

• Інкапсуляція

• Проблеми зворотньої сумісності

Проблеми

• Більше коду (хоча з кожною версією все менше)

• Швидкісь роботи (незначне просідання)

Насправді

• Для POCO можна використовувати філди

Міф про аргументи

• Треба завжди їх перевіряти

Аргументи

• Захист інвариантів

• Джуни усюди

• Страховка від помилок

Проблеми

• Більше коду

• Швидкість роботи

• Перевірка не вирішує проблеми

public int GetLength(string text){ return text.Length;}

public int GetLength(string text){ if (text == null) { throw new WtfException("text is null!!!"); } return text.Length;}

Насправді

• Більшість перевірок бахне під час розробки

• На проді ці перевірки не врятують

• Подібні перевірки корисні лише для публічних API

Vendor lock

• В .NET лише Microsoft

А именно

• ADO.NET, LINQ 2 SQL, EF

• ASP.NET, Web API, WCF

• Windows, MS SQL Server, IIS

• MSBuild

Насправді

• EF -> NHibernate, Micro ORMs (dapper, petapoco, massive)

• ASP.NET, Web API -> NancyFX, Service Stack, Suave (F#)

• MS SQL Server -> MySQL, SQLite, Raven, Mongo

• MSBuild -> rake, fake, nake, …ake

Останній Міф

• .NET вже не той і взагалі, треба валити

Чого так?

• Дорогий та закритий стек

• Закритий source code

• Дорогі засоби розробки

Насправді

• VS Community Edition, BizSpark

• Open Source

• ASP.NET vNext (5, Core 1)

• .NET Core, .NET Native

І про мертвих

Дякую!

Recommended