در معماری چند لایه تمام برنامه به چندین بخش تقسیم میشود. این بخشها میتوانند فیزیکی یا منطقی باشند. هر بخش کار خاصی را انجام میدهد مثلا نمایش interface کاربر یا دسترسی به دادهها. برنامه میتواند به هر تعداد لایه داشته باشد ولی به هر حال بیشتر برنامهها سه لایهی مجزا دارند که عبارتاند از:
ـ Presentation Layer
ـ Business Logic Layer
ـ Data Access Layer
همانطور که احتمالا حدس زدهاید، لایهی Presentation چیزی نیست به جز بخشی از نرمافزار که با کاربر برنامهی شما ارتباط برقرار میکند (interface برنامهی شماست). نمایش دادهها به کاربر نهایی و اجازه به آنان برای ارتباط داشتن با دادهها، اصلیترین وظیفهی این لایه است.
در بیشتر موارد، دادههایی که توسط کاربر وارد میشوند نیاز به اعتبارسنجی یا پردازش اضافی دارند. این مسؤولیت لایهی Business Logic است.
در نهایت دادههای برنامهی شما نیاز به ذخیره و بازیابی از طریق یک انبار داده دارند (مثلا سیستم مدیریت DataBaseهای رابطهای یا RDBMS و یا XML و ...) این وظیفه توسط لایهی دسترسی به داده انجام میشود.
بهطور خلاصه، فرایند مورد نظر اینگونه کار میکند:
- کاربر برای دادههای برنامه، درخواستی ارسال میکند.
- لایهی Data Access دادههای مورد نظر را بازیابی میکند و از طریق لایهی Business Logic آنها را به لایهی نمایش میفرستد. بعضی مواقع لایهی دسترسی به دادهها، این دادهها را مستقیما به لایهی نمایش ارسال میکند.
- لایهی نمایش اطلاعاتی که باید نمایش داده شوند را از طریق لایهی Business Logic دریافت میکند.
- کاربر دادهها را تغییر میدهد و عمل مناسب در مورد آنها را اجرا میکند (مثل اضافه یا بهروز کردن دادهها)
- لایهی Business Logic صحت دادههای وارد شده توسط کاربر را بررسی میکند (دادهها را اعتبارسنجی میکند)
- اگر دادهها معتبر باشند آنها را برای بهروز رسانی در بانک اطلاعاتی بهدست لایهی دسترسی به داده میسپارد.
● مزیتهای برنامههای چند لایه
- برنامهها به چند بخش منطقی جدا از هم تقسیم میشوند و اتصال میان UI (رابط کاربری)، پردازشها و بانک اطلاعاتی کم میشود.
- تغییر در بانک اطلاعاتی یا روالهای دسترسی به دادهها، تاثیری در لایهی نمایش یا برنامهی کلاینت نخواهد گذاشت.
- برنامهی کلاینت با عبارات SQL آمیخته نخواهد شد.
- نام جداول و ستونها بهطور مؤثری از برنامهی Client حذف میشوند.
- برنامهی Client نمیفهمد که دادهها از کجا آمدهاند (چیزی که به آن Location Transparency گفته میشود)
- تغییر یا گسترش برنامه بسیار سادهتر خواهد شد، بدون نیاز به تغییر یا کامپایل مجدد برنامهی Client.
نکتهی منفی در معماری چند لایه این است که شما باید تعداد زیادی بخشها و کلاسهای ازهم جدا در نرمافزار بسازید. اما به هر حال مزایای این روش بیشتر و برتر از معایب آن است.
● انتخابهای لایهی Presentation
دو انتخاب اصلی برای ساخت یک لایهی نمایش در دات نت وجود دارد. آنها فرمهای ویندوزی یا فرمهای وبی ASP.NET هستند.
با استفاده از ویندوز فرمها شما میتوانید برنامههای دسکتاپ فرم محور (Form Base) معمول را بسازید. برنامههای ویندوز فرمی میتوانند المانهای رابط کاربری بسیار غنی بهکاربر پیشنهاد کنند. آنها کم و بیش شبیه به فرمهای ویژوال بیسیک هستند.
جذابترین گزینه برای توسعهی لایهی نمایش استفاده از وب فرمهای ASP.NET است. کنترلهایی مثل: دیتاگرید، دیتالیست و تقویم (Calendar) یک رابط کاربری قدرتمند را با مقدار کمی کد فراهم میکنند.
انتخابهایی که در بالا برای ساخت یک لایهی نمایش بررسی کردیم میتوانند توسط زبانهای مختلفی مثل C#Visual Studio.Net پیادهسازی شوند.
● انتخابهای لایهی Business Logic
لایهی Business Logic از چندین بخش که کارهایی نظیر اعتبار سنجی کار، گردش کار یا کارهای مشابه را انجام میدهند تشکیل شده است.
Componentهای .Net این لایه را شکل میدهند. شما میتوانید با Interop از Componentهای COM استفاده کنید ولی این کار کارایی را پایین خواهد آورد.
وبسرویسهای ASP.NET هم میتوانند بهعنوان یک Business Logic عمل کنند. اما به هر حال آنها را نمیتوان در همهی شرایط بهعنوان جایگزین Componentها بهکار برد. وبسرویسها تنها زمانی قابل استفاده خواهند بود که اعتبارسنجی در جایی بیرون از شبکهی شما اتفاق افتاده باشد.
Componentهایی که توسعه میدهید به ماندن روی ماشینهای مشابه نیازی ندارند. با استفاده از دات NET Remoting میتوانید آنها را روی چندین ماشین توزیع کنید.
● انتخابهای لایهی Data Access
این لایه با دستکاری دادهها مثل اضافه، حذف و بهروز رسانی آنها سر و کار دارد. دادههایی که به آنها اشاره کردیم میتوانند در RDBMS یا XML قرار داشته باشند. شما باید لایهی دسترسی به داده را چنان طراحی کنید که دیگر لایهها نیازی به دانستن وضعیت انبار دادهها نداشته باشند.
ADO.NET فناوری دسترسی به دادهی تحت دات .Net است. اگر چه ADO.NET از طریق کلاسهای DataReader اجازهی دسترسی به دادههای در هنگام اتصال را میدهد ولی بیشترین تمرکز روی دسترسی به دادهها در زمان متصل نبودن است. DataSet نقش کلیدی را در این مورد بازی میکند. در بعضی موارد میتوانید ADO را هم برای دسترسی به دادهها استفاده کنید ولی استفاده از آن باید دلیل معتبری داشته باشد. از ADO استفاده نکنید فقط به خاطر اینکه RecordSetها را دوست دارید!
اینجا هم Componentهای .Net لایه را تشکیل میدهند. همانطور که قبلا گفته شد میتوانید از Componentهای کلاسیک COM هم استفاده کنید.
همچنین وبسرویسها هم میتوانند لایهی دسترسی به داده را شکل دهند. این مخصوصا زمانی درست است که DataBase شما فراهمکنندهی (Provider) داده ندارد. در اینگونه موارد شما میتوانید مقداری کد برای اتصال به دادهها و پر کردن DataBaseها و بازگرداندن نتایج درون DataSet به درخواستکنندهی داده بنویسید.
علاوه بر ADO.NET شما میتوانید از امکانات سیستم مدیریت DataBase خود مثل توابع و یا روالهای ذخیره شده (Stored Procedures) استفاده کنید.
● ارسال داده از یک لایه به لایهی دیگر
در تمام موارد به ارسال اطلاعات از یک لایه به لایهی دیگر نیاز است؛ بهطور معمول برنامهنویسان از رشتهها، آرایهها، RecordSetهای غیرمتصل برای رسیدن به این هدف استفاده میکنند. در .Net ، DataSetها یک راه فوقالعاده برای انتقال اطلاعات میان لایهها فراهم میکنند. شما حتی میتوانید با برنامهنویسی یک DataSet بسازید و آن را با دادههای خودتان پر کنید. اگر اشیا را خیلی دوست دارید میتوانید از Typed DataSets استفاده کنید که در واقع کلاسی مشتق شده از کلاس DataSet است که جداول و سطرها را به شکل یک شی معرفی میکند.
برنامه نویسی چند لایه multi-tier
در اين بخش ميتوانيد در مباحث مربوط به مهندسي نرم افزار به بحث بپردازيد
مدیران انجمن: abbas.m.k, athlon64x2, شوراي نظارت
بازگشت به “Software Engineering”
پرش به
- بخشهاي داخلي
- ↲ اخبار و قوانين سايت
- ↲ سوالات، پيشنهادات و انتقادات
- ↲ مرکز جوامع مجازي - CentralClubs Network
- ↲ سرويس ميزباني وب - CentralClubs Hosting
- ↲ مجله الکترونيکي مرکز انجمنهاي تخصصي
- بخش تلفن همراه
- ↲ نرم افزار تلفن همراه
- ↲ Symbian App
- ↲ Android App
- ↲ Windown Phone App
- ↲ iOS App
- ↲ JAVA Mobile App
- ↲ بازيهاي تلفن همراه
- ↲ Symbian Games
- ↲ Android Games
- ↲ iOS Games
- ↲ Windows Phone Games
- ↲ JAVA Mobile Games
- ↲ گوشيهاي تلفن همراه
- ↲ Sony
- ↲ Samsung
- ↲ GLX
- ↲ Dimo
- ↲ Huawei
- ↲ Motorola
- ↲ Nokia
- ↲ گوشيهاي متفرقه
- ↲ سرگرميهاي تلفن همراه
- ↲ خدمات و سرويسهاي مخابراتي
- ↲ تازه ها و اخبار تلفن همراه
- ↲ مطالب كاربردي تلفن همراه
- ↲ متفرقه در مورد تلفن همراه
- ↲ سوالات و اشکالات تلفن همراه
- بخش كامپيوتر
- ↲ نرم افزار كامپيوتر
- ↲ گرافيک و طراحي کامپيوتري
- ↲ طراحي صفحات اينترنتي
- ↲ سوالات و اشکالات نرم افزاري
- ↲ برنامه نويسي
- ↲ C Base Programming
- ↲ Dot Net Programming
- ↲ Web Programming
- ↲ Other Programming
- ↲ Software Engineering
- ↲ Java Programming
- ↲ Database Programming
- ↲ سخت افزار كامپيوتر
- ↲ امنيت و شبكه
- ↲ امنيت
- ↲ شبکه
- ↲ تازه ها و اخبار دنياي کامپيوتر
- ↲ مطالب كاربردي كامپيوتر
- ↲ متفرقه در مورد کامپيوتر
- بخش هوا فضا
- ↲ نيروي هوايي ايران
- ↲ متفرقه درباره نیروی هوایی
- ↲ نیروی هوایی و سازندگی
- ↲ حماسه و حماسه آفرینان نيروي هوايي
- ↲ تیزپروازان در بند
- ↲ شهدا و جانباختگان نیروی هوایی
- ↲ عملیاتهاي نيروي هوايي
- ↲ دستاوردها و اخبار نيروي هوايي
- ↲ تاریخچه نیروی هوایی در ایران
- ↲ هوانيروز ايران
- ↲ حماسه و حماسه آفرينان هوانيروز
- ↲ شهدا و جانباختگان هوانيروز
- ↲ دستاوردها و اخبار هوانيروز
- ↲ هواپيماها
- ↲ هواپيماهاي نظامي
- ↲ هواپيماهاي غير نظامي
- ↲ هواپيماهاي بدون سرنشين
- ↲ بالگردها
- ↲ بالگردهاي نظامي
- ↲ بالگردهاي غير نظامي
- ↲ بالگردهاي بدون سرنشين
- ↲ اخبار بالگردها
- ↲ تسليحات هوايي
- ↲ موشكهاي هوا به هوا
- ↲ موشكهاي هوا به زمين
- ↲ موشکهاي دريايي
- ↲ موشکهاي زمين به هوا
- ↲ موشکهاي زمين به زمين
- ↲ ديگر مباحث هوانوردي
- ↲ الکترونيک هواپيمايي
- ↲ موتورهاي هوايي
- ↲ شبيه سازهاي پرواز
- ↲ گالري تصاوير هوافضا
- ↲ تصاوير هواپيماهاي جنگنده
- ↲ کليپهاي هوايي
- ↲ تصاوير هواپيماهاي بمب افکن
- ↲ تصاوير هواپيماهاي ترابري
- ↲ تصاوير هواپيماهاي مسافربري
- ↲ تصاوير هواپيماهاي شناسايي
- ↲ تصاوير بالگردهاي نظامي
- ↲ تصاوير بالگردهاي غير نظامي
- ↲ تصاوير نمايشگاههاي هوايي
- ↲ تصاوير متفرقه هوايي
- ↲ انجمن نجوم
- ↲ منظومه شمسي
- ↲ كيهانشناسي
- ↲ گالري تصاوير نجوم
- ↲ اخبار نجوم
- ↲ اخبار هوافضا و هوانوردي
- ↲ مدرسه هوانوردي
- ↲ كتابخانهي هوا فضا
- ↲ متفرقه در مورد هوا فضا
- بخش جنگ افزار
- ↲ ادوات زميني
- ↲ ادوات زرهي
- ↲ تجهيزات انفرادي
- ↲ تسليحات سنگين و توپخانهاي
- ↲ خودروهاي نظامي
- ↲ تسليحات ضد زره
- ↲ ادوات دريايي
- ↲ ناوهاي هواپيمابر
- ↲ ناوشکنها
- ↲ رزم ناوها
- ↲ ناوچهها
- ↲ زيردرياييها
- ↲ تجهيزات و تسليحات دريايي
- ↲ ساير ادوات دريايي
- ↲ گالري تجهيزات و ادوات دريايي
- ↲ اخبار ادوات دريايي
- ↲ اخبار نظامي
- ↲ گالري نظامي
- ↲ متفرقه در مورد جنگ افزار
- بخش دفاع مقدس
- ↲ حماسه دفاع مقدس
- ↲ تخريب و خنثي سازي
- بخش خودرو و وسايل نقليه
- ↲ مباحث فنی و تخصصی خودرو
- ↲ معرفي خودرو
- ↲ تازهها و اخبار خودرويي
- ↲ گالري خودرو
- ↲ متفرقه وسايل نقليه
- بخش پزشکي
- ↲ پزشكي و درمان
- ↲ پزشکي
- ↲ سوال پزشکي
- ↲ بهداشت
- ↲ بهداشت عمومي
- ↲ بهداشت مواد غذايي
- ↲ لوازم آرايشي و بهداشتي
- ↲ متفرقه در مورد پزشکي
- ↲ روانشناسي و روان پزشكي
- بخش فرهنگ، تمدن و هنر
- ↲ فرهنگي هنري
- ↲ شعر و ادبيات
- ↲ فيلم و سينما
- ↲ هنرهاي نمايشي
- ↲ فرهنگ هنرهاي نمايشي
- ↲ موسيقي
- ↲ عكس و نقاشي
- ↲ تاريخ، فرهنگ و تمدن
- ↲ تاريخ ايران
- ↲ تاريخ جهان
- ↲ فلسفه
- ↲ زبانهاي خارجي
- ↲ زبان انگليسي
- ↲ زبان اسپانيايي
- ↲ هنر آشپزي
- بخش علم، فناوري و آموزش
- ↲ انجمن علم و فناوري
- ↲ انجمن آموزش
- ↲ کتاب و فرهنگ مطالعه
- ↲ دانش عمومی
- ↲ کنکور و دانشگاه
- ↲ جامعه شناسي
- ↲ خانواده
- ↲ متفرقه جامعه شناسي
- ↲ حقوق و قضا
- ↲ علوم
- ↲ فيزيک
- ↲ شيمي
- ↲ رياضي
- ↲ متالورژي
- ↲ پليمر
- ↲ علوم کشاورزي
- ↲ گياهان زراعي و باغي
- ↲ گياهان دارويي
- ↲ طبیعت و محیط زیست
- ↲ زيست شناسي
- ↲ عمران
- ↲ بتن و سازههاي بتني
- ↲ معماري و شهرسازي
- ↲ سبکها و مشاهير معماري
- ↲ شهرسازي
- ↲ معماري داخلي
- ↲ معماري منظر
- بخش الکترونيک و رباتیک
- ↲ مفاهیم اولیه و پایه در الکترونیک
- ↲ نرم افزارهای کمکی الکترونیک
- ↲ مدارهای مجتمع
- ↲ سوالات و پرسشهای مفاهیم پایه
- ↲ مدارات ساده و آسان
- ↲ مدارهای آنالوگ و دیجیتال
- ↲ شبیه ساز و طراحی مدار
- ↲ مدارات صوتی
- ↲ مدارات، منابع تغذیه سویچینگ و اینورتوری
- ↲ مدارات مخابراتی
- ↲ میکروکنترلرهای AVR
- ↲ آموزش و مثالها AVR
- ↲ طرح آماده و کامل شده AVR
- ↲ میکروکنترلرهای ARM
- ↲ سایر میکروکنترولرها و پردازندهها
- ↲ سایر میکروکنترلرها
- ↲ مدار مجتمع برنامه پذیر FPGA
- ↲ رباتیک
- ↲ اخبار و مصاحبه ها در رباتیک
- ↲ آموزش و مقالات رباتیک
- ↲ پروژهها تکمیل شده رباتیک
- ↲ مدارها و مکانیک در رباتیک
- ↲ رباتهای پرنده
- ↲ برق و الکترونیک عمومی
- ↲ تعمیر لوازم برقی
- ↲ اخبار برق و الکترونیک
- بخش بازيهاي رايانهاي
- ↲ بازيهاي رايانهاي
- ↲ كنسولهاي بازي
- ↲ PSP
- ↲ اخبار بازيها
- بخش تجاري اقتصادي
- ↲ بخش اقتصادی و مالی
- ↲ تجارت آنلاين
- ↲ بورس
- ↲ تحلیل و سیگنال روز
- ↲ کار آفرینی
- بخشهاي متفرقه
- ↲ بخش ويژه
- ↲ ساير گفتگوها
- ↲ صندلي داغ
- ↲ اخبار و حوادث
- ↲ انجمن ورزش
- ↲ آکواريوم و ماهيهاي زينتي
- ↲ معرفي سايتها و وبلاگها