سلام .
دوستان با عرض معذرت از اینکه چند وقت این بحث رو دنبال نکردم.
فکر کنم داریم از بحث اصلی این تاپیک منحرف می شیم.
چشم . سعی می کنم تا فردا شب یک نمونه کوچیک بذارم که روش بحث کنیم.
Printable View
مقایسه NHibernate وNet Entity Framework
خیلی جالب هست
چندی پیش با آقای مداح پیرامون برتری ASP.NET MVC بر ASP.NET یک بحث زیبا داشتم که بسیار از ایشان مطلب یاد گرفتم،در ادامه اگر بحث مثال های مختلف از معماری ها پیش آید و همینطور موضوع ارتباط لایه presentation با DAL مطرح شود،اطلاعات بسیار جالبی هست که خواندن آنها خالی از لطف نیست.
نتیجه بر این شد که هر تکنولوژی در جای خویش نیکوست.
و اما بحث ORM ها و استفاده از تکنولوژی های رنگ و وارنگ،بحث پیرامون این موضوع هم دقیقا نتیجه بالایی را منعکس می کند.برای مثال در کد زیر از Entity Framework و Linq استفاده شده است:
مشاهده میکنید که چقدر زیبا Linq با Entity Framework ادغام شده است؟
MoviesDBEntities _db;
_db = new MoviesDBEntities();
var movieToUpdate = _db.MovieSet.First(m => m.Id == id);
اگر این تکه کد را با ADO.net و با استفاده از DataSet می نوشتیم،نیاز به حداقل چهار خط کد داشت ولی در اینجا با 17 حرف نتیجه دلخواهمان را گرفتیم.
تمام تکنولوژی هایی که در بالا نام بردید را می توان به زیبایی در کنار هم در پروژه بکار برد و نکته ای که باید ذکر شود اینکه Linq انواع مختلفی را دارد و Linq to SQL یکی از انواع آن است و هیچ مطلبی هم پیرامون پشتیبانی نکردن ماکروسافت هم گفته نشده است , در اکثر مثال ها و پروژه های امروزی دات نت، هم از این فناوری استفاده شده است.
در هر حال وابستگی تکنولوژی های مختلف ماکروسافت با هم،برنامه نویس دات نت را تا حدودی مجبور می سازد تا ماکروسافتی بیاندیشد.
من هم یکی از طرفداران این جمله هستم.
این مسئله مختص Entity Framework نیست , linq تقریبا با همه چیز قابل ادغام شدن هست.
من چند وقتی هست دارم روی orm ها مطالعه میکنم , مقایسه ado با Entity Framework (یا هر orm ی) روال نیست.
البته بدون در نظر گرفتن generate Code ها.
در مورد پشتیبانی نکردن منظورم این بود که دیگه توسعه ش نمیده , که این مسئله طبیعیه.
در مورد مثال ها هم که اتفاقا برعکس.
مجبور !!!
مث اینکه همه مهندسان خبره رفتند درگیر پروژه ای شدند.
الان هیچکس جواب نمیده!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
سلام..
دست همگي درد نكنه..
لينك پروژه 100 متاسفانه خرابه.من اين بحث رو خيلي پيگري كردم اما متاسفانه هر كدوم از دوستان شاخه به شاخه كار كردن.فيلم هاي آموزشي مايكروسافت هم متاسفانه كامل نيست .
چيزي كه مهمه اينه طبق روش هاي مايكروسافت 7 روش پياده سازي چند لايه اي وجود داره .توي سايت خودمون كه من اثري از استاندارد هاي مانند مايكروسافت نديدم.
جالب اينه كه توي همه مثال ها با استفاده از binding ديتا بيس كار كردن.و خيال خودشون راحت.
براي عمليات هاي ساده با ديتا بيس del,add,update فيلم آموزشي مايكروسافت binding داره اما اگه نخوايم كه هيچ اثري از bind باشه وكلاسي سراسري داشته باشيم براي اين موارد چه بايد كرد؟؟؟!
ممنون از همه دوستاني كه من رو از اشتباه در ميآرن...
شاد باشيد.
در دات نت فريم ورك 4 توسعه يافته و اين مطلب رد شده كه ديگر توسعه نمييابد.نقل قول:
در مورد پشتیبانی نکردن منظورم این بود که دیگه توسعه ش نمیده , که این مسئله طبیعیه.
براي اطلاعات بيشتر به وبلاگ تيم مربوطه در سايت msdn مراجعه كنيد.
با سلام
بنده به دلیل مشکلاتی نتونستم ادامه بدم
لینک دانلود اصلاح شد .
فقط :
در پست 100 گفتم که این یک نمونه ساده است و باید تغییراتی روی اون انجام بشه . پس دوستان پست های بعدی رو با دقت مطالعه کنن ، چون این نمونه از یک برنامه 3 لایه واقعی خیلی دور هست . ولی برای افراد مبتدی خیلی مفید هست.
در آخر هم از همه دوستان به خاطر این تاخیر عذر می خوام .
با آرزوی موفقیت
سلام
من پستای قبلی رو تا یه جایی خوندم
ولی اون چیزی رو که می خواستم نفهمیدم
ارتباط شی گرا با چند لایه؟؟؟
من تو تحلیلم یه سری نمودارای کلاس و بدست میارم که حالا یه سری رفتارایی یا بهتر بگم متدهایی دارن بعضی از این متدها با دیتابیس در ارتباط هستن که قاعدتا باید در لایه DAL قرار بگیرن و تو همون کلاس یه سری متدهایی دارم که با دیتابیس سر و کار ندارن و اصولا باید در BLL قرار بگیرن. حالا من این کلاس رو کجا باید قرار بدم؟؟ DAL یا BLL ؟؟
من به این نتیجه رسیدم که باید کلاسی رو که با توجه به اصول شی گرایی به دست آوردم رو به دو تا کلاس بشکنم و متداشون رو تفکیک کنم. و یکی رو تو DAL و یکی رو تو BLL استفاده کنم
که به نظرم این کار درست نباشه
ممنون میشم راهنماییم کنیین
با سلام
به نظر من از بحث اصلی داریم خارج میشم
در اینجا اگه ممکنه که اساتید بزرگوار مثل آقای مهندس کرامتی ، مهندس راد و مهندس مداح و... نظر خودشون رو بگند و یک جمع بندی بکنند من و بسیاری از دوستان ممنونشان میشویم
دوست عزيز يه راهنمايي كوچيك اينكه آنهايي كه داراي رفتار ارتباطي با ديتا بيس هستند بنا بر ابزار هايي كه شما توي اين معماري استفاده ميكنيد يا در لايه BLL يا لايه DataService(كه از WCF استفاده مي كنه )قرار مي گيره توي برخي نمونه ها در لايه DAL قرار ميگيره ولي به صورت كلاسي كه منجر به DataManager ميشه.
آموزش Walkthrough سايت msdnجهت معماري چند لايه كمكت ميكنه.
دوستان آيا نمونه پروژه ايي توي اين معماري كه با WCF كار شده باشه ولي از binding ديتا بيس استفاده نشده .
داره؟؟؟؟ ممنون مي شم كمكم كنيد.
فكر كنم خيلي مفيد باشه
سلام
من تمام پست های این تاپیک رو خوندم ، حیفه که این تاپیک به نتیجه نرسه .
دوستان لطف کنن ادامه بدن .
ممنون
سلام.
من از جناب آقای علیرضا مداح خواهش مینمایم که این تاپیک مفید را پیگیری جدی نمایند. اگر طبق اون پست اول نتیجه گیری نمایید خیلی مفید خواهد گردید.
و از جناب آقای iroonidotnet عزیز نیز خواهش مینمایم که اون مثال خوب ومفیدی را که خوب توضیح دادند ادامه دهند و تغیرات که میدانند مفید است اضافه نمایند.
تشکر
سلام دوستان عزیز،
فکر می کنم در این تاپیک دوستان یک آشنایی نسبی نسبت به معماری چند لایه پیدا کردند، به دلیل اینکه بحث های این تاپیک در بعضی موارد منحرف شده است از دوستان می خواهم که نظر خود را در مورد موضوع زیر مطرح نمایند،
موافقید که یک تاپیک جداگانه ایجاد کرده و بر روی یک پروژه چند لایه از ابتدا با یکدیگر بحث کنیم؟
اگر بنا است به هر صورتی ادامه پیدا کند فقط سورس گذاشته شود . فقط و فقط سورس و بررسی تفاوت متدها . مگر نه دیگر ارزش نداره
بله منم کاملا موافقم
دوستان برای آشنایی نسبی میتونند از این تاپیک استفاده کنند و برای موارد کامل تر از تاپیک جداگانه ای که در امتداد این تاپیک ایجاد میشه.
به نام خدا و با سلام خدمت دوستان
بنده حقیر یه مقاله از یک انتشارات معتبر دارم و نویسنده مقاله هم از چهره های برجسته مولفین در دنیا هستش که که تو انتشارات Wrox و APress مقاله و کتاب می نویسه یه کتاب کاربردی با قالب پیاده سازی یه فروشگاه الکترونیکی ساده بررسی کرده و در این میان به برنامه نویسی چند لایه هم کاملا و بدون نقص با استاندارد های کاملا جهانی و مورد تائید مایکروسافت پرداخته که به نظر من جای محکمی برای تکیه دادن هستش
این کتاب در کل در نج بخش بررسی شده
تحلیل پروژه در رشنال
پیاده سازی بانک اطلاعاتی در MS SQL
طراحی و پیاده سازی معماری پنج لایه با لایه ها
Presentation Layer
Business Logic Layer
Data Acess Layer
Common Objects
Operational Layer
پیاده سازی Presentation
و بخش بعدی اومده و گفته حالا بعد از پیاده سازی و اتمام کل پروژه ممکنه یه فیلدی رو از بانک کم یا زیاد کنیم به عبارت بهتر ممکنه در بانک و یا تحلیل سیستم تغییراتی رو اعمال کنیم نحوه تغییر دادن رو آموزی می ده
و در نهایت و در بخش نهایی پروژه رو اومده و بهینه سازیش کرده و گفته چیکار کنیم تا حجم پروژه پائین بیاد و سرعت سایت بالا بره
من پیشنهادم این بود که روی طریقه معماری این کتاب جلو بریم چون واقعا محشره و در بعضی از لحاظ ها من واقعا گیج زدم که چرا این کار و انجام می ده ولی وقتی از بزرگان و اساتید پرسیدم دیدم بهترم حالت رو انتخاب کرده
نام کتاب هم
Apress.Pro.ASP.NET.2.0.E.Commerce.in.C.Sharp.2005. Dec.2006.pdf
هستش
البته حجمش زیاده نتونستم آپش کنم و هاستم هم تحریم شده :شیطان: دارم از یه جای دیگه نمایندگی میگیرم واستون ارسال می کنم :چشمک:
یکی از دوستان پرسیده بود که کسی ORM رو مقایسه کرده یانه من یه پروژه توپ برای مقایسه سا حالت NHibernate و Entity Framework و Linq پیدا کردم امید دارم که درد بخور باشه
البته اگه کسی چیزی برای توضیح دادن در این رابطه داشته باشه خواهش می کنم یه تاپیک جداگانه در نظر بگیرین خبرش به من برسونید با تشکر
http://www.codeproject.com/KB/archit...rThreeORM.aspx
خیلی جای افسوس است که یک تاپیک را شروع مینمایند و بعدا در مرحله بحرانی دیگر پیگیری نمی نمایند :(
با سلام
مدت زیادی بود که اسم معماری چند لایه را شنیده بودم و دنبال مطالبی می گشتم که این معماری را از اول توضیح بده و بگه که اصلا چیه و بتونم خلاصه به صورت عملی و کاربردی این روش را یاد بگیرم (البته اگر اسمش روشه!)
وقتی این تاپیک را دیدم خیلی خوشحال شدم که شخصی با سواد و مسئول مثل آقای مداح همچین تاپیکی را ایجاد کردن و با خودم گفتم بالاخره می فهمم این معماری چند لایه چیه؟!
تا چند تا پست ابتدایی هم خیلی خوب بود، ولی متاسفانه از وقتی پست های سوال و جواب های فردی پیش اومد، دیگه اون روند آموزشی و منسجم از یاد رفت و حالا هم که به انتهای این تاپیک رسیدم، فقط می تونم بگم گیج تر از قبل شدم و خیلی ناراحتم که آخرش نفهمیدم چی شد؟
فقط به این نتیجه رسیدم که معماری چند لایه سخت تر از اون چیزیه که دیگران می گفتند و در تصورم بود و بهتره که در پروژه ای که می خواستم انجام بدم ازش استفاده نکنم.
خیلی ناراحت کننده است.
اون کتاب از Application Block و Dataset استفاده کرده. اگه دنبال منبع هستید پروژه ی BeerHouse سایت ASP.NET نمونه ی بهتر و کامل تری از معماری سه لایه رو پیشنهاد میکنه.
پروژه گریدویوی برادر بهروز راد هم شیوه ی استاندارد و خوبی هست و از Generic ها استفاده میکنه و پروژه کاملا ملموس و سلیس هست.
اصلا اینجوری نیست کلیات تاپیک واقعا مفید هست. مهم اینه که به شما سرنخ هایی رو درباره معماری سه لایه بده که میده. دیگه تحقیق و پژوهش با شماست.... مطالبی که در این تاپیک بحث شد رو شما در نمونه سایت های انگلیسی هم نمیتونی پیدا کنی چه برسه به فارسی!!
موفق باشید.
خیلی خوبهنقل قول:
موافقید که یک تاپیک جداگانه ایجاد کرده و بر روی یک پروژه چند لایه از ابتدا با یکدیگر بحث کنیم؟
با یه پروژه چند لایه خیلی از سوالات دوستان و البته خودم پاسخ داده میشه
خدا خیرتون بده زودتر شروع کنید
با سلام خدمت همگی دوستان
من فکر میکنم این بحث کاملا بصورت جسته و گریخته داره پیش میره و اینجوری به نتیجه نمی رسه
پیشنهاد میکنم یه تاپیک جدید ایجاد بشه و از ابتدا بصورت کلاسیک و منظم از مسائل مبنایی شروع کنیم تا بصورت دسته بندی شده و فصل به فصل تاپیک هدایت بشه . به نظر میرسه مدیران محترم باید تلاش بیشتری در هدایت بحث داشته باشند .
با تشکر از همه
دوستان چرا به كتاب Software Architecture and Design مراجعه نمي كنيد كه توسط خود مايكروسافت چاپ شده است و البته ويرايش دوم آن هم چند ماه قبل ارائه شد كه به صورت رايگان هم قابل دانلود است
اگه منظور شما Application Architecture Guide 2.0 هست که pattern & practice هم هست و مربوط به سال 2008 هست باید بگم که به نظر من فقط کلی گویی کرده؛ کاملا تئوری معنی چهارتا عبارت رو گفته و واسه خودش داستان تعریف کرده. اصلا کاربردی نیست. پست های این تاپیک کاملا عملیاتی و در دنیای واقعی به بررسی این معماری پرداخته.
اگه کتاب دیگه ای مد نظرت هست بگو ما هم بخونیم.
ممنون.
تو برنامه هاي ساده مثل برنامه هاي بانك اطلاعاتي كه فقط در يك سيستم اجرا مي شه هم لازمه كه از معماري چند لايه استفاده بشه؟
سوال : قسمت های مربوط به مدیریت add-on ها در کدام لایه قرار می گیرند ؟ چرا ؟
دوستان سلام
مطالب رو که خوندم دیدم خیلی چیز ها رو داریم اشتباه می گیم و مسیر رو اشتباه می ریم. درسته چند لایه رو میشه به روش های مختلف پیاده کرد. مثلاً بهتره از پاترنه Facade استفاده بشه، ولی خب میشه استفاده هم نکرد. ولی خب روش باید درست باشه.
من لینک یه پروژه عملی پیاده شده با .Net 4 رو براتون میزارم که توی مستنداتش هم خوب توضیح میده:
http://www.asp.net/web-forms/samples/tailspin-spyworks
سه فایل ویدیو هم تو این آدرس براش گذاشته:
http://www.asp.net/web-forms/fundamentals
اسلاید مربوط به درس شیوه ارائه مطلب تو دانشگاه هست که من یه جمع بندی کوتاه راجع به قسمت 1 و 2 تایپیک رو انجام دادم.
برای دیدن یه مثال عملیاتی از الگوی MVP و بسیاری از الگوهای دیگه خوبه که این رو ببینید. خوب چیزی که هست، یه مقدار مطالبش سنگینه، یعنی اگر یه توسعه دهنده تازه کار یا متوسط هستید و تا 1 هفته زیاد چیزی نفهمیدید به تلاشتون ادامه بدید مطمئنا لذت میبرید، همین برای Win App هم به اسم CAB وجود داره، فقط مستنداتش رو بخشهاییش رو ببینید کلی سیستم دستتون میاد.
برای MVC هم خوبه که MVC Music Store رو ببینید. با توجه به اینکه مایکروسافت از 2011 دیگه کلا میره رو MVC ASP با MVC ASP هم آشنا میشید (اگه آشنا نیستید).
برای اتصال به DB بستگی به پروژه داره یه وقت با NHibernate یه وقتم با Entity Framework یه وقتم یه DAL ساده، فعلا Entity Framework واسه RAD خیلی خوب جواب میده.
در واقع شما با مطالعه این مطالب معماری چند لایه رو تا حدود خوبی (بیشتر از مطالبی که تو این تاپیکا تا حالا بوده) درک میکنید و دیدتون تغییر پیدا میکنه.
دوستان کسی با فریم ورک PLinqO برای ایجاد DAL کارکرده آیا برای پروژه بزرگ میشه بهش اعتماد کرد؟
به نظرم این تاپیک کاملا فراموش شده