Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ یک پروژه FullStack سورس باز SPA با Angular 8 و Asp.Net Core 3.1

🔰 تکنولوژی ها و امکانات :
✔️ASP.NET Core 3.1
✔️Entity Framework Core 3.1
✔️Both Sql Server and Sql lite databases are supported
✔️Identity Server 4
✔️Angular 8
✔️Angular CLI 8
✔️Secure - with CSP and custom security headers
✔️SignalR
✔️SASS
✔️Best practices for Angular code organisation.
✔️Clean Architecture for ASP.Net Core code.
✔️PWA support
✔️SSR (Server side rendering)
✔️Fast Unit Testing with Jest.
✔️E2E testing with Protractor.l
✔️Compodoc for Angular documentation
✔️Login and Registration using Identity Server implicit flow
✔️Extensible User/Role identity implementation
✔️Social logins support with token based authentication
✔️Swagger as Api explorer

🔸 مخزن گیتهاب
https://github.com/asadsahi/AspNetCoreSpa
_____________________
@DotNetZoom
Forwarded from فلسفه دیزاین
موفقیت با رمز یکپارچگی

اگر نگاهی به تاریخچه‌ی شرکت‌های بزرگ و محصولاتشان بیاندازیم، خواهیم دید که در طول زمان و با به‌روزرسانی و پیشرفت محصولاتشان، سیر عملکرد و فرآیندهای آنها تغییر چندانی نکرده است. به عنوان مثال اگر به نرم‌افزار فتوشاپ که در دهه ۹۰ و سرویس جیمیل که اوایل قرن بیستم منتشر شدند توجه کنیم، خواهیم دید که علی‌رغم تغییرات ظاهری در گذر زمان، فرآیندها و روندهای آنها تغییر چندانی نکرده است و کاربر با اندکی تلاش می‌تواند با نسخه‌های جدیدتر ارتباط برقرار کرده و از آنها استفاده کند. این یکپارچگی و هماهنگی محصولات سبب می‌شود کاربر در استفاده از آن‌ها همان حس و حال محصول قدیمی و آشنا را داشته باشد.

این ویژگی یکپارچگی (Consistency) نام دارد و باعث می‌شود کاربر برای استفاده از محصول یا سرویس نیازمند یادگیری اصول و قواعد جدید نباشد و همچنین هنگام استفاده از آن دچار سردرگمی نشود.

پیروی از الگوهای مشخص در طراحی و ارائه محصولات و سرویس‌های جدید یکی از نکات کلیدی در بهبود تجربه کاربری و همراه‌سازی کاربر با محصول یا سرویس ارائه شده است.

حفظ یکپارچگی در محصولات و سرویس‌ها نیازمند توجه به نکات و اصولی است که نقش به‌سزایی در موفقیت آن داشته و رضایت کاربر را در پی خواهد داشت. برای اینکه با این اصول و قواعد آشنا شوید، پیشنهاد می‌کنیم مقاله زیر را مطالعه کنید:

https://bit.ly/dxgn543

به نظر شما توجه به چه نکاتی در حفظ یکپارچگی محصول مؤثر است؟ نظرات خود را با ما در میان بگذارید.

(زمان حدودی مطالعه: ۱۲ دقیقه)

نویسنده: محمدرضا پناهی

#یکپارچگی #تجربه_کاربری #طراحی_محصول

@Dexign فلسفه دیزاین

ـــــــــــــ
#پست_مجدد این پست تا به حال بیش از ۹۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
نوشتن تست یکی از دوست نداشتنی‌ترین! کارهایی است که یک برنامه نویس باید انجام دهد.

تست در جاوااسکریپت طی سال‌های اخیر پیشرفت زیادی کرده است و برنامه‌نویس‌ها به آن علاقه مند«تر» شده‌اند ولی هنوز منابع کمی برای شناخت کلی از همه ابعاد تست در جاوااسکریپت وجود دارد.

این مقاله و منابعی که در انتهای آن معرفی شده است راهنمای بسیار جامعی درباره تست در جاوااسکریپت هستند.

https://medium.com/welldone-software/an-overview-of-javascript-testing-in-2019-264e19514d0a

#مریم_کمالی (https://ow.ly/9Wa430mFGeK)

کانال تلگرام:
@SoftwarePhilosophy

___
#پست_مجدد این پست تا به حال نزدیک به ۳۴۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
تجزیه اعداد به عوامل اول با استفاده از یکوارها

یکی از مفاهیمی که در دنیای امنیت بسیار از آن استفاده می‌شود، سخت بودن تجزیه اعداد بزرگ با عوامل اول بزرگ است. به این معنی که اگر دو عدد اول خیلی بزرگ را در هم ضرب کنیم و حاصلضرت را در اختیار شخصی بگذاریم، اون نمی‌تواند در زمان معقول به آن دو عدد اول دست پیدا کند. در حقیقت تا یکی از عوامل را نداشته باشد نمی‌تواند عامل دیگر را پیدا کند. این مفهوم یکی از مفاهیم پایه‌ای برای الگوریتم‌های public key/private key مانند RSA است.
مقاله زیر یک روش جدید را برای تجزیه اعداد با استفاده از خواص اعداد Repunit یا همان اعداد متشکل از 1 مانند 11, 111, 1111, 11111, … ارائه داده‌است. این الگوریتم بیشتر از لحاظ چند اثبات ریاضی جالب است که ارتباط بین این اعداد با اعداد اول را تشریح کرده‌است.

لینک کامل این مقاله در پست زیر آمده است.

https://mehrandvd.me/2018/02/16/using-repunits-prime-factorization/


⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

https://ow.ly/9Yrt30jvRhK

#مهران_داودی (https://ow.ly/GwIl309lFEm)

کانال تلگرام:
@SoftwarePhilosophy


___
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
This media is not supported in your browser
VIEW IN TELEGRAM
❇️ معرفی کد آنالیزر Serilog

همانطور که میدانید Serilog قوی ترین و محبوب ترین کتابخانه Logging در دات نت است. اگر از آن استفاده می کنید پیشنهاد میکنم افزونه و کتابخونه زیر رو هم نصب کنین

ابزار Serilog Analyzer یک آنالیزر roslyn-based برای Serilog بوده و خطا های رایج و اشتباهات متداول به هنگام استفاده از Serilog را گوشزد کرده و اصلاح میکند.

🔰جهت استفاده، افزونه Visual Studio و کتابخانه زیر را نصب کنید
https://marketplace.visualstudio.com/items?itemName=Suchiman.SerilogAnalyzer
https://www.nuget.org/packages/SerilogAnalyzer

ریپازیتوری گیتهاب :
https://github.com/Suchiman/SerilogAnalyzer
___________________
@DotNetZoom
Forwarded from فلسفه دیزاین
قلب تپنده تجربه کاربری

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

معماری اطلاعات علمی‌ست که به طراحان در این امر کمک می‌کند. با استفاده از این علم طراحان می‌توانند ساختار محتوا را به‌گونه‌ای سازماندهی کنند تا قابل فهم و کاربردی باشد. معماری اطلاعات نخستین بار توسط آقای Richard Saul Wurman که یک معمار و طراح آمریکایی بود معرفی و مطرح شد.

پیش از هر چیز متخصصان معماری اطلاعات باید در نظر بگیرند که نیازهای مخاطبین هدف چیست، چراکه رضایتمندی کاربران اولویت دارد. بعد از آن نوع محصول و خواست‌های شرکت ارائه‌ دهنده‌ی آن اهمیت دارد.

معماری اطلاعات چهار مولفه‌ دارد که توجه به آن‌ها می‌تواند به طراح کمک کند تاتجربه‌ی کاربری مناسبی رقم بزند:

- سیستم سازماندهی
- سیستم برچسب‌گذاری
- سیستم جهت‌یابی
- سیستم جستجو

مقاله‌ی زیر که توسط Tubik Studio تهیه شده، درباره‌ی معماری اطلاعات صحبت می‌کند و به صورت کامل هرکدام از این مولفه‌ها را با ذکر نمونه توضیح می‌دهد.

https://bit.ly/dxgn545

شما در مسیر طراحی با چه چالش‌هایی از جنس سازماندهی ساختار محتوا برخورد کردید و چگونه آن را حل کردید؟ تجربه‌های خود را با کلیک روی گزینه «نظرت را بگو✏️» با ما در میان بگذارید.

مدت زمان مورد نیاز برای مطالعه: ۱۰ دقیقه

نویسنده: پریسا حسینی

#تجربه_کاربری #معماری_اطلاعات

@Dexign فلسفه دیزاین


_
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
موضوعی که در صحبت با تعدادی از دوستان معمارم مشاهده کردم این بود که آن‌ها Bounded Context در الگوی DDD رو با میکروسرویس هم ارز می‌دونن که اشتباهه.

توجه داشته باشید که BCیک الگوی متمرکز در طراحی DDD است، بنابراین از خیلی جهات مرز یک BC با مرزبندی رایج در میکروسرویس‌ها به طورکلی متفاوت است . مقاله زیر از مارتین فالور در خصوص مفهوم BC است :

https://martinfowler.com/bliki/BoundedContext.html

و همچنین مقاله زیر در خصوص این تفاوت توضیح نسبتا خوبی می‌دهد :

https://vladikk.com/2018/01/21/bounded-contexts-vs-microservices/


#شهریار_انتظام (https://ow.ly/qDN430nPiCg)

کانال تلگرام:
@SoftwarePhilosophy

___
Forwarded from Iran Agile
مدل قلاب و مدیریت محصول

مطالعات دانشگاهی در سال 2011 نشان می دهد که انسان ها به طور معمول 34 بار در روز به موبایل خود سر میزنند. از سوی دیگر 79 درصد از کسانی که تلفن هوشمند دارند، حداکثر تا 15 دقیقه پس از بیدار شدن به موبایل خود سر می زنند. اما سوال اصلی این است... چه چیزی در تلفن های هوشمند وجود دارد که تا این اندازه ما را به آن ها معتاد کرده است؟ ما چگونه می توانیم با استفاده از رویکردی مشخص به تولید محصولاتی بپردازیم که مشتریان را وادار به استفاده مداوم از آن ها کنیم؟

پاسخ. با استفاده از مدل قلاب

مدل قلاب یک مدل جهانی در حوزه مدیریت محصول است که به مدیران محصول و صاحبان کسب و کار در تنظیم رفتار کاربران کمک می کند، چرا که این کار سنگ بنای رشد پایدار محصولات و موفق شدن آن ها در بازار است. این مدل مبتنی بر مفاهیم روانشناسی و تحقیقات گسترده در راستای تحلیل رفتار مصرف کنندگان طراحی و منتشر شده است. مدل قلاب دارای 4 فاز محرک (Trigger)، اقدام(Action)، پاداش متنوع(Variable Reward) و سرمایه گذاری(Investment) است که در زیر به تشریح هر یک از این فازها می پردازیم.

https://vrgl.ir/KsTLY

@iranagile
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ پروژه ASP.NET Core رزرو بلیط هواپیما مبتی بر DDD و CQRS و Event Sourcing

🔰تکنولوژی های استفاده شده :
✔️ASP .NET Core 2.2
✔️EF Core 2.2
✔️#RESTful API
✔️#Hypermedia API
✔️#DDD
✔️#CQRS
✔️#Event_Sourcing
✔️#MongoDb
✔️#ElasticSearch
✔️#Docker
✔️#Kubernetes
✔️#TDD

https://github.com/twzhangyang/RestAirline
_________________
@DotNetZoom
Forwarded from فلسفه دیزاین
قدرتی فراتر از سیاه‌چاله‌ی فورتنایت

اگر اهل بازی‌های ویدئویی هم نباشید، شاید اخیرا سرو صدای زیاد بازی فورتنایت به گوشتان خورده باشد. بله در رویداد The End این بازیِ آنلاین، اتفاقی افتاد که همگان را متعجب کرد. پس از به‌فضا رفتن یک موشک و شلیک شدن تعدادی موشک دیگر و در انتها برخورد شهاب سنگ، سیاه‌چاله‌ای وسط نقشه‌ی بازی ظهور کرد و تمامی کاراکترها و نقشه‌ی بازی را بلعید. صفحه سیاه شد و بازیکنان دیگر چیزی نتوانستند روی مانیتورهای خود ببینند.

این بازی در سال ۲۰۱۷ توسط کمپانی Epic Games برای تمامی پلتفرم‌های ویندوز، مک، پلی‌استیشن، ایکس‌باکس، نینتندو، آندروید و آی‌اواس منتشر شد.
با توجه به رایگان بودن بخش آنلاین بازی با عنوان «Battle Royale» و ارائهٔ بروزرسانی‌ها، این بازی توانست بسیار موفق باشد. در حال حاضر نزدیک به 250 میلیون بازیکن دارد.

اما دقیقا چه چیزی این بازی را آنقدر محبوب کرده است که کاربران حاضر به دل کندن از بازی با آن نیستند. برای فهمیدن دقیق این موضوع باید با مدلِ قُلّابِ این بازی که ما را درگیر آن می‌کند آشنا شویم.

قُلّاب‌ها چه هستند؟

قُلّاب‌ها، طبق صحبت‌های آقای Nir Eyal نویسنده‌ی کتاب معروف Hooked: How to Build Habit-Forming Products (که قبلا نیز خواندن آن را به شما پیشنهاد کردیم)، تجربه‌هایی هستند که برای ایجاد عادت در کاربران برای پیوند مشکل آن‌ها با محصول شرکت، دیزاین می‌شوند. Eyal در این کتاب به توصیف ۴ فازِ مدل هوک (Hooked Model) می‌پردازد. اینکه چطور شرکت‌ها از هوک برای ساخت محصولات و خدماتی بهره می‌برند که مردم عاشق آن‌ها می‌شوند.

در مقاله‌ی امروز به بررسی این ۴ فاز مدل هوک بر روی بازی فورتنایت می‌پردازیم:

https://bit.ly/dxgn547

(زمان حدودی مطالعه: ۸ دقیقه)

نویسنده: حسین میرزاده

#مدل_هوک #قلاب #فورتنایت #بازی_ویدئویی

@Dexign فلسفه دیزاین


ــــــــــ
Forwarded from Iran Agile
لزوما به پیش بردن پروژه در طی اسپرینت‌ها به معنی چابک بودن نخواهد بود.

تا زمانی که اصلی ترین متر موفقیت رسیدن و پایبندی به برنامه یا زمانبدی است، چابکی در آنجا به معنای واقعی درک نخواهد شد.

اصلی ترین متر موفقیت در دنیای چابک، تحویل مستمر ارزش است حتی اگر نیاز به تغییر برنامه و زمانبدی باشد.

شاید سوال بپرسیم، مگر این موارد با هم تناقض دارد؟ فرض کنید در شرکتی که حتی اسپرینت به اسپرینت پروژه را جلو می‌برد، تمام مراسم اسکرام را هم انجام می‌دهد، اما به مدیران پروژه به تعداد پروژه‌هایی که تمام کردند پاداش می‌دهیم، آیا آنها حاضر به شنیدن بازخورد مشتری و بالطبع تغییر در مسیر پروژه می‌شوند؟ البته اشتباه نکنید، مشکل پاداش نیست، بلکه متر موفقیت است.

https://martinfowler.com/bliki/WaterfallProcess.html

@iranagile
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ مهم ترین اخبار رویداد NET Conf. با موضوع Focus on Blazor

دو روز پیش رویداد یک روزه دات نت کانف با محوریت تمرکز بر روی Blazor برگزار شد و اخبار و آموزش های جدید در اون منتشر شد از جمله :

🔶 معرفی امکانات جدید
امکانات جدیدی که قرار است تا ماه May به Blazor WebAssembly (همان Client-Side Blazor سابق) اضافه شود
https://gunnarpeipman.com/focus-on-blazor-announcements/

🔷 معرفی نمونه پروژه ای از ترکیب Blazor + Electron
که امکان ساخت برنامه های مدرن و سریع Desktop ایی به صورت Cross-Platform توسط Blazor و تکنولوژی های Web ایی را فراهم می سازد (توضیحات بیشتر)
ریپازیتوری گیتهاب :
https://aka.ms/blazorelectron

🔶معرفی نمونه پروژه ای از ترکیب Blazor + WebWindow
که امکان ساخت برنامه های مانند پروژه قبلی را فراهم می سازد با این تفاوت که سبک تر است و حجم کمتری دارد. WebWindow یک پروژه (در حال حاضرآزمایشی) است که توسط Steve Sanderson خالق Blazor ساخته شده و جایگزین الکترون برای برنامه‌های NET Core. خواهد شد و نسبت به الکترون سبک تر و کم حجم تر است.
https://aka.ms/webwindow

🔷معرفی پروژه Mobile Blazor Bindings
که امکان ساخت برنامه های Native موبایل را توسط Razor و #C و CSS فراهم می سازد. همچنین به کامپوننت های بومی موبایل مانند GPS و Media دسترسی دارد. در این روش از کامپوننت های مبنی بر Xamarin Forms استفاده می شود
اطلاعات بیشتر و نمونه اپ های ساخته شده
https://devblogs.microsoft.com/aspnet/mobile-blazor-bindings-experiment/
https://docs.microsoft.com/en-us/mobile-blazor-bindings/
https://github.com/xamarin/MobileBlazorBindings

🔶امکان تست نویسی برای Blazor
قابلیت Unit Test نویسی برای کامپوننت های Blazor هم اکنون در حد نمونه اولیه پیاده سازی شده است و به زودی تکمیل می شود
اطلاعات بیشتر و ریپازیتوری کتابخانه مربوطه
https://blog.stevensanderson.com/2019/08/29/blazor-unit-testing-prototype/
https://github.com/egil/razor-components-testing-library

🔷کاهش حجم برنام های Blazor WebAssembly
توسط قابلیت Assembly trimming می توان حجم خروجی برنامه های Blazor WebAssembly را کاهش داد. به طور مثال حجم نسخه پیشفرض فعلی یک اپ Blazor WebAassembly حدود 2 مگابایت است که تیم Blazor وعده داده در انتشار ماه May سال جاری، حجم آن را تا 1.5 مگابایت کاهش دهد.
_______________
@DotNetZoom
#پست_مجدد این پست تا به حال بیش از ۲۰۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
EXACT INSTRUCTIONS

پیشنهاد می‌کنم اول فیلم رو ببنید بعد بقیه مطلب رو بخونید.

https://www.youtube.com/watch?reload=9&v=Ct-lOOUqmyY

خیلی جالب بود و در نگاه اول هیچ ربطی به نرم‌افزار و دنیای نرم‌افزار نداره. ولی وقتی یه خورده عمیق بشیم خیلی جالب میشه.

یکی از مهم‌ترین کارهایی که باید توی شرکت‌های نرم‌افزاری به درستی انجام بشه، داکیومنت کردن است. (داکیومنت به معنی کامنت گذاشتن داخل کد اصلا منظورم نیست، کد باید خودش به قدری خوانا باشه که نیاز به کامنت نداشته باشه یا به اصطلاح Self-Document باشه.)
داکیومنت کردن رو نباید به عنوان یه کار اضافه دید و سرسری انجامش داد.
تمام مراحل انتقال دانش باید به وسیله داکیومنت انجام بشه. نه به صورت نقل قول و سینه به سینه.

اتفاقی که برای خودم افتاد رو براتون تعریف می‌کنم:
در شرکت کرانه ادمین TFS بودم، و یکی از کارهایی که باید انجام می‌دادم و داکیومنت می‌کردم Disaster Recovery خود TFSبود. ۱ روز کامل وقت گذاشتم و Recovery رو انجام دادم و داکیومنتش رو نوشتم، کاری که مدیرمون کرد خیلی خوب بود. داکیومنت رو داد به یکی دیگه گفت TFS رو بیار بالا. حدس می‌زنید چی شد؟ نتونست، چون داکیومنتی که نوشته بودم به درد خودم می‌خورد.
و حرفی که به من زد این بود «داکیومنت باید طوری باشه که اگه دست یه نفر رو از توی خیابون گرفتم و این داکیومنت رو بهش دادم بتونه TFS رو بیاره بالا». بعد از ۳ بار داکیومنت نوشتن بالاخره موفق شدم داکیومنتی بنویستم که به هر کی بدمش فقط با Back up دیتا بیس بتونه TFS رو بالا بیاره.

به نظر من داکیومنت باید طوری باشه تا تمام کسانی که می‌خوننش، همشون یک برداشت رو داشته باشن، داکیومنت نباید وابسته به Context ذهن ما باشه.

خوشحال می‌شم نظر شما رو هم بدونم.

#افشین_علیزاده (https://ow.ly/l7cA30m3OQ9)

کانال تلگرام:
@SoftwarePhilosophy

___
Forwarded from فلسفه دیزاین
دیزاین سیستم‌ها و آنچه باید در مورد آن‌ها بدانید.

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

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

یک دیزاین سیستم، منبعی قابل اتکا است که تمام المان‌های لازم برای طراحی، تحلیل و توسعه محصولات دیجیتال را ارائه کرده و فعالیت تیم‌ها در راستای طراحی محصول را تسهیل می‌کند.

به عنوان مثال می‌توان به دیزاین سیستم «Material» شرکت گوگل اشاره کرد که مجموعه‌ای از المان‌ها، کامپوننت‌ها، راهنماها و اصول و قواعد طراحی برای اپلیکیشن‌های بر پایه سیستم‌عامل اندروید است.

برای آشنایی بیشتر با دیزاین سیستم‌ها می‌توانید مقاله زیر را مطالعه کنید:

https://bit.ly/dxgn548-1

همچنین اگر علاقه‌مند هستید با معروف‌ترین و موفق‌ترین دیزاین سیستم‌های موجود آشنا شوید می‌توانید به لینک زیر مراجعه کنید:

https://bit.ly/dxgn548-1

(زمان حدودی مطالعه: ۱۴ دقیقه)

نویسنده: محمدرضا پناهی

#دیزاین #دیزاین_سیستم

@Dexign فلسفه دیزاین


_______
Forwarded from Iran Agile
تاریخچه اسکرام
چه اتفاقی افتاد که اسکرام معرفی شد؟

هر دو نفر خالق اسکرام در جنگ ویتنام از ۱۹۶۷ تا ۱۹۷۵ حضور داشتند. آقای جف سادرلند خلبان هواپیمای جنگنده بود.
درک آنها از عدم قطعیت در شرایط جنگ باعث شده بود که مفهوم پیچیدگی‌ را بهتر درک کنند. پس از اتمام جنگ هر کدام به شرکتهای نرم افزاری پیوستند اما درک کردند که روش مرسوم آن روزها که واترفال بود، با شرایط پیچیده و عدم قطعیت توسعه نرم افزار همخوان نیست.

آقای سادرلند در شرکتی در حوزه ATM های بانکی کار می‌کرد و دنبال بهبود شیوه کار بود که اتفاقی مقاله آقای تایچی اوهنو ژاپنی با عنوان The new new product development game را دید که این سرآغاز تولد اسکرام بود. در سال 1995 با همراهی کن شوئبر مقاله ای با عنوان اسکرام ارایه کردند.

داستان کامل را در لینک زیر مشاهده کنید

https://www.scrumdesk.com/the-history-of-scrum-how-when-and-why/

@iranagile
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ ساخت برنامه های gRPC بدون فایل های proto. در ASP.NET Core

🔰برای ساخت برنامه های gRPC در دات نت، 2 پیاده سازی متفاوت (یکی رسمی و دیگری غیر رسمی) وجود دارد

1️⃣ پیاده سازی grpc-dotnet (یا gRPC for .NET) که کتابخانه رسمی gRPC برای دات نت است
https://github.com/grpc/grpc-dotnet

2️⃣ پیاده سازی protobuf-net.Grpc که کتابخانه غیر رسمی و از توسط Marc Gravell (یکی از برنامه نویسان بزرگ سایت Stackoverflow، و نویسنده کتابخانه های محبوب Dapper و StackExchange.Redis) تهیه شده است
https://github.com/protobuf-net/protobuf-net.Grpc

🔸یکی از تفاوت های این دو کتابخانه این است که در حالت عادی (توسط grpc-dotnet) ساخت فایل های .proto جهت تعریف ساختار API الزامی است ولی توسط کتابخانه protobuf-net.Grpc نیازی به فایل های اضافی .proto نبوده و ساختار متد های سرویس دهنده توسط Interface ها مشخص می شوند.

🔹تفاوت دیگر آن این است که کتابخانه protobuf-net.Grpc تارگت های NETFramework 4.6.1. و NETStandard 2.0. و NETStandard 2.1. را پشتیبانی میکند در حالی که کتابخانه grpc-dotnet فقط NETStandard 2.1. را پشتیبانی میکند در نتیجه بر روی .NET Framework و .NET Core نسخه های قبل از 3.0 قابل اجرا نیست
- البته یک پیاده سازی رسمی دیگر (به نام gRPC for C#) نیز وجود دارد که از نسخه های قدیمی تر مانند NETFramework 4.5. و NETStandard 1.5. و NETStandard 2.0. هم پشتیبانی میکند
https://github.com/grpc/grpc/tree/master/src/csharp

🔸نکته بعدی، تفاوت در سرعت این دو کتابخانه است به صورتی که طبق بنچمارک زیر protobuf-net.Grp کمی کند تر از grpc-dotnet است
https://pawelkmiec.net/2019/11/17/gRPC-performance-benchmark.html

🔹تفاوت بعد آن این است که API های کتابخانه رسمی grpc-dotnet و #gRPC for C شبیه پیاده سازی اصلی grpc گوگل بوده در حالی که کتابخانه protobuf- net.Grpc بیشتر متمایل به Contract های سی شارپی بوده و کار با آن برای برنامه نویسان سی شارپ ساده تر و باب میل تر است


🔰 مشابه قضیه بالا، برای استفاده از protobuf در دات نت نیز 2 کتابخانه وجود دارد

1️⃣ کتابخانه Google.Protobuf : که پیاده سازی و استفاده از آن شبیه نسخه اصلی protobuf است. (ریپازیتوری گیتهاب)

2️⃣ کتابخانه protobuf-net : که پیاده سازی و استفاده از آن شبیه بقیه سریالایزر‌های دات نتی بوده و بیشتر متمایل به سی شارپ است. (ریپازیتوری گیتهاب)

کتابخانه دومی بیشتر باب میل سی شارپی‌ها بوده و نیز ساده تر است. با دیدن مثال هر دو کتابخانه میتوانید بهتر متوجه این تفاوت شوید.
لینک زیر هم به مقایسه این دو کتابخانه پرداخته :
How to choose between protobuf-csharp-port and protobuf-net


آموزش استفاده از protobuf-net.Grpc
✔️Getting Started with protobuf-net.Grpc
✔️Mark Gravell Talking Between Services with gRPC and Other Tricks

آموزش استفاده از grpc-dotnet و #gRPC for C
✔️Introduction to gRPC on .NET Core
✔️gRPC services with C#
✔️
gRPC services with ASP.NET Core
✔️Call gRPC services with the .NET client
✔️Create a gRPC client and server in ASP.NET Core
✔️Trying out gRPC in ASP.NET Core 3

__________________
@DotNetZoom
#پست_مجدد این پست تا به حال بیش از ۴۲۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد