تعداد اسلایدهای پاورپوینت: 38 اسلاید طراحی دامنه محور(Domain-Driven Design) که به اختصار به آن DDD گفته می‌شود، در سال‌های اخیر مورد توجه بسیاری از شرکت‌های توسعه‌دهنده‌ی نرم‌افزار قرار گرفته و برای طراحی و توسعه نرم‌افزارهایی که دارای فرآیندهای پیچیده و قوانین زیادی که مکرراً در حال تغییرند، استفاده می‌شود. در این پاورپوینت که دارای 38 صفحه می‌باشد، به تفصیل درباره‌ی این موضوع صحبت شده است و برای مفاهیمی نظیر موجودیت، شی مقداری، aggregate و… مثال‌های کدنویسی عملی نیز ذکر شده است. همچنین مفاهیم تخصصی این حوزه نظیر subdomain و انواع آن، bounded context و انواع مختلف نحوه‌ی ارتباط آن‌ها با یکدیگر، context map و… نیز علاوه بر متن، با استفاده از شکل‌های جذاب توضیح داده شده است که باعث می‌شود این پاورپوینت برای انواع ارائه‌های دانشگاهی خصوصاً درس‌های رشته مهندسی کامپیوتر نظیر معماری نرم‌افزار، مهندسی نرم‌افزار، آزمون نرم‌افزار و… بسیار کاربردی باشد. با توجه به ماهیت موضوع DDD و ساختار این پاورپوینت، بهترین انتخاب برای ورود به این حوزه بدون صرف زمان و انرژی زیاد مطالعه و بررسی این پاورپوینت می‌باشد که نتیجه‌ی آن داشتن بیشترین اطلاعات ممکن در موضوع DDD در واحد زمان خواهد بود.

ppt.ir

صفحه 1:
= 2 DOMAIN-DRIVEN DESIGN * +) G3 9 ci] BS 9

صفحه 2:
Domain-Driven Domain Driven Domain-Driven)),9> aicls slo ‏با به اختصار ۵09 مبحثی‎ 65 است که:در سال‌های اخبر مورد نوعة بسیاری از شرکت‌های توسعه‌دهنده‌ی نرم‌افزار بوده و رویکرد آن‌ها را برای تحلیل و توسعه نرم‌افزارها به خصوص نرم‌افزارهای بزرگ و پیچیده, به شدت مود تانبن قرار داده انعت: اين مبحث را اولین بار آقای ‎Eric Evans‏ » ‎Jl‏ ۳ ۲۰۰ در کتاب خود با عنوان ‎Design‏ ‏00۳۸۱۵۱۱ مطرح کرد.

صفحه 3:

صفحه 4:

صفحه 5:

صفحه 6:
مدل دامنه ‎omain Model‏ 1 ‏ا‎ Cryer Cs) 0 aves ees ren) كهاى 000 از يبادءسازى درست اين فرآيندها اطمينان < 507050 5001000 ‏عل‎ ie

صفحه 7:
مدل دامنه 00 oseru cram Vter-1= ee ‏6و2 نرم‌افزار می‌باشد لذا هنگام طراحی از‎ ‏خوددارى‎ 3

صفحه 8:
مو جو د بت ‎Pan Land ae‏ ن يك كلاس به ‎PU Gatti ere icy.‏ رفتارهای مختلف (86310/1055) بيادمسازى مىشود ‎aes ay IS‏ 1 0 ترماقزار تغيير كند اما0| آن ثابت است. شناسه ‎(ID)‏ می‌تواند مقداری واقعی و معتی‌دار باشد(مثلا کد ملی کارمند) و یا مقداری که خود نرم‌افزار هنگام ثبت, به آن اختضاصض می‌دهد. باشد. (مثلا کد برسنلی کارمند) دو ۴۳۱/1۷ مختلف می‌توانند ویژگی‌های یکسان داشته باشتد اما ۱۵ آنها قطعا متفاوت است. در کدهای زیر نمونه‌ای ساده از اینترفیس ۱80۲۷ و موجودیت 0۲06۲کن را ملاحظه می‌فرمائید

صفحه 9:
public interface TentityeTentity, TED> Tio 14 { gets } bool Sametdhs(TEntity entity): public class Customer + TEntity<Customer, Long> public Jong Td ¢ get; private set; ) public string Firstnane ( get; private set; ) public string Lastname ( get; private sets ) public Custoner(long id, string firstnome, string lestnome) if ‏ذه -> مق‎ throu te ArgumentException(*rd"): ‎1d = 44;‏ تا رت دعس درو ‏مسا يي ‎ ‎public bool SameZdAs(Custoner entity) if (entity t= nutty 1 return entity.Té =~ this.1d5 1 ‎ ‎ ‎

صفحه 10:
SEMIS + Objec ۱۲۲۳۹۹۹ -aeeee nto ste: pecans (Cierra 1 1 1 mnie Matra ny) Berea mere Mn (eta icciao ere She Oren

صفحه 11:
public class Address 9 | public String City ( get: private sets} public string State get; private sets public string BlockNo { gets private set; } public Address(string street, string city, string state, string blocklo) e Address address) city = ct 07 Blockwo = blockio; 5 Custoner + TEntity<Custoner, Longs public long 14 { get; private set; ) public string Firstname { gets private sty} public string Lastname (get; private set; ) public Address Address { get} private set; ) public Custener(long 1d, string Firstnase, string lastoane, زه ع فل مذ ‎‘throu few ArgumentExcestion("td");‏ 1d = ids Firstname = Firstname; Lastnane - lastname; Address ~ address?

صفحه 12:
سرويس ب ‎rae Ch ALP‏ Se pel een NOPONT rime UriE rt tPel-(in ic mite ‏استفاده می‌شوند‎ ا 1 هیچگونه مطفشیرا در خوو ز گهداری تمه ند از آنجا كه سرويسها مىتوائئد به ابزارهاق زمر ساعن ى(مانتد ۱7 SNE (ia (o1 Coc pe per DR fpmren Eon een rere ioe erin cinta rere BOISE pYefnat Ii] ae pee er ton nes Pes I ve Pee Ps ديكر لايهها وابسته نشود اا به طور کل به سه دسته تقسیم

صفحه 13:
انواع ها در ۵0 سرویس‌های لایه دامنه ‎(Domain Services)‏ سرویس‌های لابه 0 Estee) سرويسهاى لابه زیرساخت ‎eee latte)‏

صفحه 14:
| ] Services) سرویس‌هایی که مربوط 0۳۵۴ ‏و لایه‌ی‎ Businessa ‏نرم‌افزار هستند. این سرویس‌ها‎ ‏معمولاً پیاده‌سازی یک فرآیند.‎ ‏اعتبارسنجی یک فرآیند و یا بازیابی‎ ‏داده‌ها برای یک فرآیند(از طریق‎ ۷ ها را برعهده دارند. ۳ ‎Service‏ 001۱8۵1 ها اغلببه داخل متدها و سازندمی ‎InjectlkEntity‏ ‏شده و استفادم مشوند.

صفحه 15:
سرویس‌هایی که يا کلاینت‌های پیرونتی ازتناط ؟ازند وا پناه‌ها وا دستورات ‎(Commands)‏ ا به عملیات‌ها و پردازش‌های داخلی 0310 2 تبدیل و اجرا می‌کنند. سرویس‌های لایه دامنه او تست [۱ slagarg pw ابلبكيشر | یداع 011

صفحه 16:
سرویس‌هایی که با منایع و وب سرویس‌های 86۳0۲۵ در ارتباط هستند. (به عنوان مثال سرویسی زیرساختی که مسئول ارتباط با وب سرویس ارسال پیامک می‌باشد.) سرویس‌های لایه دامته ‎(Domain Services)‏

صفحه 17:
‎oe‏ از ‎Invariant ‎1 me 1 ۱۱۱۱ ‎

صفحه 18:
90 Aggregate EDR ETN CRIN ete WC SON ey C eRe en pe ies) 1S ME GIP D's! ‏ره می‌گيريم.‎ PR 1 برای حل مشکلاتی | | ‎Peery‏ 2 در كتابش آن را اينكونه امس از 0 ‏ا‎ MC PIPE \e(*] 1-1 ery AggregateBoundary)) j,¢ S% » AggregateRoot)) ‏می‌باشد. مرز۸99۲693]6 مشخص می‌کند که چه چیزهایی‎ ‏در آن وجود دأرند.‎ ETT Tere Bel ‏نيز يكرا ز/20116‎ er ols ‏مساشد و تنها شی‌درون ۸39۲60216 لسحکه اشیا‎ ‏بیرونی‌مشولنند با لن‌ارتباط داشته و با به آن‌لشایه‎ ۹

صفحه 19:
Aggregate Type 1

صفحه 20:
[007 001100 oCe re eee ies ۱۳10 ۳ ۱۱ ۱۱ | glace go opt [9 nna Ee me MN ene es root 6 به شی 9

صفحه 21:
Price Orderitem (y Value: Long gy Count: Long gy Currency: String

صفحه 22:
6۵ در قالب ‎seit, Object‏ public Price(long value, string currency) { Value = value; Currency = currency; 0 } 1

صفحه 23:
۲ در قالب یک ‎acme Value‏ public long Count { get private set; } public Pie Unitorice {gots arivate et) 7 public 0 bi ect public orderttenCone comt, Price unitPrice) 1 وش ۱ UnitPrice = unitPrice; TotalPrice = new Price(unitPriceValue * count, unitPrice.Cuprency); }

صفحه 24:
۲ به عنوان یک ‎Entity‏ wvalue)s

صفحه 25:
مد ینتم بزرگ © تام نیار عط و بز رم ‎ont‏ ‎Mel‏ ,2 ذرگ بر مناد ى قصد راداندات يبي براى ابن اماب بكيريد هایی ‎Sho oul ١‏ ‎OF hii MA cad ga, Merce‏ لات به بئيستم 5 لازو اعد | 1 ‎eM gS‏ کاتالوگ ‎oll ct‏ لو داكا 5 ‎Pls‏ ‎Sa‏ ‎ee ۱‏ كدق از تب ‎evs‏ لاک تن كك ‎a ane‏ شدو ‎a‏ ‎a > vos > eee‏ مور کلی برافمثال يى “كالا” بدن سيستم انار ممكن أست در واقعيت با يى “محصول” در سیستم. فروش یکی باشد اما هر کدام در سیستم خود تعریف جداگانه و رفتارهای جداگانه‌ای دارند. هر 5۵0۵0 آدر حالت ایده‌لل[, در قالب یک 00۴۵ 800060 آبه اختصار (86 پیاده سازی می‌شود. - ود و یا

صفحه 26:
Subdomain تقریبا 00۳0۵10 تمامی نرم‌افزارهای80۱6۲0۲56 از چندین 10 تشکیل شده است. شناخت5۱000۳02/8 های ۱ ‎ey‏ 110ص 1 yee ante als Core Domainulsic L. sabe ubel Jgare 60۲6 ‏می‌شود. تمرکز اصلی در رویکرد0۵00 بر توسعه‌ی‎ 10 می‌باشد. ا ا ل ل 0 ال 0 ممكند اما بخشواز 000310 0056© نيستئد. ليرأ5080073 اذ ا 9 ا ا ‎ETT 0 ESS Te oT peer‏ ‎Rar eeres ea serie‏ Ree Pe eres rs wr SPST ۳ pene) veo CO PIM Titc Co per Pa) 6606۲1 ‏مفید و چه بسا | لامیاستبا عنولن50000۳0۵/05‎ ‏اشناخته ميشوند‎

صفحه 27:
Core Domain = «Prout Builder Fulfillment ‏کر‎ ‎2 ‎~ = ceenerie Domains Supporting Domains ‎ox ee‏ زر ‎j Promotion ‎/ ‎۱ Procurement ‎

صفحه 28:
Bounded ۳ ری تبديلموشوند. در حالت ايدهدل هرهأ5060053 در پیاده‌سازی به یک8 تبذیل می‌شود. هرع8 یک واحد مستقل شناخته می‌شود ‎cia‏ 17171 0000 Tis]) آن متفاوت باشد. برای مثال ممکن است در پیاده سازی یک 80 ‎nen eee)‏ ا ‎Perel‏

صفحه 29:
Ix Hat @ #20.00 1x Scarf @ 410.00 Shipp ‏و‎ ۸2 42.97 ( Hace (race order) )) Shipping === Subdomain [Seles Subdomainf Pricing Bounded ordering Context Bounded Context ie Promotion See | Promotion Bounded Context Shopping Subdomain Basket Bounded

صفحه 30:
Context Map یک سیستم بزرگ می‌تواند86 های زیادی داشته باشد که 1 ۱ ۱۳۱0۱۷ ۱۳۱۳ taf. PUTS es teopey evar oucg PP octn total Uc vane ‏نحومی تبادل‌و اشترلک‌داده بین‌آرها را به وضوح مشخص‎ ‏کنيم.‎

صفحه 31:
The legacy context does not have a well formed boundary 20 context Aand B need, translation layers to protect integrity of their models Legacy context is a big ball mud, i i very hard to BGP hind the different models Context Aand & integrate through the same database Third party application exposes interface through a restful service A second third party context integrates . & transformation layer Two contexts share a sub model Third party context , er. Context Y Third party content with flat files helps integration with internal contexts.

صفحه 32:
"1 هنگام برفراری ارتباط ‎Bounded‏ ‎viele ub £36 L LaContext‏ فرآیندهای 90۴0۵17 ‎eri‏ ۱ دارندء بهترين كار به اشتراى كداشتن ‎Pre‏ 10100 قسمتی از مدل جهت آسان کردن الايهاى جداكانه جهت برقرارى ارتباط ‎ow dobiyl sy silo a2jLS ru1s‏ بين _دو 8 ايجاد مىشود نا از بهم :و80 أست. اين روش اغلب زجانى به ‏ريختكى مدل جلوكيرى شود. / كار مىآيد كه بى080008185ا5 در ال ‎ ‎ ‎Publish- pen t asta a0 8 3 ‎ ‎PRY My (oikc og Senet rere ger Ay ‏زياد باشد و هر كدام از اين روابط‎ ‏نبازمند نوشتن یک لایه‌ی جدا برای‎ ‏ا ‏دسته از سرويسهاى مشخص را توليد ا 11100 3 ل 3000 ‏ا 00 ‎5۳۳

صفحه 33:
g Anti-Corruption Layer ® Elegant ‏د‎ Service A |S Adapter A Complicated Interface |] [rrentevant 3 ‏بطم‎ stuff Te Transiator 1} | Facade ery Expressive y class 5 ‏أ‎ Messy ‏سینت‎ Class Even More 5 Good Stuff [ Service B Adapter 8 You dont (Ok, some stuff we] ‏قال يمه سس‎ should probably |-~ now refactor

صفحه 34:
Bounded ‏بب#‎ ‎Context, a Shared Kernel Model B = Bounded context Shared Kernal eS ae Model A

صفحه 35:
و« Open Host Service Open Host Service / Sales Bounded Recommendation Context Bounded context / Marketin. Webservice Bound ) Context ‏يِب‎ Returns Bounded Context

صفحه 36:
Warehouse System Publish-Subscribe SD

صفحه 37:
أهدا, ‎sols‏ ۵ و ۶ 000 9 می‌باشر ‎sil‏ كامل ‎Br‏ كا ‎Ne‏ 5550 2 ككهو زور ‎ee‏ جرت ‎dlexae ey‏ بيجيده ثر شدن نرم افيه إيددى تمركز ل گذشت ‎Stee sl aan gg)‏ عت گردید تا رت ‎Domina‏ د لطر ‎OS le sles‏ ی ۵ به ; ‎Pomain‏ رد ‎re‏ اند زیره هرچند000 اجباری بر استفاده از معماری خاصی ندارد اما بعضی معماری‌ها مانتد معماری پیاز ‎Architecture)‏ 0۳100) _توانستند - موفقیت بیشتری در پیاده‌سازی اصول‌۵00۵ و ایزوله کردن0000۵18 داشته باشند.

صفحه 38:
Domain- driven design با تشکر از توجه ... شما

جهت مطالعه ادامه متن، فایل را دریافت نمایید.
50,000 تومان