29
Руйнуємо .NET Міфи Сергій Калінець Sigma Software [email protected] @skalinets

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

Embed Size (px)

Citation preview

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

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

[email protected]@skalinets

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

15 років у грі

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

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

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

Міфи

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

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

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

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

Аргументи

• Солідність

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

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

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

Насправді

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

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

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

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

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

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

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

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

Аргументи

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

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

Проблеми

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

• Deadlocks

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

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

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

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

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

• NoDB (files, blobs, ect.)

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

Насправді

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

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

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

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

Міф про properties

• public fields

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

Аргументи

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

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

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

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

Проблеми

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

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

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

Насправді

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

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

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

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

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

Аргументи

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

• Джуни усюди

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

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

Проблеми

• Більше коду

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

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

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

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

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

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

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

Насправді

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

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

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

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

Vendor lock

• В .NET лише Microsoft

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

А именно

• ADO.NET, LINQ 2 SQL, EF

• ASP.NET, Web API, WCF

• Windows, MS SQL Server, IIS

• MSBuild

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

Насправді

• 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

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

Останній Міф

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

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

Чого так?

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

• Закритий source code

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

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

Насправді

• VS Community Edition, BizSpark

• Open Source

• ASP.NET vNext (5, Core 1)

• .NET Core, .NET Native

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

І про мертвих

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

Дякую!