Руйнуємо .NET Міфи
-
Upload
serhiy-kalinets -
Category
Software
-
view
446 -
download
1
Transcript of Руйнуємо .NET Міфи
![Page 2: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/2.jpg)
15 років у грі
Тренер з інженерних практик
Архітектор у 2
![Page 3: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/3.jpg)
Міфи
![Page 4: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/4.jpg)
Міф про проекти
• Успіх – это коли багато проектів у солюшені
![Page 5: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/5.jpg)
Аргументи
• Солідність
• Розподіл відповідальності
• Можливість часткового деплойменту
![Page 6: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/6.jpg)
Насправді
• Довше збирається
• Складніший деплоймент
• Збірка – це одиниця деплойменту
• Аналогічно і про папки/неймспейси
![Page 7: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/7.jpg)
Міф про бази даних
• Зовнішні ключі
![Page 8: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/8.jpg)
Аргументи
• Цілісність даних
![Page 9: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/9.jpg)
Проблеми
• Повільні запити
• Deadlocks
• Більше церемоній для вставки даних
• Менший потенціал для масштабування
![Page 10: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/10.jpg)
Системи без зовнішніх ключів
• NoSQL (Document, Table, Key-Value, etc.)
• NoDB (files, blobs, ect.)
![Page 11: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/11.jpg)
Насправді
• Клієнтська система сама може контролювати цілісність
• БД краще використовувати лише як сховище
• Це саме стосується і інших БД артифактів (тригери, процедури та ін.)
![Page 12: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/12.jpg)
Міф про properties
• public fields
![Page 13: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/13.jpg)
Аргументи
• Так про це ж у всіх книжках пишуть
• Інкапсуляція
• Проблеми зворотньої сумісності
![Page 14: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/14.jpg)
Проблеми
• Більше коду (хоча з кожною версією все менше)
• Швидкісь роботи (незначне просідання)
![Page 15: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/15.jpg)
Насправді
• Для POCO можна використовувати філди
![Page 16: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/16.jpg)
Міф про аргументи
• Треба завжди їх перевіряти
![Page 17: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/17.jpg)
Аргументи
• Захист інвариантів
• Джуни усюди
• Страховка від помилок
![Page 18: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/18.jpg)
Проблеми
• Більше коду
• Швидкість роботи
• Перевірка не вирішує проблеми
![Page 19: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/19.jpg)
public int GetLength(string text){ return text.Length;}
![Page 20: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/20.jpg)
public int GetLength(string text){ if (text == null) { throw new WtfException("text is null!!!"); } return text.Length;}
![Page 21: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/21.jpg)
Насправді
• Більшість перевірок бахне під час розробки
• На проді ці перевірки не врятують
• Подібні перевірки корисні лише для публічних API
![Page 22: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/22.jpg)
Vendor lock
• В .NET лише Microsoft
![Page 23: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/23.jpg)
А именно
• ADO.NET, LINQ 2 SQL, EF
• ASP.NET, Web API, WCF
• Windows, MS SQL Server, IIS
• MSBuild
![Page 24: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/24.jpg)
Насправді
• 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 Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/25.jpg)
Останній Міф
• .NET вже не той і взагалі, треба валити
![Page 26: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/26.jpg)
Чого так?
• Дорогий та закритий стек
• Закритий source code
• Дорогі засоби розробки
![Page 27: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/27.jpg)
Насправді
• VS Community Edition, BizSpark
• Open Source
• ASP.NET vNext (5, Core 1)
• .NET Core, .NET Native
![Page 28: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/28.jpg)
І про мертвих
![Page 29: Руйнуємо .NET Міфи](https://reader035.fdocument.pub/reader035/viewer/2022062302/587466d21a28abab198b6f4b/html5/thumbnails/29.jpg)
Дякую!