دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش: [1 ed.]
نویسندگان: Karthik Krishnan. Premanand Chandraseka
سری:
ISBN (شابک) : 9781800560734
ناشر: Packt
سال نشر: 2022
تعداد صفحات: 302
[303]
زبان: English
فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود)
حجم فایل: 22 Mb
در صورت تبدیل فایل کتاب Domain-Driven Design with Java به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب طراحی دامنه محور با جاوا نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
شرح اتخاذ یک رویکرد کاربردی و مدرن برای معماری و پیاده سازی راه حل های الهام گرفته از DDD برای تبدیل ایده های کسب و کار انتزاعی به نرم افزار کاربردی در سراسر طیف چرخه عمر توسعه نرم افزار ویژگی های کلیدی: اصول DDD را برای ایجاد راه حل های ساده، موثر و با فاکتور مناسب اجرا کنید از تکنیک های مدل سازی سبک وزن برای رسیدن به درک جمعی مشترک از حوزه مشکل استفاده کنید با استفاده از الگوهای طراحی مدرن، برنامه های یکپارچه را به اجزای توزیع شده و با جفت آزاد تجزیه کنید توضیحات کتاب: طراحی دامنه محور (DDD) مجموعهای از تکنیکها و الگوها را در دسترس قرار میدهد که متخصصان حوزه، معماران و توسعهدهندگان را قادر میسازد تا با هم کار کنند تا مشکلات پیچیده کسبوکار را به مجموعهای از زیرسیستمهای دارای فاکتور، مشارکتکننده و آزادانه تجزیه کنند. این راهنمای عملی به شما به عنوان یک توسعهدهنده و معمار کمک میکند تا دانش خود را به کار ببندید تا طرحهای نرمافزاری ظریفی ایجاد کنید که کار کردن با آنها لذتبخش است و استدلال کردن در مورد آنها آسان است. شما با مقدمهای بر مفاهیم طراحی مبتنی بر دامنه شروع میکنید و راههای مختلفی را برای اعمال آنها در سناریوهای دنیای واقعی کشف میکنید. همچنین در هنگام ایجاد راهحلهای بومی ابری که از تکنیکهای مدرن مانند میکروسرویسهای رویداد محور و معماریهای ریزدانه استفاده میکنند، DDD بسیار مرتبط است. با پیشروی در فصول، با مفاهیم اصلی طراحی استراتژیک DDD مانند زبان فراگیر، نقشههای زمینه، زمینههای محدود، و عناصر طراحی تاکتیکی مانند مجموعهها و مدلهای دامنه و رویدادها آشنا میشوید. شما میدانید که چگونه تکنیکهای مدلسازی مدرن و سبک مانند بوم ارزش تجاری، نقشهبرداری واردلی، داستانسرایی دامنه، و طوفان رویداد را به کار ببرید، در حالی که همچنین یاد میگیرید که چگونه سیستم را آزمایش کنید تا راهحلهایی ایجاد کنید که درجات بالایی از کیفیت داخلی را نشان میدهند. در پایان این کتاب طراحی نرمافزار، میتوانید راهحلهای نرمافزاری توزیعشده قوی، انعطافپذیر و کارآمد را معمار، طراحی و پیادهسازی کنید. آنچه خواهید آموخت: نحوه ایجاد درک مشترک از حوزه مشکل را کشف کنید یک مرزبندی واضح بین سیستم های هسته ای و محیطی ایجاد کنید نحوه تکامل و تجزیه سیستم های پیچیده به اجزای با فاکتور مناسب را شناسایی کنید از تکنیک های شرح و بسط مانند داستان سرایی دامنه و طوفان رویداد استفاده کنید پیاده سازی EDA، CQRS، رویداد منبع یابی، و بسیاری دیگر اکوسیستمی از ریزسرویسهای منسجم، آزادانه و توزیعشده طراحی کنید اجرای یک سیستم رویداد محور در جاوا را تست درایو کنید درک کنید که چگونه الزامات غیرعملکردی بر تجزیه بافت محدود تأثیر می گذارد این کتاب برای چه کسانی است: این کتاب برای برنامه نویسان جاوا متوسط است که به دنبال ارتقای مهارت های مهندسی نرم افزار خود و اتخاذ یک رویکرد مشارکتی و ساختار یافته برای طراحی سیستم های نرم افزاری پیچیده هستند. به طور خاص، این کتاب به توسعه دهندگان ارشد و معماران عملی کمک می کند تا درک عمیق تری از طراحی دامنه محور به دست آورند و آن را در سازمان خود پیاده سازی کنند. آشنایی با تکنیک های DDD پیش نیاز نیست. با این حال، دانش کاری جاوا مورد انتظار است.
Description Adopt a practical and modern approach to architecting and implementing DDD-inspired solutions to transform abstract business ideas into working software across the entire spectrum of the software development life cycle Key Features: Implement DDD principles to build simple, effective, and well-factored solutions Use lightweight modeling techniques to arrive at a common collective understanding of the problem domain Decompose monolithic applications into loosely coupled, distributed components using modern design patterns Book Description: Domain-Driven Design (DDD) makes available a set of techniques and patterns that enable domain experts, architects, and developers to work together to decompose complex business problems into a set of well-factored, collaborating, and loosely coupled subsystems. This practical guide will help you as a developer and architect to put your knowledge to work in order to create elegant software designs that are enjoyable to work with and easy to reason about. You'll begin with an introduction to the concepts of domain-driven design and discover various ways to apply them in real-world scenarios. You'll also appreciate how DDD is extremely relevant when creating cloud native solutions that employ modern techniques such as event-driven microservices and fine-grained architectures. As you advance through the chapters, you'll get acquainted with core DDD's strategic design concepts such as the ubiquitous language, context maps, bounded contexts, and tactical design elements like aggregates and domain models and events. You'll understand how to apply modern, lightweight modeling techniques such as business value canvas, Wardley mapping, domain storytelling, and event storming, while also learning how to test-drive the system to create solutions that exhibit high degrees of internal quality. By the end of this software design book, you'll be able to architect, design, and implement robust, resilient, and performant distributed software solutions. What You Will Learn: Discover how to develop a shared understanding of the problem domain Establish a clear demarcation between core and peripheral systems Identify how to evolve and decompose complex systems into well-factored components Apply elaboration techniques like domain storytelling and event storming Implement EDA, CQRS, event sourcing, and much more Design an ecosystem of cohesive, loosely coupled, and distributed microservices Test-drive the implementation of an event-driven system in Java Grasp how non-functional requirements influence bounded context decompositions Who this book is for: This book is for intermediate Java programmers looking to upgrade their software engineering skills and adopt a collaborative and structured approach to designing complex software systems. Specifically, the book will assist senior developers and hands-on architects to gain a deeper understanding of domain-driven design and implement it in their organization. Familiarity with DDD techniques is not a prerequisite; however, working knowledge of Java is expected.
Cover Copyright Contributors Table of Contents Preface Part 1: Foundations Chapter 1: The Rationale for Domain-Driven Design Why do software projects fail? Inaccurate requirements Too much architecture Too little architecture Excessive incidental complexity Uncontrolled technical debt Ignoring non-functional requirements Modern systems and dealing with complexity How software gets built Complexity is inevitable Optimizing the feedback loop What is DDD? Understanding the problem using strategic design Promoting a shared understanding using a ubiquitous language Implementing the solution using tactical design Why is DDD relevant? Why now? Rise of open source Advances in technology Rise of distributed computing Summary Further reading Chapter 2: Where and How Does DDD Fit? Architecture styles Layered architecture Vertical slice architecture Service-oriented architecture (SOA) Microservices architecture Event-driven architecture (EDA) Command Query Responsibility Segregation (CQRS) Serverless architecture The big ball of mud Which architecture style should you use? Programming paradigms Object-oriented programming Functional programming Which paradigm should you choose? Summary Part 2: Real-World DDD Chapter 3: Understanding the Domain The domain of international trade International trade at KP Bank Understanding international trade strategy at KP Bank The business model canvas The lean canvas Impact maps Wardley maps International trade products and services Summary Further reading Chapter 4: Domain Analysis and Modeling Technical requirements Understanding a letter of credit An LC issuance application Enhancing shared understanding Domain storytelling Using DST for an LC application EventStorming Introducing EventStorming Using EventStorming for the LC issuance application Summary Further reading Chapter 5: Implementing Domain Logic Technical requirements Continuing our design journey Implementing the command side Tooling choices Bootstrapping the application Identifying commands Identifying aggregates Test-driving the system Implementing the command Implementing the event Designing the aggregate Persisting aggregates State-stored aggregates Event-sourced aggregates Persistence technology choices Which persistence mechanism should we choose? Enforcing policies Summary Further reading Chapter 6: Implementing the User Interface – Task-Based Technical requirements API styles CRUD-based APIs Task-based APIs Task-based or CRUD-based? Bootstrapping the UI Implementing the UI MVVM primer Creating a new LC Declarative view View delegate View-model Summary Further reading Chapter 7: Implementing Queries Technical requirements Continuing our design journey Implementing the query side Tooling choices Identifying queries Creating the query model Query-side persistence choices Exposing a query API Advanced query scenarios Historic event replays Types of replays Event replay considerations Event design Event handlers with side effects Summary Further reading Chapter 8: Implementing Long-Running Workflows Technical requirements Continuing our design journey Implementing sagas Orchestration Choreography Handling deadlines Summary Further reading Chapter 9: Integrating with External Systems Continuing our design journey Bounded context relationships Symmetric relationship patterns Asymmetric relationship patterns Implementation patterns Data-based Code-based IPC-based Summary Further reading Part 3: Evolution Patterns Chapter 10: Beginning the Decomposition Journey Continuing our design journey Decomposing our monolith Changes to frontend interactions Protocol options Transport format Compatibility and versioning REST APIs Changes for event interactions Changes in database interactions Data migration Cut-over Summary References Chapter 11: Decomposing into Finer-Grained Components Continuing our design journey Saga as a standalone component Commands and queries as standalone components Distributing individual query components Even more fine-grained decomposition Effects on the domain model Decomposing the frontend Where to draw the line Team organization Summary Further reading Chapter 12: Beyond Functional Requirements Observability Technology metrics Business metrics DevOps metrics Consistency Performance and scale Trunk-based development Continuous testing Contract testing Mutation testing Chaos testing Deployment automation Refactoring Breaking an existing monolith Merging into coarse-grained bounded contexts Invocation style Synchronous invocation Asynchronous invocation Logging Segregating logging code Dealing with sensitive data Log format Log aggregation Tracing Versioning Components APIs Data Summary Closing thoughts Index Other Books You May Enjoy