طراحي و توليد نرم افزار HR با Asp.Net Core - مقدمه

قبلا و در پستي با عنوان نقشه راه توسعه دهندگان Asp.NET Core که در اين لينک به آن پرداخته شد و همچنان در حال تکميل مي باشد، شروع به انتشار مطالبي پيرامون مباحث زير نموديم.معرفي Net6. و دلايل انتخاب Asp.Net Coreاصول طراحی نرم افزار Software Design Principlesمعرفی و بررسي IoC, DIP, DI ,IoC Containerويژوال استوديو و GitHubآموزش کاربردی UML برای توسعه دهندگان نرم افزاراما قصد دارم تا ضمن استفاده عملي از مطالب بالا و با طراحي و توليد يک نرم افزار مديريت سرمايه انساني يا همان HR (خيالي)براي تکميل نقشه راهي که در ابتدا به آن اشاره شد استفاده کنم.البته واضح است در اين مسير ما قصد نداريم يک نرم افزار مديريت منابع انساني را بصورت کامل طراحي کنيم، هدف بکار گيري اصول مهندسي نرم افزار و بيان مباحث مرتبط با هر بخش مي باشد و در نهايت تکميل آن به خود شما واگذار خواهد شد.اما قبل از آغاز پروژه لازم است برخي از مسائل روشن شود و انتخاب هاي صحيحي در مورد آن صورت پذيرد. چرا که انتخاب نادرست ممکن است برای شما هزینه ایجاد مجدد کل وب سایت یا وب اپليکشين را نیز در پی داشته باشد. نوع پروژه بايد مشخص شود يک Web Application يا يک Web Site؟اگرچه آنها تقریباً یکسان به نظر می رسند، برنامه های کاربردی وب و وب سایت ها دو قالب متفاوت از محتوای وب هستند. Web Application یک برنامه کاربردی کامل است که می تواند برای اهدافی مانند حسابداری، CRM، مدیریت منابع انسانی، مدیریت پروژه، داشبورد مدیریت و غیره مورد استفاده قرار گیرد. از طرف دیگر یک Web Site مثلا با محتوای آموزشی در مورد یک کسب و کار است.در نتيجه با توجه به پروژه پيش رو يعني نرم افزار مديريت منابع انساني ما با يک Web Application روبرو خواهيم بود. برای UXی که قصد دارید به کاربر خود ارائه دهید Web UI بايد مشخص شود(CSR،SSR،SSG) ؟قبلا و بصورت مفصل در خصوص انتخاب رابط کاربری وب (Web UI) برای Asp.Net Core در اين لينک صحبت کرديم و گفتيم سه رویکرد کلی برای ایجاد رابط کاربری وب مدرن با ASP.NET Core وجود دارد:1.برنامه هایی که UI را از سرور ارائه می کنند (SSR) :ASP.NET Core Razor PagesASP.NET Core MVC2.برنامه‌هایی که UI را روی کلاینت در مرورگر ارائه می‌کنند(CSR) :Blazorشما همچنین می توانید برنامه های ASP.NET Core را با استفاده از فریم ورک های محبوب جاوا اسکریپت مانند Angular یا React بسازید. ASP.NET Core قالب های پروژه را برای Angular و React ارائه می دهد و می تواند با سایر فریم ورک های جاوا اسکریپت نیز استفاده شود.3.برنامه های ترکیبی که از هر دو رویکرد ارائه رابط کاربری سرور و کلاینت بهره می برند(Hybrid) :ASP.NET Core MVC plus Blazorمزایا و معایبی وجود دارد که باید هنگام رندر UI روی سرور، کلاینت و Hybrid در نظر گرفت.و در نهايت بر اساس نتيجه گيري صورت پذيرفته شده از آنجائيکه براي پروژه فرضي ما يعني سيستم مديريت سرمايه انساني : الف) سرعت مهم(بصورت میانگین بیشتر از SSR) ب) اما سئو مهم نیست (ساخت وب اپلیکشین ها برای اهدافی مانند حسابداری، CRM، مدیریت منابع انسانی، مدیریت پروژه، داشبورد مدیریت و ... )ج) انتشار بر روی CDN مهم.د)نمی خواهیم درگیر مشکلات سازگاری UI که در تولید سمت سرور(SSR/SSG) وجود دارد شویم. در نهايت با در نظر گرفتن عوامل فوق عاقلانه است ما براي برنامه کاربردی وب یا همان Web Application فرضي خود از CSR استفاده کنيم. اما انتخاب مهم و بعدي در اين ارتباط چيست ؟ Blazor يا استفاده از فریمورک های محبوب جاوا اسکریپت مانند Angular یا React !اگر من مدير پروژه بودم و در يک تيم چند نفره حضور داشتم شايد React را انتخاب مي کردم(صرفا نظر شخصي) اما از آنجائيکه در اين پروژه تيمي وجود ندارد ! نمي خواهم هزينه هاي انتخاب يک فريمورک ديگر مانند React را بپذيرم انتخاب من در اين شرايط Blazor مي باشد. الگوی معماری بايد مشخص شود Multi-layer، multi-tiered يا Domain Oriented Architectureقبلا و در اين لينک(پیاده سازی DDD - Clean Architecture) در مورد معماري هاي فوق صحبت کرديم و گفتيم تاکنون معماری های زیادی برای کاهش هزینه های نرم افزار برای مشتریان و افزایش طول عمر نرم افزار ابداع شده است. از multi-layered تا multi-tiered و به دنبال آن یک معماری دامنه گرا(Domain Oriented Architecture).حالا بر اساس آنچه در لينک مورد اشاره گفته شده است مي بايست با توجه به نوع و اندازه پروژه پيش رو انتخاب کنيم که از چه معماري بايد استفاده کنيم ؟اگر از قوانین، اصول، الگوها و بهترین شیوه ها پیروی کنید، codebase شما ساده تر و راحت تر نگهداری می شود و در نتیجه می تواند سریعتر تغییر کند.در نهايت و بر اساس بررسي مزايا و معايب انتخاب ما DDD به عنوان یک الگوی عالی برای سیستم هایی با منطق کسب و کار پیچیده است، سیستم هایی که نیاز به نگهداری و توسعه در آینده دارند.بیشتر بخوانید : طراحي و توليد نرم افزار HR با Asp.Net Core - قسمت اولبیشتر بخوانید : نقشه راه توسعه دهندگان Asp.NET Core