آموزش معماری نرم افزار، در دوره آموزش معماری نرم افزار (Software Architecture) دانشجو با اصول طراحی شی گراء، Domain Driven Design، الگوهای طراحی، تفکر DDD ، الگوی CQRS و همچنین Evevnt Sourcing آشنا می گردد.

دوره آموزشی معماری نرم افزارهای Enterprise در دات نت

  • طول دوره: 48
  • مدرس: مهندس رضا ارجمند
  • تاریخ شروع: 1399/05/16
  • ساعت برگزاری: پنجشنبه ها ساعت 17 تا 21
  • مبلغ دوره: 2,100,000

درباره دوره

در این دوره دانشجو با اصول طراحی شی گراء آشنا شده و می تواند کلاس های استاندارد، قابل تست و قابل نگهداری طراحی کند. همچنین با تفکر DDD آشنا شده و میتواند در پروژه های خود از این رویکرد و همچنین تلفیق آن با الگوی CQRS برای توسعه ی نرم افزار استفاده نماید.

پیش نیاز دوره

با توجه به تخصصی بودن دوره آموزشی معماری نرم افزارهای Enterprise در دات نت مخاطبین می بایست حداقل 3 سال سابقه کار برنامه نویسی داشته باشند.

مخاطبین دوره

  • آن دسته از برنامه نویسانی که به مباحث طراحی و معماری نرم افزار علاقمند بوده و قصد دارند تا با بروزترین روش های طراحی و معماری آشنا شوند.
  • شرکت های تولید نرم افزار و سازمان هایی که به دنبال معماری مناسب جهت پیاده سازی نرم افزارهای تجاری بزرگ با کیفیت، قابل تست، مقیاس پذیر و توزیع شده با بازدهی بالا هستند.
  • آن دسته از برنامه نویسانی که قصد دارند در تیم های حرفه ای توسعه ی نرم افزار جهت انجام پروژه های بزرگ شرکت داشته باشند.

اهداف دوره

در این دوره دانشجو با اصول طراحی شی گراء آشنا شده و می تواند کلاس های استاندارد، قابل تست و قابل نگهداری طراحی کند. همچنین با تفکر DDD آشنا شده و می تواند در پروژه های خود از این رویکرد و همچنین تلفیق آن با الگوی CQRS برای توسعه ی نرم افزار استفاده نماید. در این دوره سعی شده است تا الگوهای طراحی (Design Patterns) نیز به شکل کاملا عملی و به صورت مثال در حین جلسات کلاس به دانشجویان آموزش داده شود.

سرفصل دوره آموزشی

اصول طراحی

  • آشنایی با Design Smell های متداول و نشانه های آنها
  • اصول طراحی SOLID
  • Single Responsibility Principle
  • Open/closed principle
  • Liskov substitution principle
  • Interface segregation principle
  • Dependency inversion principle
  • آشنایی با تکنیک Dependency Injection
  • آشنایی با IoCC های معروف دات نت و نحوه ی استفاده از آنها
  • نگاهی بر الگوی Service Locator
  • آشنایی با اصول KISS، DRY، YAGNI، SoC

تست نرم افزار

طراحی پیشرفته آبجکت

  • آشنایی با انواع تست نرم افزار (Unit Testing، Integration Testing و ... )
  • آشنایی با رویکرد Test Driven Development و مفاهیم آن
  • اصول نوشتن Unit Test و کار با MS Test
  • تکنیک Mocking و کار با کتابخانه ی Moq جهت پیاده سازی آن
  • استفاده از ابزارهای ویژوال استودیو جهت ساخت کتابخانه های Fake جهت تست

Domain Driven Design

  • آشنایی با تفکر و رویکرد Domain-Driven در طراحی نرم افزار
  • مفاهیم Domain، Domain Model، Ubiquitous Language و ...
  • مفهوم Sub-Domain و انواع آن (Core، Generic، Supporting)
  • آشنایی با Bounded Context و سند Context Map
  • پیاده سازی ACL ها جهت ارتباط بین Bounded Context ها
  • مفهوم Aggregate و Aggregate Root
  • مفهوم Entity و Value Object
  • آشنایی با Service های مختلف (Domain Service، Application Service و ... )
  • آشنایی با Domain Event ها

معماری نرم افزار

  • آشنایی با Onion Architecture (معماری پیاز) و نحوه ی لایه بندی در آن
  • لایه Domain
  • مفهوم Business Logic و نحوه جداسازی آن از زیرساخت نرم افزار
  • اصل Persistence Ignorance
  • یادگیری الگوهای متداول این لایه :

    • Factory Method Pattern
    • State Pattern
    • Template Method Pattern
    • Decorator Pattern
    • Strategy Pattern
  • Specification & Composite Specification
  • لایه Application
  • مفهوم Application Logic و وظایف لایه ی Application
  • نگاهی بر سرویس های مبتنی بر Workflow و آشنایی با WF
  • یادگیری الگوهای متداول این لایه :

    • Observer Pattern
    • Mediator Pattern
    • Event Aggregator Pattern
    • Adapter Pattern
    • Command Pattern
    • لایه Service
  • نگاهی بر SOA و اصول آن
  • آشنایی با REST و سرویس های RESTful
  • پیاده سازی سرویس های RESTful باNET Web API
  • نگاهی بر سرویس های SOAP و WCF
  • لایه DataAccess
  • نگاهی بر ORM های معروف دات نت
  • مقایسه ی  EF Core و NHibernate و استفاده از آن در رویکرد DDD
  • آشنایی با NHibernate
  • آشنایی با انوع Mapping در NHibernate
  • آشنایی با Session ها در NHibernate
  • آشنایی با Component Mapping، Collection Mapping، Inheritance Mapping و ... در NHibernate
  • یادگیری نحوه ی Map کردن Entity ها و Value Object ها در NHibernate
  • مدیریت همزمانی (Concurrency) در NHibernate
  • کار با Interceptor ها، Event ها و Caching در NHibernate
  • Connection و Transaction
  • یادگیری الگوهای متدوال برای کار با پایگاه داده :

    • Repository
    • Unit of Work
    • Transaction Per Request
    • Transaction Per Use Case
  • لایه Presentation
  • نگاهی بر مفهوم Task-Based UI
  • نگاهی بر برنامه های وب تک صفحه ای - Single Page Applications
  • نگاهی بر Rich Desktop Clients
  • آشنایی با الگوی MVC و فریم ورک های متدوال جاوا اسکریپت مانند Angular 
  • آشنایی با الگوی MVVM و پیاده سازی آن در WPF
  • آشنایی با فریم ورک های جاوا اسکریپت تحت MVVM مانند Knockout JS
  • Cross Cuttings
  • Security
  • آشنایی با مفهوم Claim-Based Identity
  • آشنایی با OAuth 2
  • آشنایی با پروژه ی OWIN و Katana
  • یادگیریNET Identity
  • پیاده سازی مکانیزم احراز هویت باNET Identity و OWIN
  • Logging
  • پیاده سازی مکانیزم ثبت رویداد ها (Event Log)
  • پیاده سازی مکانیزم ثبت Exception Log و معرفی کتابخانه های مرتبط
  • پیاده سازی مکانیزم ثبت Audit Log
  • Caching
  • Configuration Management

الگوی CQRS

  • آشنایی با الگوی CQRS
  • آشنایی با مفهوم Eventual Consistency و مدل BASE
  • آشنایی با Command ها و Command Handler ها
  • آشنایی با Event ها و Event Handler ها
  • آشنایی با Event Bus و Command Bus
  • Messaging و معماری Event-Driven
  • آشنایی با MSMQ
  • آشنایی با مفهوم Service Bus در SOA
  • پیاده سازی زیر ساخت Messaging با RhinoBus