معماری برنامه استاندارد در MVC

پنجشنبه 15 مهر 1395

در این مقاله شما توضیحاتی را درباره ی معماری برنامه در سطح استاندارد با استفاده از MVC ،WebApi ،HTML و Angularjs خواهید دید.

معماری برنامه استاندارد در MVC

ما یک معماری برنامهT به وسیله لایه استاندارد، mvc استاندارد و معماری business_level ساخته ایم.اگر شما قصد ساخت MVC, Web api ،Angularjs را دارید این بهترین روش برای ساخت معماری برنامه است.

امروزه هر توسعه دهنده یک تجربه خوب در web applications, mvc applications, web services, web api دارد و توسعه دهندگان front_end با استفاده از angularJS که در حال حاضر به خوبی توسط معماری دیگر،لایه ها حفظ شده است، یا میتوان گفت در حال حاضر توسط کسی پیکربندی شده است.

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

نکات مهم :

اگر شما قصد ایجاد برنامه های کاربردی خوب و به خوبی سازمان یافته با استفاده از معماری لایه در MVC دارید، شما  به برخی از نقاط که در زیر آورده شده نیاز دارید:

1-از معماری 3 لایه استفاده کنید.

2- در ایجاد سرور سعی کنید از معماری 3 لایه نرم افزاری(Tier) استفاده کنید.

3- برای هر  exception (استثنا) یک فایل log درست کنید.

4-  استفاده از احراز هویت  Owin همراه با identity.

5- واحد تست بسازید و از آن استفاده کنید.

6- sswagger را برای تست کردن با mvc web api پیاده سازی کنید.

این عکس به درک بهتر، معماری خوب برنامه ها کمک میکند. در اینجا ما میخواهیم چگونگی پیاده سازی برنامه را در زمان اجرا توضیح دهیم:

بر اساس این عکس ما یک برنامه ساخته ایم که دارای این معماری ها است. که ما یکی یکی آن هارا توضیح میدهیم.ما بر اساس یک تصویر زمان واقعی معماری برنامه را نشان میدهیم. و هر یک را توضیح میدهیم.

در این پروژه ما 7 پروژه که جدا از یکدیگر هستند را پیکربندی کردیم.

1- لایه برنامه(لایه Presentation )

در این لایه ما فقط یک صفحه  html ساخته ایم و از web api توسط Angularjs بهره برده ایم.

در این استفاده web api و  angularJS در فرمت json داده هارا رد و بدل میکنند.

در این لایه شما میتوانید صفحه html،کنترلر و سرویس های angular بسازید. روی ایندکس صفحه ما میتوانیم همه ی .js,angular,bootstrap,css, را وارد کنیم(injection) زیرابه صورت پیش فرض این صفحه باز خواهد بود.

2_ لایه MVC Web Api

در این لایه ما میتوانیم کنترلر api، برای استفاده از لایه تهیه شده که مقدار مدل را بر میگرداند،بسازیم.همچنین در این لایه ما قسمت لاگین با استفاده از log4net پیاده سازی میکنیم.

owin Athentication برای تهیه قسمت احراز هویت استفاده میشود. برای هر درخواست هر کنترلر همیشه بررسی میکندکه token صحیح است یا خیر.

3_ لایه Business logic

این لایه  در اصل  برای ساختن یک interface بین api و DAL استفاده میشود.

با توجه به دلایل امنیتی ما با شماره گیری تعاملی به طور مستقیم انجام میدهیم.
 در این لایه ما میتوانیم    interface , BAL بسازیم. که میتوانیم برای فراخوانی  dal استفاده کنیم.

در این لایه شما میتوانید کلاس ها و interface ها بسازید .آنها را در  api controller فراخوانی کنید.

4- لایه Repository

 در این لایه شما میتوانید Edmx. را بسازید، میتوانید مستقیما به پایگاه داده  به واسطه استفاده از entity framework دسترسی داشته باشید.

شما میتوانید برای ارتباط با پایگاه از رویکرد  code first استفاده کنید.

شما میتوانید در این عکس ببینید که ما از فایل edmx. استفاده کردیم و کلاس هایی برای کار با entity ساخته ایم.

5- Utility 

در این class library ما میتوانیم چند متد رایج،enum،constant variable, readonly بسازیم

همانطور شما در عکس میبینید، ما کلاس commnhelper و constat ساخته ایم.

6- مدل

این  class library به طور عمده برای کلاس هایی که میتوانند شامل خصوصیت #C مانند name،باشند، استفاده میشود.

7- واحد تست

اگر شما قصد گسترش خوش ساخت برنامه خود را دارید این مهمترین بخش یک نرم افزار است.

در این شما میتوانید متد های تست را بسازید.

مزایای معماری خوب بر برنامه کاربردی

1-کاهش اتصالات چند گانه کلاس ها

2- عدم وجود هر گونه وابستگی(کلاس ها)

3- سطح احراز هویت بر پایه توکن در web api.

4- امکان استفاده مجدد از کد؛ شما میتوانید bal و dal را در پروژه های دیگر استفاده کنید.

5-باعث یکپارچگی کد میشود.

6- سهولت در تست برنامه

7- درک آسان کد برای همه

8- نگهداری برنامه آسان است.

9- تغییر بروزرسانی برای همه آسان است.

10- عملکرد برنامه را در مقایسه با معماری های ساده و معمولی افزایش میدهد.

آموزش asp.net mvc

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

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

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید