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

  • جداسازی فیزیکی یا tier 
  • جداسازی منطقی یا layer

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

قبل از پرداختن به جزئیات به توضیح کلیات می‌پردازیم.

نکته
دوره پیشنهادی: آموزش پیشرفته سی شارپ

معماری سه لایه در سی شارپ چیست؟

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

معماری سه لایه در سی شارپ پروژه را به سه لایه user interface، business و database تقسیم می‌کند. این نوع از معماری client-server است که در آن لایه Presentation(نمایش)، Business Logic(منطق کاربری) و لایه Date Access(دسترسی به داده) به عنوان module های مستقل بر روی platformهای جداگانه توسعه یافته‌اند. 

معماری سه لایه در سی شارپ

چرا باید از معماری سه لایه در سی شارپ استفاده کرد؟ 

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

در مثالی دیگر فرض کنید که 2000 کد entity ایجاد کرده‌اید و همه کد‌ها در یک لایه هستند. حالا اگر بخواهید کاربرد را از ویندوز به موبایل تغییر دهید باید برای همه entityها کد بزنید. 

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

به طور کلی ما از معماری 3 لایه سی شارپ برای پروژه‌های بزرگ و برای ایجاد ثبات و انعطاف در برنامه استفاده می‌کنیم. همچنین این نوع لایه‌بندی امکان مدیریت بیشتری را فراهم خواهد کرد.

معماری 3 لایه سی شارپ به صورت کلی دارای سه لایه است. با هم این سه لایه را بررسی می‌کنیم.

لایه presentation در معماری 3 لایه سی شارپ

این لایه، لایه بالایی کار و رابط کاربری برنامه محسوب می‌شود. presentation بخشی است که کاربر آن را می‌بیند و وظیفه آن تبدیل درخواست‌ها و نتایج به فرمتی است که کاربر مفهوم آن‌ها را بفهمد. این لایه شامل صفحاتی مثل فرم‌های ویندوز و وب است. در این صفحات از کاربرد اطلاعات ورودی دریافت می‌شود و اطلاعات در اختیار کاربر قرار می‌گیرند(present می‌شوند). لایه presentation مهم‌ترین لایه است چرا که لایه‌ای است که کاربر با آن رابطه مستقیم دارد. یک UI مناسب مخاطبان را جذب می‌کند و به همین دلیل این لایه باید به خوبی طراحی شود. 

لایه business در معماری سه لایه سی شارپ

این لایه، لایه میانی است. این لایه شامل کلاس‌ها، محاسبات منطقی و عملیات‌هایی است که در زیرمجموعه‌های این لایه صورت می‌گیرند. لایه business اطلاعات میان دو لایه را محاسبه می‌کند. لایه قبل از فراخواندن یک method از لایه data، شرایط ورودی را اعتبار سنجی می‌کند. با این روش درستی اطلاعات ورودی قبل از ادامه برنامه مشخص می‌شوند و همچنین می‌توان درستی اطلاعات خروجی را هم حتی تایید کرد. به این اعتبار سنجی اطلاعات قوانین business می‌گویند. 

لایه data در معماری 3 لایه سی شارپ

این لایه برای اتصال لایه business و لایه database به کار می‌رود. این لایه شامل method‌هایی است که برای اجرای عملیات‌ها روی database به کار می‌روند. همچنین شامل دسترالعمل‌هایی برای ورودی‌دادن به database استفاده می‌شوند. بنابراین لایه data یک پیوند بین خود database و عملکرد‌های اجرایی روی database برقرار می‌کتد. 

مراحل پایه‌ای ایجاد یک معماری 3 لایه سی شارپ 

  1. ایجاد یک پروژه
  2. انتخاب فرم ASP.NET
  3. پاک‌کردن تمامی حالت‌های پایه aspx از برنامه 
  4. اضافه کردن یک Web Form جدید
  5. ایجاد یک فرم رجیستری
  6. ایجاد یک جدول برای نام رجیستری با نام‌ها و نوع داده‌ها
  7. اضافه کردن یک Business Class به عنوان میانجی بین UI و لایه دسترسی 
  8. نام‌گذاری Class CustomerReg
  9. مشخص کردن ویژگی‌های class 
  10. ایجاد propertyها برای Class CustomerReg به این معنی است که ما propertyها را به عنوان اعضایی از classها و structureها نام‌گذاری کرده ایم. methodها در classها و structureها را با نام field می‌شناسند. در واقع propertyها جزو extensionهایی از fieldها هستند و با استفاده از syntaxهای یکسانی قابل دسترسی خواهند بود. 
  11. برای مشخص کردن یک property می‌توانید از یک کلمه کلیدی استفاده کنید و دکمه Tab را فشار دهید. 
  12. حالا یک DAL حاوی کد‌های مرتبط با database اضافه کنید.
  13. برای database connection class باید System.Data و System.Data.SqlClient را اضافه کنید.
  14. یک connection جدید اضافه کنید و نام سرور خود را وارد کنید. در این صورت connection روی Server Explorer نمایان می‌شود.
  15. روی properties کلیک راست کنید و سپس به connection string بروید.
  16. سپس connection string را کپی کنید و به web.conFigure file ببرید. همچنین یک connection string بر روی database connectivity اضافه کنید.
  17. حالا مقادیر را وارد Business logic کنید. روی دکمه Submit دو بار کلیک کنید و یک Business class تشکیل دهید. سپس مقادیر TextBox را به properties منتقل کنید.
  18. یک function به نام save در Business layer ایجاد کنید. 
  19. حالا Business layer به عنوان میانجی بین UI و DAL عمل می‌کند. 
  20. یک object از نوع DAL ایجاد کنید.
  21. حالا در Data Access Layer یک Boolean function ایجاد کنید و سپس query را وارد جدول کنید. 
  22. با کامل شدن شما آماده هستید تا جزئیات را با استفاده از معماری 3 لایه سی شارپ وارد database کنید. 

 

مزایای معماری سه لای در سی شارپ

مزایای معماری 3 لایه سی شارپ

  • قابلیت استفاده مجدد و انتقال کتابخانه‌های code-behind اولین مزیت معماری 3 لایه سی شارپ است. شما می‌توانید در سطح presentation تغییرات ایجاد کنید و به دیگر سطوح کاری نداشته باشید.  بنابراین به‌روزرسانی یک محیط گرافیکی راحت‌تر و سریع‌تر است.
  • مدیریت پروژه‌ای بزرگ و پیچیده را راحت می‌کند. 
  • بین لایه presentation، business و data جدایی منطقی ایجاد می‌کند. 
  • معرفی لایه application میان لایه‌های data و presentation سبب ایجاد امنیت بیشتر برای لایه database می‌شود و در نتیجه داده‌ها امن‌تر خواهند بود.
  • شما این امکان را دارید تا method‌های غیرضروری را درون لایه presentation از لایه business مخفی کنید. 
  • ورودی‌های تامین‌کننده‌های داده می‌توانند به راحتی به روزرسانی شوند و مفهوم OOP می‌تواند به راحتی روی یک پروژه اجرا شود. 
نکته
دوره پیشنهادی: معماری کامپیوتر

مشکلات معماری 3 لایه سی شارپ

  • معماری 3 لایه سی شارپ از معماری سرورها با client ساده پیچیده‌تر خواهند بود.
  • ساخت معماری 3 لایه سی شارپ دشوار و زمان‌بر خواهد بود.
  • کاربر باید به خوبی با مفاهیم شئ‌محور آشنا باشد. 

جهت مطالعه بیشتر دراین زمینه میتوانید مقاله مربوط به معماری سه لایه در سی شارپ در وبسایت enlabsoftware را مطالعه کنید.

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