- Принцип единственности ответственности (The Single Responsibility Principle)
- Принцип открытости/закрытости (The Open Closed Principle)
- Принцип замещения Лисков (The Liskov Substitution Principle)
- Принцип разделения интерфейса (The Interface Segregation Principle)
- Принцип инверсии зависимости (The Dependency Inversion Principle)
Формат блога - записки на салфетке... , важные и не очень мелочи которые легко забыть
Обо мне
Метки
- C#
- заметки на полях
- многопоточность
- notes for memory
- DevExpress
- XtraGrid
- async
- await
- multithreading
- parallel programming
- Отладка
- асинхронный ввод-вывод
- внутреннее устройство Windows
- Columns
- WinForms
- архитектура приложения
- обучение
- BlockingCollection
- Entity Framework
- ExecutionContext
- IIS
- Lazy
- Lazy loading
- Leading columns
- Npgsql
- OutOfMemory Exception
- PostgreSQL.
- RegExp
- SOLID
- Solution Explorer
- SynchronizationContext
- ThreadPool
- Tuple
- VS2013
- VS2013 bug
- Visual Studio
- WPF
- boxing
- context menu
- debuger
- filter
- patterns
- reference types
- unboxing
- value types
- базы данных
- контекстное меню
- кортежи
- математика
- распаковка
- физика
Показаны сообщения с ярлыком архитектура приложения. Показать все сообщения
Показаны сообщения с ярлыком архитектура приложения. Показать все сообщения
воскресенье, 10 июля 2016 г.
SOLID - Single(единственность ответственности) Open-closed(открытости-закрытости) Lisk(замещение Лисков) Interface segregation(разделения интерфейса) Dependency inversion
пятница, 10 июня 2016 г.
Немасштабируемый вэб сервер IIS - откуда он берется ?
Плохая архитектура
Представим себе что мы написали ASP.NET или WCF приложение без использования асинхронных операций - что произойдет ?
При попытке коннекта от клиента IIS создаст в ThreadPool новый поток, который создаст запрос к базе данных и ЗАБЛОКИРУЕТСЯ ожидая ответа ! В случае с высокой загрузкой сервера, когда блокировки будут возникать быстрее чем база данных отдавать ответы разблокируя поток - число заблокированных потоков будет расти.
Но что самое главное - у этого роста есть четкий предел: -лишь определенное количество потоков поток ThreadPool сможет создать, и наступит момент когда система выдаст OutOfMemory Exception ! И данное исключение не может быть обработано - так как исключение возникает в самом ThreadPool и наш код в этот момент находиться в стеке.
То есть что произойдет - процесс сервера будет уничтожен (TerminateProcess) вместе со всеми потоками, но как только первый же клиент создаст запрос - процесс создастся вновь автоматически, и все опять пойдет по кругу !
Возникает "магия" - вдруг ни с того ни с сего клиенты не получают ответов (периодически), но потом все работает как обычно ...
Ярлыки:
архитектура приложения
,
асинхронный ввод-вывод
,
многопоточность
,
async
,
await
,
C#
,
IIS
,
multithreading
,
OutOfMemory Exception
,
ThreadPool
Подписаться на:
Сообщения
(
Atom
)
