نمایش نتایج 1 تا 40 از 1080

نام تاپیک: نمونه برنامه های کوچک و مفيد در سي شارپ

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #8
    کاربر دائمی آواتار RED-C0DE
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    31 4E 20 20 54 48 33 20 20 28 72 59 70 54 30 47 33 4E 31 28 20 20 5C 2F 30 52 31 7C 7C 29 20 20 7C 2
    پست
    551

    یک برنامه 3 سه لایه ساده کلاسیک - دفترچه تلفن

    a simple 3 layers application



    یک نمونه برنامه 3 لایه دیگه ک بصورت ساده با کمک رابط OleDb با منبع داده ارتباط برقرار می کنه... نمونه کوچکی از یک دفترچه تلفنه ، از بانک اطلاعاتی MS Access بعنوان منبع داده استفاده می کنه ک فقط یک جدول ب نام Persons داره..

    برنامه در 3 پروژه مجزا (بصورت لایه دسترسی به داده یا DAL و لایه منطق تجاری برنامه یا BLL و لایه نمایش یا PL) نوشته شده...سعی شده بصورت کلاسیک نوشته بشه و از تکنیکهای جدید مثل LINQ هم استفاده ای نشده! شاید توی ی sample ِ دیگه...!

    در لایه تجاری ، کلاسهایی ب نام Provider (مثل clsPersonProvider) مسئول جوابگویی ب نیاز لایه نمایش هستن ، و در لایه DAL کلاسهایی ب نام Adapter (مثلا clsPersonAdapter) مسئول پاسخگویی ب نیازهای لایه BLL هستن..

    تمام دسترسیها ب بانک (ک مسلما فقط در لایه DAL انجام می شه) از طریق یک کلاس static ب نام clsSingletonConnectionManager انجام می شه... (توسط الگوی singleton اینکار پیاده سازی شده تا همیشه فقط یک instance و یک پل ارتباطی ب بانک وجود داشته باشد..مزایا و معایب این روش رو خودتون پیدا کنید!)

    Validation ِ ساده ای انجام شده، در setter ها...(هنگامی ک مقدار یک پراپرتی ، set می شه بررسی انجام می شه ک مقدار مورد نظر تهی نباشد و در این صورت یک Exception رو ایجاد می کنه)
    (کلا در این قسمت می شه Validation هایی رو بر حسب نیاز انجام داد، در این برنامه ی نمونه خیلی از اینچنین مسائل برای سادگی بیشتر پیاده نشده!)


    برای مثال ، برای گرفتن و نمایش دادن لیست کلیه Person ها ، در لایه نمایش دستور مربوطه صادر می شه و توسط personProvider_ ب لایه "منطق تجاری" فرستاده می شه:
            private void show_All()
    {
    dataGridView1.DataSource = _personProvider.Get_All_Items();
    }



    این درخواست مجددا به لایه "دسترسی ب داده" ارسال می شه (توسط آبجکت personAdapter_) در اونجا لیست کلیه Person ها در آبجکتی از نوع DataTable ِ از پیش ساخته شده (TypedDataTable ، استفاده از TypedDataset , TypedDataTable ها مزایایی داره، مثلا مستقیما ب نام یک فیلد می شه دسترسی پیدا کرد در یک سطر یا همون StrongNaming و اینجور چیزا رو فراهم می کنن) ب نام dsPhonebook.PersonsDataTable
    ریخته می شه (fill می شه) و این جدول برگشت داده می شه ب لایه BLL :


            public dsPhonebook.PersonsDataTable Select_AllPersons()
    {
    return base.select_All(_QUERY_SELECTALL_Persons);
    }


            protected virtual T select_All(string pQuerySelectAll)
    {
    T retTable = new T();

    OleDbDataAdapter da = new OleDbDataAdapter(pQuerySelectAll, clsSingletoConnectionManager.GetConnection2Phonebo ok);
    da.Fill(retTable);

    return retTable;
    }




    در این لایه (BLL) و در ادامه ، مقادیر برگشت داده شده ک در یک dsPhonebook.PersonsDataTable قرار دارن Cast می شن ب :
    List<clsPersonEntity>


    و این List در نهایت ب "لایه نمایش" برگشت داده می شه و در DataGridView مشاهده می شه..

    با تشکر RED-C0DE~
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله RED-C0DE : سه شنبه 06 مرداد 1388 در 12:22 عصر دلیل: عکس

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •