Skip to content

1. مقدمه

PDF برای این سند در |ICI| موجود است.

مثال‌های این سند در |ICI| موجود است.

ما می‌خواهیم یک برنامه .NET بنویسیم که به کاربر امکان دهد شبیه‌سازی‌هایی را برای محاسبه دستمزد مراقبان کودک در انجمن «Maison de la petite enfance» در یک نهاد محلی اجرا کند. ما به اندازهٔ خودِ کد DotNet، بر سازماندهی آن نیز تمرکز خواهیم کرد.

برنامهٔ نهایی که آن را [SimuPaie] می‌نامیم، ساختار سه‌سطحی زیر را خواهد داشت:

  • لایه [1-dao] (DAO = Data Access Object) دسترسی به داده‌ها را مدیریت خواهد کرد. داده‌ها در یک پایگاه داده ذخیره خواهند شد.
  • لایه [2-métier] منطق کسب‌وکار برنامه، یعنی محاسبه حقوق و دستمزد، را مدیریت خواهد کرد.
  • لایه [3-ui] (ui=رابط کاربری) ارائه داده‌ها به کاربر و اجرای پرس‌وجوهای او را مدیریت خواهد کرد. ما به مجموعه‌ای از ماژول‌هایی که این وظیفه را انجام می‌دهند، [Application] می‌گوییم. این لایه به‌عنوان رابط کاربری عمل می‌کند.
  • سه لایه از طریق استفاده از رابط‌های .NET مستقل خواهند شد
  • یکپارچه‌سازی لایه‌های مختلف توسط Spring IoC انجام خواهد شد.

پردازش یک درخواست مشتری مراحل زیر را دنبال می‌کند:

  1. کلاینت درخواستی را به برنامه ارسال می‌کند.
  1. برنامه این درخواست را پردازش می‌کند. برای انجام این کار، ممکن است به کمک لایه [métier] نیاز باشد که خود ممکن است در صورت نیاز به تبادل داده با پایگاه داده، به لایه [dao] نیاز پیدا کند. برنامه پاسخ را از لایه [métier] دریافت می‌کند.
  2. بر اساس این، نمای مناسب (= پاسخ) را به کلاینت ارسال می‌کند.

رابط کاربری ارائه‌شده به کاربر می‌تواند اشکال مختلفی داشته باشد:

  1. یک برنامه کنسول: در این حالت، نما مجموعه‌ای از خطوط متن است.
  2. یک برنامه گرافیکی ویندوز: در این حالت، نما یک پنجره ویندوز است
  3. یک برنامه وب: در این حالت، نما یک صفحه HTML است
  4. ...

ما نسخه‌های مختلفی از این برنامه خواهیم نوشت:

  1. نسخه‌ای از ASPNET شامل یک فرم واحد و ساخته شده با معماری تک‌لایه.
  2. نسخه‌ای مشابه نسخه قبلی اما با افزونه‌های Ajax
  3. نسخه‌ای به نام ASP.NET مبتنی بر معماری سه‌لایه، که در آن لایه دسترسی به داده‌ها با استفاده از چارچوب NHibernate پیاده‌سازی شده است. این نسخه همچنان دارای همان فرم واحد نسخه ۱ خواهد بود.
  4. نسخهٔ ۴ (ASP.NET) با چندین نما و یک صفحهٔ واحد، با استفاده از معماری سه‌لایهٔ نسخهٔ ۳.
  5. سمت سرور یک برنامهٔ کلاینت/سرور، که در آن سرور به‌عنوان یک سرویس وب بر اساس معماری لایه‌ای نسخهٔ ۳ پیاده‌سازی شده است.
  6. بخش کلاینتِ برنامهٔ کلاینت/سرورِ مذکور، پیاده‌سازی‌شده توسط لایهٔ ASP.NET.
  7. یک نسخهٔ ۷ ASP.NET از یک برنامهٔ چندنمای و چندصفحه‌ای با معماری سه‌لایهٔ نسخهٔ ۳.
  8. نسخهٔ ۸ ASP.NET، نسخهٔ کلاینت چندنمایه‌ای و چندصفحه‌ای سرویس وب نسخهٔ ۵.
  9. نسخه ۹ (ASP.NET) با چندین نما و صفحه، با استفاده از معماری سه‌لایه نسخه ۳، که در آن لایه دسترسی به داده‌ها با استفاده از کلاس‌های Spring پیاده‌سازی شده است که استفاده از چارچوب NHibernate را تسهیل می‌کند.
  10. نسخهٔ ۱۰، پیاده‌سازی‌شده در FLEX و به‌عنوان مشتری سرویس وب نسخهٔ ۵ عمل می‌کند.

پیش‌نیازها


در چارچوب [débutant-intermédiaire-avancé]، این سند بخشی از بخش [intermédiaire] است. درک آن نیازمند پیش‌نیازهای مختلفی است که در برخی از اسنادی که نوشته‌ام یافت می‌شوند:

  1. برنامه‌نویسی ASP.NET [Développement WEB avec ASP.NET 1.1 ];
  2. سی‌شارپ ۲۰۰۸: [Apprentissage du langage C# Version 3.0 avec le Framework .NET 3.5 ]: کلاس‌ها، اینترفیس‌ها، ارث‌بری، چندریختی
  3. [Spring IoC]، در URL [Spring IoC pour .NET ] موجود است. مبانی معکوس‌سازی کنترل (IoC) یا تزریق وابستگی (DI) را در چارچوب Spring.Net [http://www.springframework.net] معرفی می‌کند.
  4. [Construction d'une application web à trois couches avec Spring et VB.NET]، در دسترس در URL و [Création d'une application web à trois couches avec Spring.NET et VB.NET]. این دوره یک برنامه کاربردی ساده‌شده برای خرید آنلاین محصولات ارائه می‌دهد. معماری سه‌لایه آن مدل MVC را پیاده‌سازی می‌کند.

پیشنهادهای مطالعهٔ بیشتر گاهی در ابتدای پاراگراف‌های این سند ارائه می‌شوند. این پیشنهادها به اسناد قبلی ارجاع می‌دهند.


ابزارها


ابزارهای مورد استفاده در این مطالعه موردی به صورت رایگان در وب در دسترس هستند. این ابزارها به شرح زیر هستند:

  • Visual C# 2008، Visual Web Developer Express 2008، SQL Server Express 2005، موجود در URL [http://www.microsoft.com/express/downloads/].
  • Spring IoC برای نمونه‌سازی سرویس‌های مورد نیاز برنامه، در URL [http://www.springframework.net/] موجود است – همچنین به [3] مراجعه کنید
  • NHibernate برای لایه دسترسی به داده‌های SGBD [http://sourceforge.net/projects/nhibernate/]
  • NUnit: [http://www.nunit.org] برای تست‌های واحد.