
آموزش برنامه نویسی چند لایه (N-Tier) در سی شارپ سری دوم
آموزش برنامه نویسی چند لایه (N-Tier) در سی شارپ سری دوم یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی ساخت برنامه های چند لایه در سی شارپ است که با نام اصلی Creating N-Tier Applications in C# - Part 2 از شرکت Pluralsight منتشر شده است.
برنامه نویسی چند لایه چیست؟
برنامه نویسی چند لایه یک معماری توسعه ی نرم افزار است که با شکستن برنامه به لایه های مختلف پیاده سازی می شود. اغلب بین دو واژه ی tier و layer که در فارسی هر دو به لایه ترجمه می کنیم تفاوت قائل می شویم. این تفاوت در همین بسته ی آموزشی مورد بررسی قرار گرفته و به شما آموزش داده می شود.
یک برنامه ی چند لایه ی معمول شامل سه لایه ی Presentation، Data Access و Business Logic خواهد بود. یکی از ساده ترین روش های شکستن برنامه به چند لایه، تشکیل چندین پروژه در یک solution برای هر پروژه است. شکستن یک پروژه به لایه های متفاوت باعث افزایش قابلیت نگهداری و مقیاس پذیری می شود. نکته ی بسیار مهم در مورد برنامه های چند لایه عدم نیاز به تغییر کامل پروژه در صورت تغییر در یک لایه است. ضمناً سری اول این محصول با عنوان آموزش برنامه نویسی چند لایه N-Tier در سی شارپ سری اول پیش از این بر روی وبسایت پرووید منتشر شده است.
مزایای برنامه نویسی چندلایه یا N-Tier چیست؟
چندین مزیت برای استفاده از برنامه نویسی N-Tier برای نرم افزار شما وجود دارد. این مزیت ها عبارتند از: مقیاس پذیری، سهولت در مدیریت، انعطاف پذیری و امنیت. در زیر آن ها را شرح داده ایم.
امنیت یا Secure: می توانید هر یک از سه طبقه را به طور جداگانه با استفاده از روش های مختلف ایمن کنید.
مدیریت آسان: شما می توانید هر ردیف را به طور جداگانه مدیریت کنید، هر ردیف را بدون تأثیر بر ردیف های دیگر اضافه یا اصلاح کنید.
مقیاس پذیری یا Scalable: در صورت نیاز به افزودن منابع بیشتر، می توانید این کار را در هر ردیف انجام دهید، بدون این که بر سایر ردیف ها تأثیر بگذارد.

انعطاف پذیری یا Flexible: جدا از مقیاس پذیری جداگانه، همچنین می توانید هر ردیف را به هر نحوی که نیازهای شما حکم می کند، گسترش دهید.
به طور خلاصه، با معماری N-Tier می توانید بدون نیاز به بازنویسی کل برنامه یا طراحی مجدد کل نرم افزار، از فناوری های جدید استفاده کرده و اجزای بیشتری به آن اضافه کنید، در نتیجه مقیاس بندی یا نگهداری آن آسان تر می شود. در همین حال از نظر امنیت نیز می توانید اطلاعات حساس یا محرمانه را در ردیف منطق ذخیره کنید و آنها را از سطح ارائه دور نگه دارید، بنابراین امنیت بیشتری را ایجاد می کنید.
علاوه بر موارد بالا، برنامه نویسی چندلایه مزیت های دیگری نیز دارد. به عبارت دیگر برنامه نویسی چندلایه روشی آسان برای اضافه کردن ویژگی های جدید می باشد. اگر می خواهید یک ویژگی جدید را معرفی کنید، می توانید آن را بدون تأثیر بر سایر ردیف ها به لایه مناسب اضافه کنید. همچنین برنامه نویسی چندلایه روشی آسان برای استفاده مجدد برنامه است. از آنجا که برنامه به سطوح مستقل تقسیم شده است، می توانید به راحتی از هر لایه برای پروژه های نرم افزاری دیگر استفاده کنید. به عنوان مثال، اگر می خواهید از یک برنامه مشابه، اما برای مجموعه داده های مختلف استفاده کنید، می توانید لایه های منطق و ارائه را تکرار کنید و سپس یک لایه داده جدید ایجاد کنید.
تست کردن برنامه های چند لایه در سی شارپ
در برنامههای چند لایه، تست کردن تنها به بررسی خروجی نهایی محدود نمیشود؛ هر بخش باید بهگونهای ارزیابی شود که بتوان رفتار آن را از سایر قسمتهای سیستم تفکیک کرد. در معماریهای حوزهمحور، شناخت مرز میان منطق اصلی برنامه و وابستگیهای بیرونی اهمیت زیادی دارد. این تفکیک کمک میکند آزمونها بر رفتار مورد انتظار تمرکز داشته باشند و هنگام بروز خطا، پیدا کردن منشأ مشکل سادهتر شود. این دوره پیشرفته به بررسی تست یک برنامه چند لایه با رویکرد حوزهمحور میپردازد.
در توسعه با C#، طراحی مناسب وابستگیها میتواند نوشتن تستهای قابل اعتماد را آسانتر کند. اگر منطق اصلی برنامه به جزئیات زیرساختی وابسته باشد، آزمون آن ممکن است دشوارتر شود؛ در مقابل، جداسازی مسئولیتها امکان بررسی بخشهای مختلف را مستقلتر فراهم میکند. یادگیری این رویکرد برای توسعهدهندگانی مفید است که میخواهند کیفیت برنامههای چند لایه خود را ارزیابی کنند و درک بهتری از رابطه میان ساختار معماری و قابلیت تستپذیری داشته باشند.
مدیریت ماندگاری داده ها در معماری N-Tier
در بسیاری از برنامههای سازمانی، دادهها باید پس از پایان اجرای برنامه نیز حفظ شوند و در اجراهای بعدی قابل دسترسی باشند. این موضوع که با مفهوم Persistence شناخته میشود، یکی از بخشهای مهم طراحی سیستمهای نرمافزاری است. در معماری N-Tier، تصمیمگیری درباره محل قرارگیری مسئولیت ذخیرهسازی و نحوه تعامل بخشهای مختلف با دادهها میتواند بر نگهداری و توسعه برنامه اثر بگذارد. این آموزش به بهترین راهکارهای مرتبط با Persistence میپردازد و به بررسی این مسئله در برنامههای چند لایه کمک میکند.

مدیریت درست ماندگاری دادهها مستلزم توجه به مرزبندی مسئولیتها و وابستگی میان منطق برنامه و زیرساخت ذخیرهسازی است. وقتی این مسئولیتها بهصورت روشن سازماندهی شوند، تغییر در جزئیات ذخیرهسازی لزوماً نباید تمام بخشهای برنامه را تحت تأثیر قرار دهد. برای توسعهدهندگان C# که با برنامههای چند لایه کار میکنند، شناخت این اصول به تصمیمگیری آگاهانهتر درباره ساختار کد و حفظ قابلیت نگهداری سیستم کمک میکند.
استفاده مجدد از کدهای هسته در برنامه های C#
استفاده مجدد از کد به معنای بهرهگیری دوباره از منطق و قابلیتهایی است که پیشتر پیادهسازی شدهاند، بهجای آنکه همان منطق در چند بخش مختلف تکرار شود. در برنامههای چند لایه، کدهای هسته میتوانند شامل بخشهایی از منطق مشترک باشند که در بیش از یک قسمت یا سناریوی برنامه کاربرد دارند. این دوره به استفاده مجدد از کدهای هسته میپردازد و به توسعهدهندگان کمک میکند این موضوع را در زمینه طراحی برنامههای N-Tier بررسی کنند.
با افزایش اندازه یک پروژه، تکرار منطق مشابه میتواند هزینه اصلاح و نگهداری را افزایش دهد؛ زیرا یک تغییر ممکن است لازم باشد در چند محل جداگانه اعمال شود. طراحی با قابلیت استفاده مجدد میتواند این تکرار را کاهش دهد، البته به شرط آنکه مرزهای مسئولیت هر بخش بهدرستی مشخص شده باشند. توسعهدهندگان باتجربه C# با درک این اصول بهتر میتوانند میان اشتراکگذاری کد و وابستگی بیش از حد اجزای برنامه تعادل برقرار کنند.
این آموزش پیشرفته N-Tier برای چه کسانی مناسب است؟
این دوره برای برنامهنویسانی مناسب است که با C# و مفاهیم اولیه معماری چند لایه آشنا هستند و میخواهند دانش خود را در زمینه تست، مدیریت دادههای پایدار و استفاده مجدد از کدهای اصلی گسترش دهند. محتوای پیشرفته دوره برای افرادی کاربرد دارد که در طراحی یا نگهداری برنامههای بزرگتر فعالیت میکنند و لازم است درباره ارتباط میان لایهها، مسئولیتها و وابستگیهای سیستم تصمیم بگیرند.
اگر در پروژههای خود با دشواری تست کردن منطق برنامه، مدیریت دادهها یا جلوگیری از تکرار کد مواجه شدهاید، موضوعات این آموزش میتوانند به درک بهتر این چالشها کمک کنند. این دوره بهجای تمرکز صرف بر دستورهای زبان C#، به مسائل طراحی و توسعه برنامههای چند لایه میپردازد. بنابراین، آشنایی قبلی با برنامهنویسی شیءگرا و ساختار کلی برنامههای نرمافزاری، زمینه مناسبی برای استفاده از مطالب آن فراهم میکند.
سرفصل مطالب آموزش ویدئویی برنامه نویسی چند لایه در سی شارپ سری دوم
فصل اول: تست کردن یک برنامه ی چند لایه ی حوزه متمرکز
- مقدمه
- مرور سریع پروژه ی قسمت قبل
- سازماندهی به تست ها
- تست های سریع و کند
- آموزش عملی سازماندهی تست های Unit Test و Integration Test در ویژوال استادیو
- مبحث Test Automation با استفاده از MS Build و اسکریپت ها
- آموزش عملی Test Automation
- جمع بندی
فصل دوم: بهترین راهکارها در Persistence کردن
- مقدمه
- چرخه ی حیات شی
- مبحث Consistency
- مبحث Persistence Responsibility
- استفاده از الگوی طراحی Active Record
- استفاده از الگوی طراحی Repository
- ذخیره در بانک با استفاده از UI برنامه
- مبحث Separation of Concerns
- استفاده از Entity Framework
- نگاشت داده ها با AutoMapper
- روش Code First در Entity Framework
- معرفی nHibernate
- بررسی کامل Repository
- جمع بندی
فصل سوم: استفاده مجدد از کدهای هسته
- مقدمه
- مبحث Inversion of Control
- معرفی StructureMap به عنوان یک IoC Container
- آموزش عملی StructureMap
- پیاده سازی یک Console Application برای کار با داده ها
- افزودن لایه ی Service با MVC Web API
- معرفی DTO و App Logic
- ساختار یک پروژه
- جمع بندی







