دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش: نویسندگان: Bob Gregory, Harry Percival سری: ISBN (شابک) : 9781492052203 ناشر: O'Reilly Media, Inc. سال نشر: 2020 تعداد صفحات: زبان: English فرمت فایل : EPUB (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود) حجم فایل: 7 Mb
در صورت تبدیل فایل کتاب Architecture Patterns with Python: Enabling Test-Driven Development, Domain-Driven Design, and Event-Driven Microservices به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب الگوهای معماری با پایتون: توسعه آزمایش مبتنی بر آزمون ، طراحی دامنه محور و ریز سرویس های مبتنی بر رویداد نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
با افزایش محبوبیت پایتون، پروژه ها بزرگتر و پیچیده تر می شوند. بسیاری از توسعه دهندگان پایتون اکنون به الگوهای معماری نرم افزاری سطح بالا مانند معماری شش ضلعی/تمیز، معماری رویداد محور و الگوهای استراتژیک تجویز شده توسط طراحی دامنه محور (DDD) علاقه مند هستند. اما ترجمه آن الگوها به پایتون همیشه ساده نیست. با این راهنمای عملی، هری پرسیوال و باب گرگوری از MADE.com الگوهای طراحی معماری اثبات شده ای را برای کمک به توسعه دهندگان پایتون در مدیریت پیچیدگی برنامه ها معرفی می کنند. هر الگو با مثال های عینی در Python اصطلاحی نشان داده شده است که توضیح می دهد چگونه از برخی از پرحرفی های غیرضروری زبان جاوا و سی شارپ اجتناب کنید. شما یاد خواهید گرفت که چگونه هر یک از این الگوها را به روش پایتونیک پیاده سازی کنید. الگوهای طراحی معماری عبارتند از: وارونگی وابستگی و پیوندهای آن به پورتها و آداپتورها (معماری شش ضلعی/تمیز) تمایز طراحی مبتنی بر دامنه بین موجودیتها، اشیاء ارزشی و تجمیع الگوهای مخزن و واحد کار برای ذخیرهسازی مداوم رویدادها، دستورات و پیام bus Command Query Responsibility Segregation (CQRS) معماری رویداد محور و میکروسرویس های واکنشی
As Python continues to grow in popularity, projects are becoming larger and more complex. Many Python developers are now taking an interest in high-level software architecture patterns such as hexagonal/clean architecture, event-driven architecture, and strategic patterns prescribed by domain-driven design (DDD). But translating those patterns into Python isn't always straightforward. With this practical guide, Harry Percival and Bob Gregory from MADE.com introduce proven architectural design patterns to help Python developers manage application complexity. Each pattern is illustrated with concrete examples in idiomatic Python that explain how to avoid some of the unnecessary verbosity of Java and C# syntax. You'll learn how to implement each of these patterns in a Pythonic way. Architectural design patterns include: Dependency inversion, and its links to ports and adapters (hexagonal/clean architecture) Domain-driven design's distinction between entities, value objects, and aggregates Repository and Unit of Work patterns for persistent storage Events, commands, and the message bus Command Query Responsibility Segregation (CQRS) Event-driven architecture and reactive microservices
Предисловие Управлять сложностью, решая бизнес-задачи Почему Python? TDD, DDD и событийно-управляемая архитектура Для кого эта книга Краткий обзор книги Дополнительные материалы Примеры кода и работа с ним Условные обозначения Благодарности От издательства Введение Почему в проекте что-то идет не так? Инкапсуляции и абстракции Разделение на слои Принцип инверсии зависимостей Место для всей бизнес-логики: модель предметной области Часть I. Создание архитектуры для поддержки моделирования предметной области Глава 1. Моделирование предметной области Что такое модель предметной области? Изучение языка предметной области Юнит-тестирование моделей предметных областей Не все должно быть объектом: функция службы предметной области Глава 2. Паттерн «Репозиторий» Организация постоянного хранения модели предметной области Немного псевдокода: что нам потребуется? Применение принципа инверсии зависимостей для доступа к данным Напоминание: наша модель Введение паттерна «Репозиторий» Теперь поддельный репозиторий для тестов создается просто! Что такое порт и что такое адаптер в Python? Выводы Глава 3. О связанности и абстракциях Абстрагирование состояния способствует тестопригодности Выбор правильной абстракции (-й) Реализация выбранных абстракций Выводы Глава 4. Первый вариант использования: API фреймворка Flask и сервисный слой Соединение приложения с реальным миром Первый сквозной тест Простая реализация Состояния ошибок, требующие проверки базы данных Введение сервисного слоя и использование поддельного репозитория для юнит-теста Почему все называется службой? Складываем все в папки, чтобы понять, где оно находится Выводы Глава 5. TDD на верхней и нижней передачах Как выглядит пирамида тестирования? Должны ли тесты слоя предметной области перейти в сервисный слой? Какие тесты писать Верхняя и нижняя передачи Устранение связей в тестах сервисного слоя от предметной области Улучшение посредством сквозных тестов Выводы Глава 6. Паттерн «Единица работы» Паттерн «Единица работы» сотрудничает с репозиторием Тестирование Единицы работы с интеграционными тестами Единица работы и ее контекстный менеджер Использование паттерна «Единица работы» в сервисном слое Явные тесты для форм поведения по фиксации/откату Явные и неявные фиксации Примеры: использование паттерна «Единица работы» для группировки многочисленных операций в атомарную единицу Приведение в порядок интеграционных тестов Выводы Глава 7. Агрегаты и границы согласованности Почему бы просто не записать все в электронную таблицу? Инварианты, ограничения и согласованность Что такое агрегат? Выбор агрегата Один агрегат = один репозиторий А что на счет производительности? Оптимистичная конкурентность с номерами версий Тестирование правил целостности данных Выводы Итоги части I Часть II. Событийно-управляемая архитектура Глава 8. События и шина сообщений Как избежать беспорядка Принцип единственной обязанности Катимся на шине сообщений! Вариант 1: сервисный слой берет события из модели и помещает их в шину сообщений Вариант 2: сервисный слой инициирует собственные события Вариант 3: Единица работы публикует события в шине сообщений Выводы Глава 9. Катимся в город на шине сообщений Новое требование приводит к новой архитектуре Рефакторинг функций служб для обработчиков сообщений Реализация нового требования Тест-драйв нового обработчика Необязательно: юнит-тест обработчиков событий в изоляции с помощью поддельной шины сообщений Выводы Глава 10. Команды и обработчик команд Команды и события Различия в обработке исключений События, команды и обработка ошибок Синхронное восстановление после ошибок Выводы Глава 11. Событийно-управляемая архитектура: использование событий для интеграции микросервисов Распределенный комок грязи, или мыслить существительными Обработка ошибок в распределенных системах Альтернатива: временное устранение связанности при помощи асинхронного обмена сообщениями Использование канала «издатель/подписчик» хранилища Redis для интеграции Тестирование с помощью сквозного теста Внутренние события против внешних Выводы Глава 12. Разделение ответственности команд и запросов Модели предметной области для записи Большинство пользователей не собираются покупать вашу мебель PRG и разделение команд и запросов Хватайте свой обед, ребята Тестирование представлений CQRS «Очевидная» альтернатива 1: использование существующего репозитория Модель предметной области не оптимизирована для операций чтения «Очевидная» альтернатива № 2: использование ORM SELECT N+1 и другие соображения по поводу производительности Время прыгать через акулу Изменить реализацию модели чтения очень просто Выводы Глава 13. Внедрение зависимостей (и начальная загрузка) Неявные зависимости против явных Разве явные зависимости не кажутся странными и Java-подобными? Подготовка обработчиков: внедрение зависимостей вручную с помощью замыканий и частичных применений Альтернатива с использованием классов Сценарий начальной загрузки Шина сообщений получает обработчики во время выполнения Использование начальной загрузки в точках входа Внедрение зависимостей в тестах «Правильное» создание адаптера: рабочий пример Выводы Эпилог И что теперь? Как мне добраться туда? Разделение запутанных обязанностей Определение агрегатов и ограниченных контекстов Управляемый событиями подход для перехода к микросервисам через паттерн «Душитель» Как убедить стейкхолдеров попробовать что-то новое Вопросы наших научных редакторов, которые мы не включили в основной текст Выстрел в ногу Книги для обязательного прочтения Выводы Приложение А. Сводная диаграмма и таблица Приложение Б. Шаблонная структура проекта Приложение В. Замена инфраструктуры: делам все с помощью CSV Приложение Г. Паттерны «Репозиторий» и «Единица работы» с Django Приложение Д. Валидация Об авторах Об обложке