حل مسئلههای بزرگ و پیچیده بدون تجزیه و تحلیل صحیح آن امری است غیر ممکن. تجزیه و تحلیل درست به دست نمیآید مگر با جلسات و تعاملات بسیار زیاد با افرادی که به محدوده کاری مسلط هستند. چگونگی تشکیل جلسات و نحوه تعامل و نحوه ایجاد مدل صحیح برای توسعه از مواردی هستند که ما در این آموزش قصد بررسی و آموزش آن را داریم.
1.790.000 تومان
DDD به طور مختصر روشی جهت توسعه نرمافزار است که توسط آقای Eric Evans در سال ۲۰۰۲ معرفی شد و از آن زمان به بعد در دنیای توسعه نرمافزار مورد استفاده بود. اما در سالهای اخیر با پیشرفتهایی که در حوزه ابزارهای توسعه نرمافزار اتفاق افتاده و در کنار آن کاربرد هرچه بیشتر نرمافزار و پیچیده شدن آنها استفاده از این روش بیش از پیش مورد توجه توسعهدهندگان قرار داده است. مطالبی که در این بخش بررسی میکنیم عبارتند از:
● آشنایی با فلسفه DDD ● آشنایی با مشکلات و پیچیدگیهای توسعه نرمافزار ● چگونه DDD به مدیریت پیچیدگیها کمک میکند؟ ● آیا فقط روشی جهت پیادهسازی داریم یا برای سایر قسمتهای توسعه نیز راهنمایی داریم؟ ● اشتباهات رایج در مورد DDD ● چرا نیاز به تجزیه مسئله داریم؟ ● چگونه به یک دانش و زبان مشترک در مورد صورت مسئله برسیم؟ ● Domain Expert کیست و نقش او در توسعه نرمافزار چیست؟ ● بررسی روشهای بهینه جهت جمعآوری اطلاعات ● چرا باید مسئله بزرگ را به زیر مسئلهها خورد کنیم؟ ● چگونه مسئله اصلی را از بین مجموعهای از زیر مسئلهها تعیین کنیم؟ ● چگونه منابع خود را به مسئلههای مختلف تخصیص دهیم؟ ● دامنه اصلی برنامه و دامنه پشتیبان چیست؟ ● آیا باید همه قسمتهای برنامه را به بهترین شکل ممکن طراحی و توسعه دهیم؟
هدف اصلی در DDD مدیریت پیچیدگیها است. یکی از پیچیدگیهایی که در هنگام توسعه نرمافزار با آن سر و کار داریم مربوط به نحوه پیادهسازی دامنه برنامه است. باید به روشی دامنه برنامه را توسعه دهیم که برای نیازهای آتی قابل توسعه باشد و به سادگی بتوان آن را در آینده توسعه داد. الگوهای مختلفی برای پیادهسازی دامنه برنامه وجود دارد که در این قسمت به بررسی این الگوها میپردازیم.
● Rich Domain Model ● Anemic Domain Model ● Transaction Script و مزایا و معایب آن ● Table Module چیست و چه زمانی کاربرد دارد؟ ● Active Record
● آشنایی با Domain Event ● Domain Eventها چه وظیفه ای به عهده دارند ● نقش Domain Eventها در Domain ● نقش Domain Event در Application ● پیاده سازی کمک رخدادها در دات نت ● In memory Bus ● استفاده از Ioc Container برای پیاده سازی Domain Event
در یک نرمافزار بسیار بزرگ این احتمال وجود دارد که نیاز باشد نرمافزار را به قسمتهای مختلفی تقسیم کنیم و هر قسمت را به طور جداگانه طراحی و پیادهسازی کنیم. جدا بودن این قسمتها میتواند در لایه کد یا دیتابیس و حتی تیم و زبان برنامهنویسی توسعه باشد. با این حال در انتها تمام این قسمتها باید بتوانند با یکدیگر ارائه خدمات داشته باشند تا به یک نرمافزار جامع برسیم. چگونگی انجام این کار و چالشهای پیش رو مسئلهای است که در این قسمت آن را بررسی میکنیم.
● یک مدل بسیار بزرگ پیچیدگی زیادی دارد ● چگونگی اشتراک یک مدل بزرگ بین تیم ها و مشکلات آن ● تفاوت واژه ها در بین تیم های مختلف و ایرادات آن ● چگونگی کار با کدهای قدیمی در یک مدل بسیار بزرگ ● چگونه برنامه خود را به قسمت های کوچک و منسجم تقسیم کنیم؟ ● تعیین محدوده قسمت ها برنامه و جلوگیری از تاثیر متقابل روی هم ● Subdomai چیست؟ ● Bonded Context چیست؟ ● تفاوت BC و SD ● چگونگی برقراری ارتباط بین قسمت های مختلف ● Shared kernel چیست؟ ● آشنایی با Anticorruption Layer
Application هنگام توسعه به روش DDD راهکارهایی به ما داده میشود که پیچیدگیهای تکنولوژی را از پیچیدگیهای واقعی پروژه تشخیص دهیم و به درستی پیادهسازی کنیم اما برای هر پروژهای باید معماری و لایهبندی مناسبی داشته باشیم تا بتوانیم در آینده به خوبی پروژه را توسعه دهیم. در این قسمت با معماری پروژه و چگونگی انجام آن آشنا میشویم.
● آشنایی کلی با معماری پروژه ● چگونه یک معماری خوب منجر به جداسازی پیچیدگیهای تکنولوژی از دامنه برنامه میشود؟ ● طراحی و پیادهسازی یک پروژه چند لایه ● معکوسسازی وابستگی و نقش آن در لایهبندی برنامه ● لایه دامنه و نحوه پیادهسازی آن ● Application Layer Service چیست و چه کاربردی دارد؟ ● Infrastructure چیست و چه قسمتهایی در آن پیادهسازی میشوند؟ ● نحوه برقراری ارتباط بین لایههای مختلف
هنگامی که در حال تجزیه و تحلیل برنامههای خود هستیم بعضا با کلاسها و اشیایی مواجه میشویم که در برنامه با یک مشخصه خاص قابل شناسایی هستند. مثل یک مشتری خاص در یک برنامه فروشگاهی. اینجا با مفهوم Entity سر و کار داریم. و در ادامه به بررسی بایدها و نبایدهای آن و چگونگی پیادهسازی آن میپردازیم.
● Entity چیست؟ ● چگونه Entityها را در برنامه خود تشخیص دهیم؟ ● تفاوت Entityها با Value Object ها ● الگوی State و کاربرد آن در Entityها ● الگوی Memento و کاربرد آن در توسعه Entityها ● Value object چیست؟ ● نقش Value Objectها در DDD ● آشنایی با ویژگیهای Value Objectها ● نحوه پیادهسازی Value Objectها ● ذخیره و بازیابی مقادیر به کمک NoSqlها
هنگامی که در حال توسعه نرمافزار هستیم متوجه خواهیم شد که فقط Entityها و Value Objectها نسیتند که برای ما اهمیت دارند و میتوانند مسئله ما را حل کنند. بلکه بعضا روابط بین اشیا و پیچیدگیهایی که این روابط ایجاد میکنند هم برای ما اهمیت پیدا میکند. این روابط برای ما به کمک Aggregateها طراحی و پیادهسازی میشود. ● چگونگی برخورد با پیچیدگی هنگام کار با روابط بین اشیا ● چرا Aggregateها برای ما اهمیت دارند؟ ● Aggregate root چیست؟ ● آشنایی با وظایف Aggregate root ● بررسی انواع روابط در Aggregateها ● نحوه ذخیره و بازیابی Aggregateها
هنگامی که در حال توسعه نرمافزار هستیم با Entityها Value Objectها و Aggregateها سر و کار داریم و به مرور هر چه برنامه ما بزرگتر شود تعداد و در هم تنیدگی این اجزا نیز بیشتر میشود. و مسلما به مرور یکی از صورت مسئلههایی که با آن مواجه میشویم ارائه راه حل مناسب جهت نمونهسازی از این اجزا میباشد.
● چگونه نمونهسازی از استفاده جدا می شود؟ ● استفاده از الگوی Factory Method برای ایجاد نمونه جدید ● استفاده از Factory Method جهت باز سازی نمونه ● چه زمانی از Factory استفاده میکنیم؟ ● Repository چیست و نقش آن در برنامه ما چیست؟ ● بررسی اشتباهات رایج در مورد Repository ● Domain Model چیست و چه تفاوتی با Data Modelدارد؟ ● آشنایی با فریمورکهای ذخیرهسازی اطلاعات
● Domain Service چیست؟ ● بررسی انواع سرویس و تشخیص تفاوتها آنها ● چه زمانی از Domain Serviceاستفاده میکنیم؟ ● استفاده از Domain Eventها ● نحوه ارتباط Entity ها و Domain Serviceها ● الگوهای پرکاربرد برای توسعه سرویسها
هنگامی که با DDD سر و کار داریم به مرور متوجه میشویم در صورتی که با رخدادهای سیستم به خوبی آشنا شویم و راهحل بهینه برای مدیریت این رخدادها داشته باشیم نرمافزار بهتری خواهیم داشت. رخدادهایی که در دامنه برنامه ما اتفاق میافتند را اصلاحات Domain Event مینامیم. یکی از دستاوردهایی که در تعامل با Domain Expertها خواهیم داشت به دست آوردن اطلاعات مناسب از همین رخدادها خواهد بود.
نگهداری تاریخچه تغییرات از نیازهایی است که همیشه در نرمافزارها مسئله اصلی بوده. نیازهای سختافزاری و پیچیدگیهای نرمافزار برای پیادهسازی یک تاریخچه خوب میتواند موجب شکست یا موفقیت یک پروژه بزرگ شود. یکی از روشهایی که جهت نگهداری این تاریخچه مورد استفاده قرار میگیرد Event Sourcing است که در ادامه به بررسی جزئیات آن میپردازیم.
● آشنایی با Event Sourcing ● چه مسائلی را برای ما حل میکند؟ ● چگونه یک Event Store داشته باشیم؟ ● استفاده از SQL و NoSQLها برای نگهداری تاریخچه ● بررسی رابطه Event Sourcing با CQRS
در این کارگاه ها سه قسمتی به پیاده سازی تمامی موارد آموزشی این دوره میپردازیم
علیرضا ارومند به عنوان Technical Manager شرکت داتین (وابسته به فناپ) در حوزه پروژههای بانکی فعال است.او همچنین مدرس و Technical Manager پروژههای نیک آموز می باشد از دیگر تخصص های او میتوان به: تولید فریمورک برنامه نویسی فوق العاده حرفهای با مدیریت بیش از ۱ میلیون تراکنش در ثانیه، همکاری با تیم توسعه شرکت ارتباط فردا (بانک آینده)، مشاور فنی شرکت توسعه رفاه پردیس (بانک رفاه)، مدیر فنی خبرگزاری نسیم، سخنران تنها همایش مورد تایید مایکروسافت در خاورمیانه در حوزه ASP.NET Core، مدیر فنی خبرگزاری بین المللی پیامکوتاه نسیم (برنده جشنواره وب ایران)، مدرس دوره های Dot Net ، ASP.NET در نیک آموز، همکاری با تیم توسعه شرکت ارتباط فردا (وابسته به بانک آینده)، کارشناس ارشد و معمار نرم افزار شرکت هایپرمدیا، کارشناس توسعه نرم افزارهای آنلاین بورس شرکت تدبیرپرداز، معمار نرم افزار و توسعه دهنده سیستم های اداری مرکزتحقیقات ساختمان و مسکن وزارت مسکن، مشاور IT معاون وزیر مسکن و شهرسازی در مرکزتحقیقات ساختمان و مسکن، برگزاری دوره آموزش برنامه نویسی وب برای تیم فنی خبرگزاری بین المللی نسیم.
پس از ثبت سفارش، به حساب کاربری خود در سایت نیکآموز وارد شده و در بخش «دانلودها» اقدام به دانلود جلسات دوره خریداری شده کنید
ارسال به تهران: طی 24 ساعت کاری پس از ثبت سفارش، هماهنگی لازم جهت ارسال بسته با پیک توسط تیم پشتیبانی با شما انجام خواهد شد.
ارسال به خارج از تهران: طی 24 ساعت کاری پس از ثبت سفارش، بسته ارسالی با آدرس ثبت شده در پنل کاربری، به اداره پست تحویل داده میشود. زمان ارسال و تحویل بسته به شما، منوط به زمانبندی اداره پست بوده و از 2 الی 5 روز کاری متغیر خواهد بود.
پس ثبت و نهایی شدن سفارش شما در سایت نیکآموز، تیم پشتیبانی طی 24 تا 72 ساعت کاری با شما تماس خواهند گرفت تا فرایند عضو شدن شما در گروه پشتیبانی تلگرامی هر دوره انجام شود.
در صورت وجود هر گونه سوال و ابهامی میتوانید با شمارههای شرکت تماس حاصل فرمایید و یا از طریق بخش چت پشتیبانی سایت، سوالات خود را مطرح نمایید
با همهگیری بیماری کووید در سراسر دنیا در سال 1398، مجموعه نیکآموز برگزاری کلاسهای حضوری را متوقف کرده و پس از آن تمامی دورههای آموزشی به صورت وبکستی و آنلاین برگزار شده است.
با توجه به بازخوردهای مثبت دانشجویان، کلاسهای حضوری صرفاً در صورت برگزاری بوتکمپها و مسترکلاسها خواهد بود و دورههای آموزشی زین پس به همان صورت آنلاین و وبکستی برگزار میشود.
تمام جشنوارهها از یک الی دو هفته قبل از طریق شبکههای اجتماعی اینستاگرام (@nikamooz)، وبسایت مجموعه (www.nikamooz.com) و همچنین ایمیلهای ارسالی به کاربران اطلاعرسانی میگردد.
در صورت تمایل به دریافت فاکتور رسمی، پیش از خرید خود با واحد فروش مجموعه (17 00 07 91 – 021) تماس حاصل نمایید.
شایان ذکر است، امکان صدور فاکتور رسمی پس از خرید آنلاین از سایت مجموعه به هیچ عنوان وجود نخواهد داشت.
Δ
ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم.
سلام ای کاش از هر دوره یه قسمت رایگان یا دمو میزاشتین که راحت تر تصمیم بگیریم برای خرید این دمو که گذاشتین خیلی نمیشه ازش چیزی فهمید یا حداقل یه قسمت حتی پولی بزارین که بشه قبل از خرید دوره سطح دوره رو سنجید
درود بر شما
ممنون از پیشنهادتون دوست عزیز این موارد برای همه دوره ها در حال تهیه و تدوین هست و به زودی ارائه خواهد شد. برای دریافت دمو با اکانت @nikamoozwebmaster در تلگرام در ارتباط باشید.
تشکر از همراهی شما
من این دوره تهیه کردم واقعا عالی بود. فقط یک انتقاد دارم اگر جزوه چاپی داشتین یا حداقل همین فایل PDF که فقط تیتروار به موضوعات اشاره میکند، توضیحات هم اضافه می کردین. خیلی بهتر از این بود که دفتر ۱۰۰ برگ و کاغذ چسبی و بسته بندی گرون قیمت میدادین
درود بر شما سپاس از نقد سازنده شما حتما این مورد به واحد آموزش ارجاع داده میشه. تشکر از همراهی شما
سلام خسته نباشید می خواستم بدونم آیا این دوره تئوری هست یا پروژه محور است؟ و اگر پروژه محور هست با چه زبانی آموزش داده شده. با سپاس
درود بر شما رویکرد دوره به صورت سناریو محو رهست اما بیشتر مباحث تئوری گفته شده ولی درانتهای آموزش تمرین و نمونه عملی هم بررسی شده است. تشکر از همراهی شما
با سلام من این دوره رو خریداری کردم میخواستم بدون مثال های پیاده سازی شده کلاس توسط استاد داخل فلش نبود !!
درود وقت بخیر لطفا برای دریافت سمپل های جلسات برگزار شده با اکانت @nikamoozwebmaster در تماس باشید. سپاس از همراهی شما
با سلام بنده می خواستم این دوره را خریداری کنم اما به دلیل مشکل مالی می خواستم بپرسم که آیا این پکیج شامل تخفیف میشه یا خیر ؟ با تشکر از سایت خوبتون
درود وقت بخیر لطفا برای دریافت تخفیف با شماره ۰۲۱۹۱۰۷۰۰۱۷ داخلی ۱ آقای اختباری در تماس باشید. سپاس از همراهی شما