رفتن به مطلب



iran rules jazbe modir
ADS mahak

پست های پیشنهاد شده

معماری سه لایه چیست؟

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

  • Presentation Layer
  • Business Logic Layer
  • Data Access Layer

همان طور که احتمالاً حدس زده‌اید، لایه Presentation چیزی نیست به جز بخشی از نرم افزار که با کاربر برنامه شما ارتباط برقرار می‌کند (اینترفیس برنامه شماست) نمایش داده‌ها به کاربر نهایی و اجازه به آنان برای ارتباط داشتن با داده‌ها، اصلی‌ترین وظیفه این لایه است. در بیشتر موارد داده‌هایی که توسط کاربر وارد می‌شوند نیاز به اعتبارسنجی یا پردازش اضافی دارند. این مسوولیت لایه Business Logic است. در نهایت داده‌های برنامه شما نیاز به ذخیره و بازیابی از طریق یک انبار داده دارند (مثلاً سیستم مدیریت دیتابیس‌های رابطه‌ای یا RDBMS و یا XML , .. ) این وظیفه توسط لایه دسترسی به داده انجام می‌شود. به طور خلاصه، فرآیند مورد نظر ما این گونه کار می‌کند:

  • کاربر برای داده‌های برنامه درخواستی ارسال می‌کند.
  • لایه Data Access داده‌های مورد نظر را بازیابی می‌کند و از طریق لایه Business Logic آن‌ها را به لایه نمایش می‌فرستد. بعضی مواقع لایه دسترسی به داده‌ها، این داده‌ها را مستقیماً به لایه نمایش ارسال می‌کند.
  • لایه نمایش اطلاعاتی که باید نمایش داده شوند را از طریق لایه Business Logic دریافت می‌کند.
  • کاربر داده‌ها را تغییر می‌دهد و عمل مناسب در مورد آن‌ها را اجرا می‌کند (مثل اضافه یا به روز کردن داده‌ها )
  • لایه Business Logic صحت داده‌های وارد شده توسط کاربر را بررسی می‌کند (داده‌ها را اعتبار سنجی می‌کند)
  • اگر داده‌ها معتبر باشند آن‌ها را برای به روز رسانی در بانک اطلاعاتی به دست لایه دسترسی به داده می‌سپارد.

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

telegram channel   jazbe modir

مزیت‌های برنامه‌های چند لایه

  • برنامه‌ها به چند بخش منطقی جدا از هم تقسیم می‌شوند و اتصال میان UI ( رابط کاربری)، پردازش‌ها و بانک اطلاعاتی کم می‌شود.
  • تغییر در بانک اطلاعاتی یا روال‌های دسترسی به داده‌ها تاثیری در لایه نمایش یا برنامه کلاینت نخواهد گذاشت.
  • برنامه کلاینت با عبارات SQL آمیخته نخواهد شد.
  • نام جداول و ستون‌ها به طور موثری از برنامه کلاینت حذف می‌شوند.
  • برنامه کلاینت نمی‌فهمد که داده‌ها از کجا آمده‌اند (چیزی که به آن location transparency گفته می‌شود )
  • تغییر یا گسترش برنامه بسیار ساده‌تر خواهد شد، بدون نیاز به تغییر یا کامپایل مجدد برنامه کلاینت.

نکته منفی در معماری سه لایه این است که شما باید تعداد زیادی بخش‌ها و کلاس‌های از هم جدا در نرم افزار بسازید. اما به هر حال مزایای این روش بیشتر و برتر از معایب آن است.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

انتخاب‌های لایه Presentation

دو انتخاب اصلی برای ساخت یک لایه نمایش در دات نت وجود دارد. آن‌ها فرم‌های ویندوزی یا فرم‌های وبی ASP.NET هستند. با استفاده از ویندوز فرم‌ها شما می‌توانید برنامه‌های دسکتاپ فرم محور ( form base ) معمول را بسازید. برنامه‌های ویندوز فرمی می‌توانند المان‌های رابط کاربری بسیار غنی به کاربر پیشنهاد کنند. آن‌ها کم و بیش شبیه به فرم‌های ویژوال بیسیک هستند. جذاب‌ترین گزینه برای توسعه لایه نمایش استفاده از وب فرم‌های ASP.NET است. کنترل‌هایی مثل دیتاگرید، دیتالیست و تقویم ( Calendar ) یک رابط کاربری قدرتمند را با مقدار کمی کد فراهم می‌کنند. انتخاب‌هایی که در بالا برای ساخت یک لایه نمایش بررسی کردیم می‌توانند توسط زبان‌های مختلفی مثل سی شارپ یا ویژوال بیسیک دات نت پیاده سازی شوند.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

انتخاب‌های لایه Business Logic

لایه Business logic از چندین بخش که کارهایی نظیر اعتبار سنجی کار، گردش کار یا کارهای مشابه را انجام می‌دهند تشکیل شده است. کامپوننت های دات نت این لایه را شکل می‌دهند.

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

انتخاب‌های لایه Data Access

این لایه با دستکاری داده‌ها مثل اضافه، حذف و به روز رسانی آن‌ها سر و کار دارد. داده‌هایی که به آن‌ها اشاره کردیم می‌توانند در RDBMS یا XML قرار داشته باشند. شما باید لایه دسترسی به داده را چنان طراحی کنید که دیگر لایه‌ها نیازی به دانستن وضعیت انبار داده‌ها نداشته باشند. ADO.NET فناوری دسترسی به داده تحت دات نت است. اگر چه ADO.NET از طریق کلاس‌های DataReader اجازه دسترسی به داده‌های در هنگام اتصال را می‌دهد ولی بیشترین تمرکز روی دسترسی به داده‌ها در زمان متصل نبودن است. دیتاست نقش کلیدی را در این مورد بازی می‌کند. در بعضی موارد شما می‌توانید ADO را هم برای دسترسی به داده‌ها استفاده کنید ولی استفاده از آن باید دلیل معتبری داشته باشد. از ADO استفاده نکنید فقط به خاطر اینکه RecordSet ها را دوست دارید. این جا هم کامپوننت های دات نت لایه را تشکیل می‌دهند. همچنین وب سرویس‌ها هم می‌توانند لایه دسترسی به داده را شکل دهند. این مخصوصاً زمانی درست است که دیتابیس شما فراهم کننده ( provider ) داده ندارد. در این گونه موارد شما می‌توانید مقداری کد برای اتصال به داده‌ها و پر کردن دیتاست ها و بازگرداندن نتایج درون دیتاست به درخواست کننده داده بنویسید. علاوه بر ADO.NET شما می‌توانید از امکانات سیستم مدیریت دیتابیس خود مثل توابع و یا روال‌های ذخیره شده ( Stored Procedures ) استفاده کنید. در این سری آموزشی قصد داریم در قالب یک پروژه عملی این معماری را به شما آموزش دهیم.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

تشریح لایه ها در معماری سه لایه

هر پروژه ای که در آن از تکنیک برنامه نویسی سه لایه استفاده می شود به سه بخش کلی(لایه) تقسیم می شود :

  • Presentation Layer : در این لایه ظاهر برنامه قرار می گیرد ، از طریق این لایه کاربران می توانند با برنامه ارتباط برقرار کنند و داده های خود را مشاهده یا وارد نمایند.
  • Business Logic Layer : منطق اصلی برنامه در این لایه قرار می گیرد . قوانین و کد های معتبر سازی ( Validation ) و دسترسی ( Authentication ) در این لایه قرار می گیرند .
  • Data Access Layer: همانطور که از اسمش می توان فهمید در این لایه کد های دسترسی به داده نوشته می شود . در این لایه می توانید از تکنولوژی های مختلف بانک اطلاعاتی همانند Entity Framework ، Linq to Sql ، Ado.net استفاده کنید .

قصد دارم که با 2 کلاس DALPersonel ( Data Access Layer ) و BLLPersonel ( Business Logic Layer ) و به کمک فرم نمایش داده ها برنامه نویسی سه لایه را جهت ورود داده ها برای جدول Personel پیاده سازی نماییم . ابتدا یک بانک اطلاعاتی با یک جدول با نام tablePersonels و سه فیلد به نام های Id ، FirstName ، LastName ایجاد می کنیم :

263852837_C.JPG.6459e62c1b389bfabf363f06e3f759e0.JPG

سپس دو کلاس به نام های BLLPersonel و DALPersonel ایجاد می کنیم :

768798406_C.JPG.d7b17f7e723e509984d3e6752dc3bba1.JPG

بر روی کلاس DALPersonel دابل کلیک کرده و کد ها زیر را در آن قرار دهید (رشته اتصال بانک اطلاعاتی(خط 5) را مناسب با سیستم و مشخصات بانک اطلاعاتی خود تغییر دهید) :

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

سپس بر روی کلاس BLLPersonel دابل کلیک کرده و کد زیر را در آن قرار دهید :

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

از آنجاییکه لایه BLL منطق برنامه را بر عهده دارد ، در این لایه بررسی می کنیم که اگر شروطی حاکم بود عمل اتصال به لایه Data Access انجام شود . مثلا در مثال بالا ابتدا بررسی می کنیم که آیا فایل personel.txt در مسیر پروژه قرار دارد یا خیر . اگر وجود نداشته باشد ارتباط با بانک برقرار می کنیم . این شرط فقط به عنوان مثال نوشته شده است و در برنامه های شما ممکن است شروط خاص خود را داشته باشید. بر روی فرم دابل کلیک کرده و کد زیر را در رویداد Load آن می نویسیم :

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

در کد بالا از کلاس BLLPersonel شی ای را می سازیم . این کد باعث ارتباط لایه Presentation با Business Logic می شود . در شکل زیر نمای کلی ارتباط لایه های مذکور نشان داده شده است :

73481998_C.JPG.17f2887725e36f76609818f3f04803b6.JPG

1149654715_C.JPG.87767dbc877e61d77755b8d29e3ff21e.JPG

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

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

در برنامه بالا کد ها به شیوه ی تمیز تر و بهتری نوشته شده اند . کد ها در هم پیچیده نیستند و منطق برنامه به بخش های جدا از هم تقسیم می شود . مزیت مهمتری که کد نویسی بالا دارد این است که ممکن است در برنامه ای از تکنولوژی قدیمی مثل Ado.net برای دسترسی به داده استفاده کرده باشیم و بعد از مدتی که تصمیم گرفتیم که از تکنولوژی جدیدتری مانند Entity Framework یا Linq to Sql برای دسترسی به داده استفاده کنیم اگر منطق برنامه مانند شکل بالا به قسمت های مناسبی تقسیم بندی شده باشد و لایه ی Data Access وجود داشته باشد به راحتی می توانیم فقط این لایه را دستکاری کنیم .

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

معایب کد نویسی به شکل بالا

در شکل بالا اگر به کد های لایه ی نمایش ( Presentation ) دقت کنید ، این لایه هیچگونه شناختی از فیلد ها و ستون های بانک اطلاعاتی ندارد و در زمان اجرا ساختار بانک را درک می کند . معمولا وظیفه حل این مشکل بر عهده لایه ی Business Logic هست به این صورت اگر این لایه ساختار بانک را بشناسد ، لایه ی Presentation نیز با توجه به ارتباطی که با این لایه دارد ساختار بانک را درک می کند . راه حلی که برای این مشکل وجود دارد این است که می توانیم یک کلاس اضافی به پروژه اضافه کنیم و ساختار بانک را در ان تعریف کنیم ، سپس این کلاس را در هر 3 لایه استفاده کنیم . به این ترتیب هر سه لایه از ساختار بانک اطلاعاتی باخبر می شوند. این لایه جدید Business Entity Layer نام دارد .

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

Business Entity Layer

در این لایه به ازای هر جدول موجود در بانک ، یک کلاس همنام با آن به همراه خصوصیاتی متناظر با فیلد های جدول ایجاد می کنیم ، پس از ایجاد لایه ی موجودیت ، این لایه به طور مشترک در بین تمامی لایه های استفاده می شود :

674331908_C.JPG.26e31f52a0abac39aa78511129aab844.JPG

به عنوان مثال در بانک اطلاعاتی شکل زیر یک جدول به نام tablePersonels وجود دارد . این جدول دارای فیلد هایی به نام Id ، FirstName ، LastName می باشد . برای تبدیل این جدول به یک کلاس Entity Layer شما باید یک کلاس هم نام به این جدول و خصوصیاتی همنام با فیلد های آن ایجاد کنید.

870484045_C.JPG.fa20c7a1a0a1394cdd3101e390be5166.JPG

در شکل زیر عمل Insert را با استفاده از معماری جدید می نویسیم :

1151197704_C.JPG.1a31896ac83f5f18e0c04790a5c8dec6.JPG

در مثال بالا کد ها نسبت به مثال قبلی شکل بهتر و قابل فهمتری دارند ولی بازهم مشکلاتی دارد . به عنوان مثال جداسازی کد ها می تواند به شکل بهتری انجام شود . مثلا هر لایه را می توان در یک Class Library قرار داد و با استفاده از Reference ها بین لایه ها ارتباط برقرار کرد . برای تقسیم بندی صحیح لایه های بهتر است هر لایه را در یک پروژه از نوع Class Library یا همان Dll ها قرار دهیم ( به جز لایه ی Presentation).

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

کتابخانه ی Data Access

در این لایه به ازای هر جدول وجود در بانک یک کلاس همنام با آن ایجاد می کنیم و در آن کد های دسترسی به جدول مانند چهار عمل اصلی را می نویسیم. خروجی کامپایل این پروژه از نوع Dll می باشد و باید به پروژه Business Logic آن را اضافه کنیم. این کار را برای این انجام می دهیم که بتوانیم به کد های این پروژه در لایه ی جدید(Business Logic) دسترسی داشته باشیم.

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   بازگردانی قالب بندی

  حداکثر استفاده از ۷۵ شکلک مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

در حال بارگذاری

  • مطالب مشابه

    • توسط  Doctor Robot
      سی شارپ چیست؟
      سی شارپ (#C) یک زبان برنامه‌نویسی شیء گراست، که توسط شرکت مایکروسافت ساخته شده و ترکیبی از قابلیت‌های خوب ++C و JAVA است. اگر با این دو زبان آشنایی دارید، این شانس را دارید که زبان #C را راحت یاد بگیرید. این زبان به قدری راحت است که هم کسانی که قبلاً برنامه‌نویسی نکرده‌اند و هم دانش آموزان می‌توانند راحت آن را یاد بگیرند.
      از سی شارپ، می‌توان برای ساخت برنامه‌های تحت ویندوز، تحت وب، وب سرویس‌ها، برنامه‌های موبایل و بازی‌ها استفاده کرد. می‌توان به جای واژه ویژوال سی شارپ از کلمه سی شارپ استفاده کرد، اما ویژوال سی شارپ به معنای استفاده همزمان از سی شارپ و محیط گرافیکی ویژوال استودیو می‌باشد. این زبان برنامه‌نویسی تنها زبانی است که مخصوصاً برای دات نت فریم ورک طراحی شده است.
      سی شارپ از کتابخانه کلاس دات نت که شامل مجموعه بزرگی از اجزاء از قبل ساخته شده است، استفاده می‌کند. این اجزاء به ساخت هر چه سریع‌تر برنامه‌ها کمک می‌کنند. سی شارپ یک برنامه بسیار قدرتمند و شیء گرا است و با آن می‌توان برنامه‌هایی با قابلیت مدیریت بیشتر و درک آسان ایجاد کرد. ساختار این زبان نسبت به زبان‌های دیگر بسیار آسان و قابل فهم است.
      برای اجرای یک برنامه سی شارپ ابتدا باید دات‌نت فریم‌ورک نصب شود. سی شارپ یکی از زبان‌هایی است که از تکنولوژی‌های دیگر دات نت مانند، ASP.NET ،Silverlight و XNA پشتیبانی می‌کند. همچنین یک محیط توسعه یکپارچه دارد که آن نیز به نوبه خود دارای ابزارهای مفیدی است که به شما در کدنویسی کمک می‌کند.
    • توسط  Silent
      بنام خدا
      دوستان تو این قسمت اموزشمون که این بار دیگه ویدیو نیست
      چون زیاد نبود که بشه ویدیو درست کرد
      میخوام گرفتن ای پی پابلیک رو تو سی شارپ اموزش بدم
      کاربردش مثلا بعضی مواقع میخواید به سیستم فرد حمله ای چیزی کنید نمیتونید که برید بهش بگید  برو تو اینترنت بزن
      whatismyipaddress
      میتونید یه برنامه بدید بهش و براخودتون ایمیل کنید یا مث چت بفرستید!
      که حالا فقط من طرز چطوری گرفتنش رو الان میگم اون ایمیل و چت و ... برا بعدا
       
      خلاصه این همه حرف زدیم برای این دوخط
      :
      برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید
      این متود  میاد یه درخواست به سایت میده با  webclient
      بعد میاد توسط متوده  downloadstring  کلمه یا رشته های درون سایت رو دانلود میکنه و میگیره
      بعد هم میاد ای پی رو به ما نشون میده!
    • توسط  Silent
      بنام خدا
      خب دوستان به نظرم درد سر خیلیا اینه که چطوری بعد از بالا اومدن ویندوز اون فایل مخرب یا هر برنامه ای اجرا بشه!
       
      تو این ویدیو میتونید این مطلب رو به سادگی یاد بگیرید!
      دانلود ویدیو در لینک زیر:

      برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید
    • توسط  Silent
      بنام خدا
      دوستان تو این اموزش قصد داریم ای پی لوکال سیستم رو با سی شارپ بدست بیاریم
      به همراه ای پی های دیگه مانند ای پی  هایی که وقتی  wmware نصب میکنیم!!
       
       لینک دانلود:

      برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید
    • توسط  Silent
      بنام خدا
      تو این جلسه میخوایم مک ادرس سیستم رو با دستورات لینک در سی شارپ بدست بیاریم
       
      لینک دانلود اموزش:

      برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید
  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • جدید...