• تهرانپارس ، خ شهید محمود آمینه بزرگراه رسالت، پلاک 213، طبقه2، واحد7

  • 021-77295097 0912-8099518

  • شنبه تا پنجشنبه۹ صبح تا ۶ بعد از ظهر

پکیج آموزش معماری پیاز(Onion Architecture)

درباره دوره

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

تاریخ شروعتعداد ساعتساعت برگزارینام استادهزینه (تومان)وضعیتثبت نام
1399/05/1648پنجشنبه ها ساعت 17 تا 21مهندس رضا ارجمند2,100,000درحال ثبت نامثبت نام

پیشنیاز ها

با توجه به تخصصی بودن دوره آموزشی معماری نرم افزارهای 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