Как вы можете управлять памятью в C# в сценарии, где у вас есть множество объектов с коротким временем жизни, создаваемых в высоконагруженной многопоточной среде, и какие подходы вы использовали бы для минимизации сборки мусора (GC)?
В такой ситуации я бы использовал пул объектов для управления памятью. Пулинг объектов позволяет избежать частого создания и уничтожения объектов, что снижает нагрузку на сборщик мусора. Также можно использовать структуры (ValueType) вместо классов, где это возможно, чтобы уменьшить нагрузку на кучу. Помимо этого, важно тщательно управлять многопоточностью, чтобы избежать состояния гонки и утечек памяти.
В такой ситуации я бы использовал пул объектов для управления памятью. Пулинг объектов позволяет избежать частого создания и уничтожения объектов, что снижает нагрузку на сборщик мусора. Также можно использовать структуры (ValueType) вместо классов, где это возможно, чтобы уменьшить нагрузку на кучу. Помимо этого, важно тщательно управлять многопоточностью, чтобы избежать состояния гонки и утечек памяти.
В такой ситуации я бы использовал пул объектов для управления памятью. Пулинг объектов позволяет избежать частого создания и уничтожения объектов, что снижает нагрузку на сборщик мусора. Также можно использовать структуры (ValueType) вместо классов, где это возможно, чтобы уменьшить нагрузку на кучу. Помимо этого, важно тщательно управлять многопоточностью, чтобы избежать состояния гонки и утечек памяти.
В такой ситуации я бы использовал пул объектов для управления памятью. Пулинг объектов позволяет избежать частого создания и уничтожения объектов, что снижает нагрузку на сборщик мусора. Также можно использовать структуры (ValueType) вместо классов, где это возможно, чтобы уменьшить нагрузку на кучу. Помимо этого, важно тщательно управлять многопоточностью, чтобы избежать состояния гонки и утечек памяти.
Что такое Round Trip в ASP.NET?
В момент включения обработки на стороне сервера, тогда включаются четыре этапа:
1. Пользователь запрашивает веб-форму с веб-сервера.
2. Веб-сервер отвечает указанной веб-формой.
3. Пользователь вводит информацию и отправляет веб-форму на сервер.
4. Затем веб-сервер обрабатывает структуру формы и отправляет результаты обратно конкретному пользователю.
Теперь этап 3 известен как постбэк страницы, в то время как этапы 3 и 4 в совокупности известны как «Round Trip». Можно сказать, что обратный путь включает в себя выполнение полного обхода по сети к веб-браузеру и получение ответа. Веб-приложения используют HTTP для создания соответствия между веб-программой и сервером.
В момент включения обработки на стороне сервера, тогда включаются четыре этапа:
1. Пользователь запрашивает веб-форму с веб-сервера.
2. Веб-сервер отвечает указанной веб-формой.
3. Пользователь вводит информацию и отправляет веб-форму на сервер.
4. Затем веб-сервер обрабатывает структуру формы и отправляет результаты обратно конкретному пользователю.
Теперь этап 3 известен как постбэк страницы, в то время как этапы 3 и 4 в совокупности известны как «Round Trip». Можно сказать, что обратный путь включает в себя выполнение полного обхода по сети к веб-браузеру и получение ответа. Веб-приложения используют HTTP для создания соответствия между веб-программой и сервером.
Forwarded from Библиотека шарписта | C#, F#, .NET, ASP.NET
🎮💉 Инъекция зависимостей в Unity для самых маленьких
В разработке на Unity часто возникает проблема высокой связанности кода, что затрудняет поддержку и тестирование. Инъекция зависимостей помогает сделать архитектуру гибче, упрощая управление зависимостями между компонентами.
В свежей статье разбираются подходы к DI в Unity, сложности, связанные с MonoBehaviour, и примеры улучшения структуры проекта.
➡️ Читать статью
🐸 Библиотека шарписта
В разработке на Unity часто возникает проблема высокой связанности кода, что затрудняет поддержку и тестирование. Инъекция зависимостей помогает сделать архитектуру гибче, упрощая управление зависимостями между компонентами.
В свежей статье разбираются подходы к DI в Unity, сложности, связанные с MonoBehaviour, и примеры улучшения структуры проекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤖 Что означает «PostBack» в ASP.NET?
PostBack — это процесс представления страницы ASP.NET на сервер для обработки. PostBack выполняется, если определенные учетные данные страницы должны быть проверены по источникам (например, подтверждение имени пользователя и секретного ключа/пароля с использованием базы данных).
Это то, чего клиентская машина не может сделать, и впоследствии эти данные должны быть отправлены обратно на сервер. Можно сказать, что событие PostBack происходит на стороне клиента, но обрабатывается кодом в копии страницы, запущенной на сервере.
PostBack — это процесс представления страницы ASP.NET на сервер для обработки. PostBack выполняется, если определенные учетные данные страницы должны быть проверены по источникам (например, подтверждение имени пользователя и секретного ключа/пароля с использованием базы данных).
Это то, чего клиентская машина не может сделать, и впоследствии эти данные должны быть отправлены обратно на сервер. Можно сказать, что событие PostBack происходит на стороне клиента, но обрабатывается кодом в копии страницы, запущенной на сервере.
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
🏗 🔨 Как не сломать продакшен: 8 основных паттернов распределенных систем
Разработка распределённых систем сопряжена с множеством вызовов: от управления состоянием и взаимодействия сервисов до обработки отказов и масштабирования. Чтобы упростить решение этих задач, инженеры используют проверенные временем архитектурные паттерны.
В статье рассматриваются ключевые шаблоны, помогающие строить надёжные и эффективные распределённые системы.
➡️ Читать статью
🐸 Библиотека devops'a
Разработка распределённых систем сопряжена с множеством вызовов: от управления состоянием и взаимодействия сервисов до обработки отказов и масштабирования. Чтобы упростить решение этих задач, инженеры используют проверенные временем архитектурные паттерны.
В статье рассматриваются ключевые шаблоны, помогающие строить надёжные и эффективные распределённые системы.
➡️ Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
Может ли класс реализовать два интерфейса с одинаковыми методами? Если да, то как это сделать?
Да, класс может реализовать два интерфейса с одинаковыми методами. В этом случае общие методы можно реализовать один раз неявно или дважды явно, указывая имя интерфейса. При явной реализации метод будет доступен только через приведение экземпляра класса к соответствующему интерфейсу, если не будет третьей реализации метода непосредственно в классе. Если методы интерфейсов должны выполнять разные действия, неявная реализация может быть некорректной.
Да, класс может реализовать два интерфейса с одинаковыми методами. В этом случае общие методы можно реализовать один раз неявно или дважды явно, указывая имя интерфейса. При явной реализации метод будет доступен только через приведение экземпляра класса к соответствующему интерфейсу, если не будет третьей реализации метода непосредственно в классе. Если методы интерфейсов должны выполнять разные действия, неявная реализация может быть некорректной.
Обсудите важность Asset Bundles в разработке игр на Unity.
Пакеты активов — это пакеты, содержащие ресурсы (текстуры, модели, аудио и т. д.), которые можно загружать динамически во время выполнения. Они позволяют разработчикам уменьшить размер сборки и реализовать потоковую передачу ресурсов, необходимую для мобильных и онлайн-игр, обеспечивая лучший пользовательский опыт и сокращая время загрузки.
Пакеты активов — это пакеты, содержащие ресурсы (текстуры, модели, аудио и т. д.), которые можно загружать динамически во время выполнения. Они позволяют разработчикам уменьшить размер сборки и реализовать потоковую передачу ресурсов, необходимую для мобильных и онлайн-игр, обеспечивая лучший пользовательский опыт и сокращая время загрузки.
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Что из перечисленного можно использовать для объявления типа, допускающего значение NULL, в C#?
Anonymous Quiz
5%
int?
2%
double?
78%
И первый вариант, и второй
15%
Ничего из вышеперечисленного
Forwarded from Библиотека питониста | Python, Django, Flask
📢 Где «выстрелит» твой стартап: 8 площадок для запуска и продвижения IT-проекта
Собрали для тебя проверенные места, где можно бесплатно показать свой продукт первым пользователям и даже найти инвестора. Работает как для зарубежного, так и для российского рынка.
👍 Ссылка на статью: https://proglib.io/sh/LrcFGsnuyU
Собрали для тебя проверенные места, где можно бесплатно показать свой продукт первым пользователям и даже найти инвестора. Работает как для зарубежного, так и для российского рынка.
👍 Ссылка на статью: https://proglib.io/sh/LrcFGsnuyU
Каков вывод Console.WriteLine("2" + 2);?
Anonymous Quiz
48%
22
3%
4
41%
Error
8%
Ничего из вышеперечисленного
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🐳 Делаем конкурента DeepSeek R1-Zero на домашней пекарне: метод GRPO в Unsloth
Обычно LLM требуют мощных GPU, но теперь даже на видеокарте с ограниченной памятью можно обучать модели логического рассуждения.
💡 Фишка — новый алгоритм GRPO, который позволяет моделям развивать логическое мышление без вмешательства человека.
Подробнее в нашей статье: https://proglib.io/sh/MyBCbq9is5
Обычно LLM требуют мощных GPU, но теперь даже на видеокарте с ограниченной памятью можно обучать модели логического рассуждения.
💡 Фишка — новый алгоритм GRPO, который позволяет моделям развивать логическое мышление без вмешательства человека.
Подробнее в нашей статье: https://proglib.io/sh/MyBCbq9is5
✍️ Может ли класс реализовать два интерфейса с одинаковыми методами? Если да, то как это сделать?
Да, можно реализовать два интерфейса с одинаковыми методами. В этом случае, методы можно реализовать одним из двух способов: неявно, то есть один раз, или явно, указав имя интерфейса для каждого метода. При явной реализации метод нельзя будет вызвать без приведения экземпляра класса к соответствующему интерфейсу, если только в классе не будет добавлена третья реализация метода. Если методы интерфейсов выполняют разные функции, неявная реализация может оказаться некорректной.
Да, можно реализовать два интерфейса с одинаковыми методами. В этом случае, методы можно реализовать одним из двух способов: неявно, то есть один раз, или явно, указав имя интерфейса для каждого метода. При явной реализации метод нельзя будет вызвать без приведения экземпляра класса к соответствующему интерфейсу, если только в классе не будет добавлена третья реализация метода. Если методы интерфейсов выполняют разные функции, неявная реализация может оказаться некорректной.
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
🐘 20+ нюансов PostgreSQL, о которых должен знать продвинутый бэкендер
Документация PostgreSQL — лучший источник знаний о СУБД. Но она отличается огромным объемом: не каждый разработчик осилит 3024 страницы формата А4.
Опытный бэкендер составил список самых важных сведений, которые ему самому хотелось бы знать перед началом работы с PostgreSQL. Эта подборка сэкономит вам несколько недель изучения документации, и скорее всего, пригодится для работы с другими СУБД.
🔗 Читать статью
🔗 Зеркало
Документация PostgreSQL — лучший источник знаний о СУБД. Но она отличается огромным объемом: не каждый разработчик осилит 3024 страницы формата А4.
Опытный бэкендер составил список самых важных сведений, которые ему самому хотелось бы знать перед началом работы с PostgreSQL. Эта подборка сэкономит вам несколько недель изучения документации, и скорее всего, пригодится для работы с другими СУБД.
🔗 Читать статью
🔗 Зеркало
Совет на 2025-й — будьте осторожнее с выбором работы.
IT-рынок штормит: массовые сокращения, заморозка найма, снижение зарплат. В такое время особенно важно отличать стоящие офферы от проходных.
Знакомо? Открываешь вакансию, а там: «Ищем middle-разработчика с опытом 10 лет, знанием 15 языков и готовностью работать за печеньки. Офис в Челябинске, релокация за ваш счет» 🤦♂️
Чтобы не тратить время на сотни сомнительных предложений, подпишитесь на IT Job Hub. Там мы отфильтровываем весь мусор и публикуем только избранные вакансии в стабильных компаниях:
— Зарплаты на уровне рынка, а не на уровне голодного студента
— Никаких «мы молодая и дружная семья» — только адекватные условия
— Проверенные работодатели, а не стартапы из сомнительных сфер
Вакансии удобно разбиты по тегам: #python #java #go #data #devops и по другим направлениям. Без воды и лишнего спама — только проверенные вакансии в знакомых компаниях.
Подписывайтесь, если не хотите упустить работу мечты → @proglib_jobs
IT-рынок штормит: массовые сокращения, заморозка найма, снижение зарплат. В такое время особенно важно отличать стоящие офферы от проходных.
Знакомо? Открываешь вакансию, а там: «Ищем middle-разработчика с опытом 10 лет, знанием 15 языков и готовностью работать за печеньки. Офис в Челябинске, релокация за ваш счет» 🤦♂️
Чтобы не тратить время на сотни сомнительных предложений, подпишитесь на IT Job Hub. Там мы отфильтровываем весь мусор и публикуем только избранные вакансии в стабильных компаниях:
— Зарплаты на уровне рынка, а не на уровне голодного студента
— Никаких «мы молодая и дружная семья» — только адекватные условия
— Проверенные работодатели, а не стартапы из сомнительных сфер
Вакансии удобно разбиты по тегам: #python #java #go #data #devops и по другим направлениям. Без воды и лишнего спама — только проверенные вакансии в знакомых компаниях.
Подписывайтесь, если не хотите упустить работу мечты → @proglib_jobs
📊 Как себя чувствует IT-рынок в 2025 году?
Друзья, запускаем важное исследование рынка труда в IT!
Нам очень важно понять:
• Как изменились зарплаты
• Что происходит с наймом
• Есть ли сокращения или рост
🔐 Опрос полностью анонимный
⏱️ Займёт всего 3-5 минут
📈 Результаты опубликуем в подробной статье
Ваши ответы помогут составить реальную картину происходящего в индустрии.
👉 Пройти опрос
Друзья, запускаем важное исследование рынка труда в IT!
Нам очень важно понять:
• Как изменились зарплаты
• Что происходит с наймом
• Есть ли сокращения или рост
🔐 Опрос полностью анонимный
⏱️ Займёт всего 3-5 минут
📈 Результаты опубликуем в подробной статье
Ваши ответы помогут составить реальную картину происходящего в индустрии.
👉 Пройти опрос
Сколько типов серверных элементов управления поддерживает ASP.NET?
В ASP.NET в основном существует четыре различных типа элементов управления на стороне сервера:
✍️ Элементы управления сервером HTML;
✍️ Элементы управления веб-сервером;
✍️ Элементы управления пользователем;
✍️ Элементы управления проверкой.
В ASP.NET в основном существует четыре различных типа элементов управления на стороне сервера:
✍️ Элементы управления сервером HTML;
✍️ Элементы управления веб-сервером;
✍️ Элементы управления пользователем;
✍️ Элементы управления проверкой.
Проверьте свои знания, ответив на 8 вопросов – https://proglib.io/w/ddea6b5b
🧐 Кому подойдет?
Разработчикам, которые знают любой объектно-ориентированный язык программирования и хотят углубиться в архитектурные паттерны.
🎮 Как проходит обучение?
В течение всего интенсива вы будете создавать игру «Звездные войны» и применять ключевые архитектурные паттерны. В процессе изучите:
– Как строить гибкую архитектуру, которая не замедляет разработку
– Как применять IoC-контейнеры и писать модульные тесты
– Как использовать SOLID за пределами ООП
– Как внедрять CI/CD и снижать технический долг
👉 Подробная программа обучения
А по промокоду
Please open Telegram to view this post
VIEW IN TELEGRAM
✍️ Что такое MVVM?
Шаблон MVVM (Model-View-ViewModel) позволяет разделить бизнес-логику от представления, применяется в технологии WPF. Основные элементы:
Модель (Model) описывает используемые в приложении данные. Модели могут содержать логику, непосредственно связанную этими данными, например, логику валидации свойств модели.
Представление (View) — определяет визуальный интерфейс (кнопки, текстовые поля и прочие визуальные элементы), через который пользователь взаимодействует с приложением.
Модель Представления (ViewModel) — связывает модель и представление через механизм привязки данных. Если в модели изменяются значения свойств, автоматически идет изменение отображаемых данных в представлении, хотя напрямую модель и представление не связаны. ViewModel также содержит логику по получению данных из модели, которые потом передаются в представление. И также VewModel определяет логику по обновлению данных в модели.
Шаблон MVVM (Model-View-ViewModel) позволяет разделить бизнес-логику от представления, применяется в технологии WPF. Основные элементы:
Модель (Model) описывает используемые в приложении данные. Модели могут содержать логику, непосредственно связанную этими данными, например, логику валидации свойств модели.
Представление (View) — определяет визуальный интерфейс (кнопки, текстовые поля и прочие визуальные элементы), через который пользователь взаимодействует с приложением.
Модель Представления (ViewModel) — связывает модель и представление через механизм привязки данных. Если в модели изменяются значения свойств, автоматически идет изменение отображаемых данных в представлении, хотя напрямую модель и представление не связаны. ViewModel также содержит логику по получению данных из модели, которые потом передаются в представление. И также VewModel определяет логику по обновлению данных в модели.