PDA

View Full Version : پیاده سازی معماری 3 لایه در سی شارپ



am12622
شنبه 05 شهریور 1384, 07:00 صبح
با سلام به دوستان عزیز
شنیدم که میگن میشه در دات نت بصورت چند لایه ( چند سطحی ) برنامه نوشت . میخوام بدونم برنامه نویسی چند لایه یعنی چی ؟! . اگر یک مثال ساده و یک مثال نیمه سخت بزنید ممنون میشم.اگه کد هم داشته باشه که خیلی عالی میشه.

omid_Ahmadi
شنبه 05 شهریور 1384, 08:09 صبح
به برنامه هایی که به چند قسمت کلی تقسیم میشن و هر قسمت در یک لایه مجزا اجرا میشه ولی مجموعه همه این قسمتها با هم برنامه رو تشکیل میدن برنامه های چند لایه میگن. معمولا برنامه ها 3 لایه یا 5 لایه هستند. برنامه های 3 لایه شامل Presentation Layer و Business Logic Layer و Database Layer میشوند و در برنامه های 5 لایه هم لایه منطق تجاری برنامه رو به 3 لایه دیگر تقسیم میکنند.

Delphi Skyline
شنبه 05 شهریور 1384, 14:01 عصر
بله . متشکرم از شما . اما آیا در جاوا که .NET نداره میشه چند سطحی نوشت ؟

omid_Ahmadi
شنبه 05 شهریور 1384, 15:07 عصر
کسانی که از جاوا استفاده میکنند برای این کار از J2EE استفاده میکنند.

am12622
شنبه 05 شهریور 1384, 23:37 عصر
ممنون از اینکه جواب دادید(همه دوستان). اما این چیزی که شما گفتید تغریبا فقط ترجمه چند سطحی بود.شایدم من یه کم .... دیر میفهمم . میشه لطفا بیشتر راهنمایی کنید.

omid_Ahmadi
یک شنبه 06 شهریور 1384, 06:41 صبح
خوب یک مدل ساده برنامه که شامل 3 لایه باشه معمولا به این صورت طراحی میشه. فرض کنید یک شرکت یک شیکه LAN داخلی که کامپیوترهای اون رو به هم متصل میکنه داره. برای نوشتن یک برنامه 3 لایه که بتونه کارهای مختلف اون شرکت رو مدیریت کنه به صورت زیر عمل میکنند. لایه اول همونطور که گفتم Presentation Layer یا لایه ارایه دهنده است که معمولا رابط کاربری که در کامپیوتر کلاینتها نمایش داده میشه مد نظره. لایه دوم Business Logic Layer یا لایه ای است که منطق تجاری برنامه و طریقه عملکرد اون در این لایه قرار میگیره. لایه سوم هم Database Layer یا لایه بانک اطلاعاتی است که معمولا شامل یک یا چند سرور بانک اطلاعاتی میشه که اطلاعات مربوط به برنامه رو نگهداری میکنند. لایه دوم در حقیقت اطلاعات خواسته شده توسط کاربران لایه اول رو از لایه بانک اطلاعاتی دریافت میکنه و بعد از تجزیه و تحلیل اونها رو به کاربر نمایش میده

titbasoft
یک شنبه 06 شهریور 1384, 11:07 صبح
توسعه یک نرم افزار چند لایه ارتباطی به زبان و یا حتی platform کد نویسی نداره. در مورد این مساله در زمان طراحی نرم افزار بحث میشه. امکان داره که هر لایه در یک بستر کاملا جدا توسعه داده بشه. حتی در یک لایه ممکنه از 2 بستر یا زبان مختلف استفاده بشه. این یک تکنولژی جدید نیست که در دات نت استفاده شده باشه یا مثلا در VS 6 نشه چند لایه نوشت. از تکنولژی های خیلی قدیمی که بوجود آوردن یک ساختار چند لایه رو تسهیل می کردن میشه به MTS در NT4 اشاره کرد .
این مساله کاملا یک مفهوم است.

omid_Ahmadi
یک شنبه 06 شهریور 1384, 12:15 عصر
توسعه یک نرم افزار چند لایه ارتباطی به زبان و یا حتی platform کد نویسی نداره. در مورد این مساله در زمان طراحی نرم افزار بحث میشه. امکان داره که هر لایه در یک بستر کاملا جدا توسعه داده بشه. حتی در یک لایه ممکنه از 2 بستر یا زبان مختلف استفاده بشه. این یک تکنولژی جدید نیست که در دات نت استفاده شده باشه یا مثلا در VS 6 نشه چند لایه نوشت. از تکنولژی های خیلی قدیمی که بوجود آوردن یک ساختار چند لایه رو تسهیل می کردن میشه به MTS در NT4 اشاره کرد .
این مساله کاملا یک مفهوم است.


حرف شما کاملا درسته من هم در هیچ قسمتی خلاف این موضوعات رو ذکر نکردم.

am12622
دوشنبه 07 شهریور 1384, 18:29 عصر
باز هم تشکر از دوستان . ولی میشه لطفا یک مثال پیاده سازی شده به من معرفی کنید. که من بتونم ببینم چیه !!. در واقع دنبال یک نمونه برنامه, پیاده سازی شده هستم که کد نویسی شده باشه. ( البته در دات نت ). من بتونم Download کنم و اجرا کنم و Source برنامه را هم بتونم ببینم . دو تا مثال میخوام یکی سخت و یکی آسون .

titbasoft
سه شنبه 08 شهریور 1384, 09:38 صبح
http://www.barnamenevis.org/forum/showthread.php?t=18475
http://www.barnamenevis.org/forum/showthread.php?t=20837

dalaho
یک شنبه 03 مهر 1384, 11:11 صبح
سلام من می خواستم درمورد لایه بندی اطلاعاتی داشته باشم لطفآ اگر کسی مطلبی یا لینکی دارد واسم بفرسته

Mahdavi
سه شنبه 05 مهر 1384, 09:43 صبح
ساده ترین شکل اون داشتن سه لایه UI و BR و DA هست.
1- در این لایه شما فقط مسایل مربوط به نمایش اطلاعات رو انجام میدید. به عبارت دیگه چیزی که کاربر قراره ببینه.
2-لایه تصمیم گیری و قواعد کاری. مثلا آیا این کاربر مجاز به دیدند این اطلاعات هست یا نه ؟ و فرمولهای محاسبه.
3-این لایه هم که از اسمش پیداست . لایه مربوط به انجام کارهای دیتابیس. عملیات مربوطه.


البته این شکل ساده مسال هستش و در دنیای واقعی این لایه ها افزایش پیدا میکنند.

مطهر
سه شنبه 05 مهر 1384, 10:03 صبح
"لایه" با "چند سطحی" یکیه؟
در این مورد منبع تکمیلی؟
ممنون

Babak-Aghili
سه شنبه 05 مهر 1384, 10:09 صبح
این هم منبع :

http://rapidshare.de/files/4520398/1272_MS_Press_-_Designing_Data_Tier_Components_and_Passing_Data_T hrough_Tiers.pdf.html

c#_web
سه شنبه 24 بهمن 1385, 23:31 عصر
در مورد لایه بندی و برنامه نویسی لایه ای فقط یکسری اطلاعات تئوری دارم آیا کسی به طور عملی اینکاررا در پیش گرفته ؟؟
آیا نمونه کد و یا نمونه برنامه ای هست ؟ و یا اگر ممکنه دوستان راهنمایی کنند که برای برنامه نویسی به این طریق چه روندها و مراحلی باید طی شود ؟؟
البته لینک در قسمت قبل باز نمیشد. اگر منبعی برای دریافت اطلاعات بیشتری هست ، لطفاً مرا راهنمایی کنید.

یاسر مددیان
چهارشنبه 25 بهمن 1385, 09:02 صبح
این لینک که باز نمیشه! فایل وجود نداره. اگه لطف کنید و آپلود کنید ممنون میشم.




با تشکر.

reza_rad
چهارشنبه 25 بهمن 1385, 09:51 صبح
می تونید از مثال Duwamish که ماله خود مایکروسافت هست استفاده کنید. البته مربوط به 2003 هست.
خیلی عالی نیست ولی برای شروع کار چندلایه خوبه.
اگه دات نت 2003 نصب کردید توی همچین آدرسی هست :
D:\Program Files\Microsoft Visual Studio .NET 2003\Enterprise Samples

اگه هم نداریدش از اینجا دانلود کنید:
http://www.microsoft.com/downloads/details.aspx?familyid=29EEF35E-6D1E-4FF5-8DD6-C2BF699AC75C&displaylang=en

mahan8088
چهارشنبه 16 خرداد 1386, 17:38 عصر
دوستان من می خوام برنامه نویسی #C و بانک های اطلاعاتی شروع کنم که چند تا سوال برام پیش اومده
1- اولاً دقیقاً نمی دونم از اکسس استفاده کنم یا از sql server ، فکر می کنم اکسس راحت تره ولی نوشته های دوستان رو که می خوندم انگار محدویت هائی رو داره که sql server نداره می خوام بدونم آیا اکسس 2007 هم همین محدودیت ها رو داره ؟
2- ضمناً من نمیدونم برای استفاده از SQL SERVER حتما باید نرم افزارش رو به ویندوزم نصب کنم یا اگه فقط ویژوال استودیو دات نت 2005 رو نصب کنم کافیه ، آخه انگار اونم Sql server داره و اینکه بعد از نصب روش استفاده اونم مثل اکسسه ؟
3- و بعد اینکه من چطوری می تونم یه منبع خوب درباره sql و یا روش استفاده از بانک های اطلاعاتی در سی شارپ بدست بیارم ، آیا می تونم از MSDN ویژوال استودیو 2005 استفاده کنم یا نه ؟
لطفاً رهنمائیم کنید . ( لطفا جوابهاتونو با دلیل بفرمائید ، برام مهمه )
مرســــــــــــــــــــــ ــــی

omid_Ahmadi
چهارشنبه 16 خرداد 1386, 18:15 عصر
1) استفاده از اکسس یا SQL Server بیشتر به محیطی که قراره برنامه نهایی در اون مورد استفاده قرار بگیره، تعداد کاربرانی که می خوان در هر لحظه از داده های درون بانک استفاده کنن، مقدار و حجم اطلاعاتی که در بانک ذخیره می شه، حجم انتقال اطلاعات بانک با لایه های دیگه برنامه و ... بستگی داره. اگر فقط به عنوان یادگیری می خواهید بدونید، بهتره به هر دوی این محیط ها آشنا بشید. به این صورت خودتون متوجه می شید که کجا بهتره از چه DBMS ای استفاده کنید. در این سایت مقایسه های زیادی در مورد تفاوت موجود در بانکهای اطلاعاتی وجود داره، می تونید از اونها هم استفاده کنید تا تفاوت نسخه های بانکهای اطلاعاتی رو بهتر درک کنید.

2) استفاده از SQL Server مقداری با Access تفاوت داره. نسخه ای از SQL Server که همراه با VS نصب می شه برای کارهای آموزشی و ابتدایی می تونه نیازتون رو برطرف کنه، اما برای برنامه های واقعی، لازم دارید که از یکی از نسخه های SQL Server (به جز Express) استفاده کنید.

3) اگر به انگلیسی تسلط دارید، کتابهای خوبی برای آموزش این موارد وجود داره که می تونید از اونها استفاده کنید. البته پیشنهاد می کنم اول روی محیطی که می خواهید در اون برنامه نویسی کنید تسلط پیدا کنید، بعد به سراغ بانکهای اطلاعاتی برید.

موفق باشید.

مهدی رحیم زاده
چهارشنبه 16 خرداد 1386, 21:22 عصر
اگر در مورد کار با بانک access نمونه برنامه خواستید بگید براتون میزارم ...
البته فکر کنم توی « نمونه برنامه های #C » بتونی پیدا کنی ....

Keramatifar
پنج شنبه 17 خرداد 1386, 09:57 صبح
با سلام خدمت دوستان
و با اجازه از استاد ثباتی
اکسس در ابتدا به عنوان یک سیستم دیتابیس طراحی نشده و هنوزم که انقدر مثلا پیشرفت کرده در رده دیتابیس سیستمها قرار نمیگیره ...
اکسس برای طراحی دیتابیسهای شخصی افراد بر روی ویندوز درست شده با اینکه میشه ازش برای برنامه نویسی هم استفاده کرد ولی فکر نمیکنم کار درست و منطقی باشه

shiva_naderi
دوشنبه 01 مرداد 1386, 07:50 صبح
سلام به همگی دوستان
می شه یه Sample برای برنامه نویسی 2 لایه یا 3 لایه تحت Win Application به من یاد بدین یا بگین برم از کجا Download کنم . مثلاً database من Sql هست می خوام از یه جدول Select کنم و داخل Data gridView نشون بدم . نمی نمدونم چه جوری لایه ای بنویسم .

ممنون می شم اگه راهنماییم کنید .

MH2538
دوشنبه 01 مرداد 1386, 08:08 صبح
دوست عزیز
سلام
شما باید اول مشخص کنی بر اساس نیاز های سیستمت از کدام یکی از روش ها می خوای برنامه چند لایه بنویسی.
مثلاً WebService یا WinService یا ...
بهتره اول یک سری اطلاعات پایه رو مطالعه کنی.
بعد بر اساس نیازها و امکانات سیستم روشت رو انتخاب کنی .
بعد روی اون روش بصورت جدی کار کنی.

shiva_naderi
دوشنبه 01 مرداد 1386, 08:16 صبح
می خواستم Winservice باشه اما لایه ای بلد نیستم .

MH2538
دوشنبه 01 مرداد 1386, 08:59 صبح
سلام
شما اول نوشتن WinService رو خوب مطالعه کن.
بعد روی multi tier مطالعه کن.
در نهایت این دو تا رو با هم تلفیق کن.

leilav_1984
سه شنبه 02 مرداد 1386, 08:47 صبح
یه نمونه خیلی خوب پروژه Dwamish هست که می تونی از سایت Microsoft بگیریش

اَرژنگ
سه شنبه 02 مرداد 1386, 18:59 عصر
یه نمونه خیلی خوب پروژه Dwamish هست که می تونی از سایت Microsoft بگیریش
http://msdn2.microsoft.com/en-us/library/ms978471.aspx

اَرژنگ
چهارشنبه 03 مرداد 1386, 12:37 عصر
MSDN Webcast: Visual Basic .NET Soup to Nuts: Building a Multi-Tier Business Application (Level 200) (http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOMMedia&Params=%7eCMTYDataSvcParams%5e%7earg+Name%3d%22ID% 22+Value%3d%221032340897%22%2f%5e%7earg+Name%3d%22 ProviderID%22+Value%3d%22A6B43178-497C-4225-BA42-DF595171F04C%22%2f%5e%7earg+Name%3d%22lang%22+Valu e%3d%22en%22%2f%5e%7earg+Name%3d%22cr%22+Value%3d% 22US%22%2f%5e%7esParams%5e%7e%2fsParams%5e%7e%2fCM TYDataSvcParams%5e)

Ali2200
سه شنبه 30 مرداد 1386, 10:32 صبح
اگه بخام از معماری سه لایه استفاده کنم باید از کلاس استفاده کنم سوال من این است باید همه چیزهایی که می خاهم در پایگاه داده ذخیره کنم به عنوان پارامتر بفرستم یا راه دیگه ای هم داره؟
متشکرم

mehdi.mousavi
سه شنبه 30 مرداد 1386, 10:55 صبح
اگه بخام از معماری سه لایه استفاده کنم باید از کلاس استفاده کنم سوال من این است باید همه چیزهایی که می خاهم در پایگاه داده ذخیره کنم به عنوان پارامتر بفرستم یا راه دیگه ای هم داره؟
متشکرم

سلام.
شما مگه می تونید تو C# کدی بنویسید که در درون یک کلاس قرار نگیره؟ (جدا از معماری کار). پس این حرف به چه معنی هستش که "اگه بخوام از معماری سه لایه استفاده کنم، باید از کلاس استفاده کنم". شما چه از معماری سه لایه استفاده کنید، چه نکنید، باید از کلاسها استفاده کنید.

اما در مورد پاسخ سوالتون، که به Data Access Logic Component یا همون DALC بر میگرده. شما این انتخاب رو دارید که از Dynamic SQL ها استفاده کنید. بعنوان مثال دستورات CRUD رو بصورت String در کدتون تعریف کنید و سپس اونها رو اجرا کنید. اما این راه، خطرات SQL Injection رو در پی داره. روش دیگه، استفاده از Stored Procedure هاست. به این ترتیب شما می تونید کلیه اطلاعات رو بصورت پارامترهایی به SP ها بدین و نتیجه رو بگیرین. این روش از روش قبلی بهتره، چون اولا مشکلات امنیتی یاد شده رو نداره و ثانیا SP ها توسط SQL Server (البته اگه بانکتون SQL Server باشه) میتونن Pre-Compiled بشن تا اجراهای بعدی همون SP سریعتر باشه. اما یه روش دیگه استفاده از Built-in Web Service ای هستش که با SQL Server وجود داره. به این ترتیب شما میتونید اطلاعات مورد نظرتون از طریق HTTP و بصورت SOAP fi به بانک ارسال کرده و نتیجه رو به طریق مشابه دریافت کنید.

gomnam
پنج شنبه 15 شهریور 1386, 08:11 صبح
سلام دوستان
شاید این بار 10 باشه که تاپیک های مختلفی پیرامون برنامه نویسی چند لایه و خاصه 3 لایه مطرح میشه
اما اگه یه جستجو کرده باشیم میبینیم که همه جوابها فقط توضیحاتی بیش در این زمینه نبوده
چه در این فروم و یا حتی در فروم های دیگه
من این تاپیک را ایجاد کردم تا بدور از هرگونه تئوری دوستان نمونه برنامه های سه لایه ای بنویسن و در این تاپیک بذارن تا مشکلات این روش برنامه نویسی هم مرتفع بشه
حتما هم نیاز نیست که برنامه ها دارای فرم ها و تعداد کلاس های زیادی باشن چون کسی وقت نوشتنش را نداره و همچنین آنالیز کردن اونا زیاد وقت میبره

چون هدف یاد گرفتن موضوع هست
مثلا برنامه هایی که دارای یه فرم در بخش (presentation layer) و 2 کلاس یکی در بخش business Logic و یکی هم در بخش database (فکر کنم نوشتن یه چنین برنامه هایی کمتر از 10 دقیقه زمان ببره)

پس از دوستان خواهش میکنم که مطالب تئوری در این زمینه ندهند

برای دوستانی که آشنایی با این روش ندارن و میخواهند از لحاظ تئوری خود را قوی کنند میتونن به لینک های زیر مراجعه کنند
http://barnamenevis.org/forum/showthread.php?t=69806&highlight=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87+%D9 %86%D9%88%DB%8C%D8%B3%DB%8C+%DA%86%D9%86%D8%AF+%D9 %84%D8%A7%DB%8C%D9%87

http://barnamenevis.org/forum/showthread.php?t=56236&highlight=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87+%D9 %86%D9%88%DB%8C%D8%B3%DB%8C+%DA%86%D9%86%D8%AF+%D9 %84%D8%A7%DB%8C%D9%87



http://barnamenevis.org/forum/showthread.php?t=27351&highlight=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87+%D9 %86%D9%88%DB%8C%D8%B3%DB%8C+%DA%86%D9%86%D8%AF+%D9 %84%D8%A7%DB%8C%D9%87

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

ARA
پنج شنبه 15 شهریور 1386, 10:53 صبح
شاید خوب نگشتی

http://barnamenevis.org/forum/showthread.php?t=77671&highlight=%DA%86%D9%86%D8%AF+%D9%84%D8%A7%DB%8C%D9 %87+%D9%88%D8%A8+%D8%B3%D8%A7%DB%8C%D8%AA

Mrs.Net
شنبه 17 شهریور 1386, 20:29 عصر
من یک برنامه چند لایه درست کردم
خوب برام از لایه ها یک dll میسازه و در لایه اجرایی از اونها استفاده میکنه
اما من نمیخوام کاربر به اون dll ها دسترسی داشته باشه یا بتونه ازش استفاده کنه
چیکار باید بکنم؟ اصلا روش یک برنامه چند لایه همین هست؟

gomnam
شنبه 17 شهریور 1386, 21:49 عصر
من یک برنامه چند لایه درست کردم
خوب برام از لایه ها یک dll میسازه و در لایه اجرایی از اونها استفاده میکنه
اما من نمیخوام کاربر به اون dll ها دسترسی داشته باشه یا بتونه ازش استفاده کنه
چیکار باید بکنم؟ اصلا روش یک برنامه چند لایه همین هست؟

حتما الزامی نیست که به صورت dll در بیارینشون
میتونین توی solutionExplorer سه تا folder بسازین برای لایه هاتون و کلاس های مربوط به هر لایه را درون اون بزارین (که زیاد بودن کلاس ها آشفتگی ایجاد نکنه) و از اونا استفاده کنین
اینطوری دیگه دست کاربر را هم میبندین

Mrs.Net
یک شنبه 18 شهریور 1386, 16:22 عصر
یکی از مزایای چند پروژه بودن این بودکه جدا کامپایل میکرد و ...
راه دیگه ای نیست جز یکی کردن؟

mehdi.mousavi
یک شنبه 18 شهریور 1386, 16:50 عصر
من یک برنامه چند لایه درست کردم
خوب برام از لایه ها یک dll میسازه و در لایه اجرایی از اونها استفاده میکنه
اما من نمیخوام کاربر به اون dll ها دسترسی داشته باشه یا بتونه ازش استفاده کنه
چیکار باید بکنم؟ اصلا روش یک برنامه چند لایه همین هست؟


سلام.
کلاسهاتون رو internal تعریف کنید. سپس با استفاده از Strong Naming به اونها اسم بدید و اونها رو Sign کنید. در هر یک از Assembly های نامبرده شده، در فایل AssemblyInfo.cs با استفاده از Attribute زیر به Compiler میتونید بگید که internal های assembly فقط در دسترس فلان assembly ها هستن:


[assembly: InternalsVisibleTo("MyNewAssembly")]به این ترتیب internal های کلاستون، فقط در دسترس assembly ای به نام MyNewAssembly خواهند بود.

Mrs.Net
یک شنبه 18 شهریور 1386, 17:27 عصر
این String Naming چجوریه؟
آیا تو این حالت حتی توابع هم دیده نمیشوند؟
و اگه یک برنامه دیگه با همون نام اسمبلی باشه میتونه ببینه و استفاده کنه؟

mehdi.mousavi
یک شنبه 18 شهریور 1386, 17:50 عصر
این String Naming چجوریه؟
آیا تو این حالت حتی توابع هم دیده نمیشوند؟
و اگه یک برنامه دیگه با همون نام اسمبلی باشه میتونه ببینه و استفاده کنه؟


سلام.
ببخشید، اشتباه نوشتم. منظورم Strong بود، نه String. (تصحیحش کردم). وقتی بهش یه نام از نوع Strong میدین و Sign اش می کنید، برنامه دیگه ای نمیتونه همون اسم رو داشته باشه. در مورد توابع هم باید خدمتتون عرض کنم که توابع internal دیده نخواهند شد.

sinpin
دوشنبه 19 شهریور 1386, 11:49 صبح
حتما الزامی نیست که به صورت dll در بیارینشون
میتونین توی solutionExplorer سه تا folder بسازین برای لایه هاتون و کلاس های مربوط به هر لایه را درون اون بزارین (که زیاد بودن کلاس ها آشفتگی ایجاد نکنه) و از اونا استفاده کنین
اینطوری دیگه دست کاربر را هم میبندین

چرا خیلی - و به 1001 دلیل! - بهتره بصورت DLL کار بشه
یکی از دلایل لایه بندی Reuse کردن برخی قسمتها در آینده است و میدونید که Binary Reuse خیلی بهتر از Code Reuse است.

gomnam
دوشنبه 19 شهریور 1386, 13:40 عصر
چرا خیلی - و به 1001 دلیل! - بهتره بصورت DLL کار بشه
یکی از دلایل لایه بندی Reuse کردن برخی قسمتها در آینده است و میدونید که Binary Reuse خیلی بهتر از Code Reuse است.

کد را همیشه میشه تبدیل کرد به dll ولی عکس این کار ممکن امکان پذیر نباشه
کد changeable تر از dll هست
اگه زمانی خواستین کد خود را بهینه کنید ؟ اگه خواستین امکانات دیگه ای به اون اضافه کنید؟فکر کنم با کد راحت تر میشه کار کرد نه؟

البته dll هم مزایایی ویژه و خاص خودش راداره که نباید فراموش کرد

فکر کنم که جواب یکی از اون 1001 دلیلی را که فرمودین دادم
خوشحال میشم اون 1000 تای دیگه را هم بگین تا یه بحث خوب داشته باشیم
موفق باشید

اَرژنگ
دوشنبه 19 شهریور 1386, 14:06 عصر
۱ـ اسمه اینها دی.ال.ال نیست! دات نت اسمبلی هستند، دی.ال.ال در دات نت معنی نداره.
۲ـ قابلیت تبدیل دات نت اسمبلی به کد و یا برعکس ربطی به این موضوع ندارد. لایه ای کار کردن در مورد قسمت بندی برنامه است.
۳ـدلیل استفاده از هر لایه به صورت دات نت اسمبلی این است که هر لایه ممکن است که در ماشین و یا برنامه جداگانه‌ای استفاده بشند.
۴ـ اگر پروژه یک نفری‌ است، تمام کد را در یک جا ریختن به صورت مصنوعی لایه بندی کردن با استفاده از دات نت اسمبلی‌ها فرقی نداره، ولی اگر قراره پروژه ادامه پیدا کند و گروه‌هایه مختلف باهاش کار کنند باید درست و حسابی قسمت بندی بشد .

shotshat
یک شنبه 13 آبان 1386, 16:57 عصر
سلام
با پیش فرض گرفتن چند اصل در معماری 3 لایه یک سوال داشتم:
1- لایه ی Data Access مربوط به دستیابی به اطلاعات است پس دستورات مربوط به اتصال به پایگاه داده و اجرای StoredProcidure ها را در آن می نویسیم
2-لایه ی business logic مربوط به چک کردن شرط ها و قوانین ست
3-لایه ها هم به طور مستقیم با هم می توانند ارتباط داشته باشند نه برعکس یعنی لایه Data Access نمی تواند به لایه business logic دسترسی داشته باشد.

ما میخواهیم اطلاعاتی که کاربر وارد کرده را بخوانیم و چک کنیم که اگرID وارد شده توسط فرد موجود باشد بقیه ی اطلاعات را درDataBase ثبت کند
حالا ما باید شرط موجود بودن ID را در لایه business logic بنویسیم .
تا اینجاش درست.
ولی چه جوری می تونیم در لایه Data Access بگیم که اگر شرط چک شده در لایه business درست بود بیا این دستورات رو اجرا کن و اطلاعات رو در دیتابیس Save کن؟
لایه ها که برعکس نمی تونن به هم دسترسی داشته باشن؟

اَرژنگ
یک شنبه 13 آبان 1386, 17:27 عصر
سلام
با پیش فرض گرفتن چند اصل در معماری 3 لایه یک سوال داشتم:
1- لایه ی Data Access مربوط به دستیابی به اطلاعات است پس دستورات مربوط به اتصال به پایگاه داده و اجرای StoredProcidure ها را در آن می نویسیم
2-لایه ی business logic مربوط به چک کردن شرط ها و قوانین ست
3-لایه ها هم به طور مستقیم با هم می توانند ارتباط داشته باشند نه برعکس یعنی لایه Data Access نمی تواند به لایه business logic دسترسی داشته باشد.

ما میخواهیم اطلاعاتی که کاربر وارد کرده را بخوانیم و چک کنیم که اگرID وارد شده توسط فرد موجود باشد بقیه ی اطلاعات را درDataBase ثبت کند
حالا ما باید شرط موجود بودن ID را در لایه business logic بنویسیم .
تا اینجاش درست.
ولی چه جوری می تونیم در لایه Data Access بگیم که اگر شرط چک شده در لایه business درست بود بیا این دستورات رو اجرا کن و اطلاعات رو در دیتابیس Save کن؟
لایه ها که برعکس نمی تونن به هم دسترسی داشته باشن؟

شماره ۲ شما کامل نیست!

2-لایه ی business logic مربوط به چک کردن شرط ها و قوانین ست. و بنابر ۳ به لایه داتا اکسس دسترسی دارد، یعنی اینکه اگر قوانین را چک کرد به لایه داتا اکسس دستور میدهد که اطلاعات را در داتبیس ثبت کند. اینکه اطلاعات چگونه در داتابیس ثبت میشود به لایه داتا اکسس مربوط هست.

once4ever
یک شنبه 13 آبان 1386, 17:50 عصر
بطور ساده این لایه BL هست که دستور گرفتن اطلاعات رو ارسال میکنه به لایه دیتا و با مقدیر بدست اومده به لایه خارجی اجازه میده و باز به لایه ی دیتا دستور ثبت اطلاعات میده

shotshat
یک شنبه 13 آبان 1386, 19:23 عصر
لایه business چه جوری می تونه به لایه data access بگه چه کاری بکنه
من برای این کار از کلاس data access آبجکت می گیرم و پارامترهای لازم رو به لایه پاس می کنم
اما اینجا باید چک کنم که آیا ID وارد شده در database من وجود دارد یا نه
برای این کار باید data reader رو چک کنم برای این کار چون کار چک شدن باید در لایه business logic باشه و این لایه data reader رو نمی شناسه (چون در لایه data access تعریف شده) در لایه data accessچنین کاری کردم:


class DAL
{

private bool _drz;
public bool Drz
{
get{return this._drz;}
set{this._drz = value;}
}

public void Search(string UserName, string PassWord)
{
//conection to data base codes...
dr = cmd.ExecuteReader();
_drz = dr.Read();

}


و در لایه business :


class BLL
{
public void Search(string UserName, string PassWord)
{
DAL obj_DAL = new DAL();
obj_DAL.Search(UserName, PassWord);
if (obj_DAL.Drz)
{
MessageBox.Show("valid UserName or Password", "Correct", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
MessageBox.Show("Invalid UserName or Password", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

حالا اگر آبجکت گرفتن از کلاس رو توی if بگذارم drz رو نمی شناسه و اگه بیرون باشه دستورات save کردن اطلاعات که در لایه data access نوشته شده انجام میشه!

امیدوارم گیجتون نکرده باشم و تونسته باشم مشکلم رو درست توضیح بدم.

اَرژنگ
یک شنبه 13 آبان 1386, 19:38 عصر
روش کارتان درست نیست
به این مثال که در اینجا http://barnamenevis.org/forum/showthread.php?t=81952
گذاشتم یک نگاه بندازید،

اَرژنگ
سه شنبه 15 آبان 1386, 03:08 صبح
جناب آرژنگ مثالتون رو دیدم. میشه یک کم بیشتر توضیح بدید که کجای روش کارم غلطه؟
یا یک خورده بیشتر راجع به مثالی که گذاشتید توضیح بدید لطفا
من نگفتم روشتان غلطه، فقط اینکه یکمقداری درست نیست
۱)Drz را در لایه داتابیس تعریف کردید. معمولا تمام ابجکتهایه بیزینس را در لایه بیزینس تعریف میکنند (معمولا نه حتما).
۲) دارید از MessageBox.Show در لایه بیزینس استفاده میکنید، فرمهایه نمایشی متعلق به لایه گوئی هستد.
۳) شاید هم روشتان برایه شما معنی داره، شاید من روشتان را درک نمیکنم ، بنابر حرف من اگر روشتان برایه شما کار میکنه ترکش نکنید، بالاخره شما باید با روشتان مدت زیادی کار کنید و اگر یک روشی که برایه شما معنی نداره و مشکل میافرینه (هر چقدر هم بقیه از روشهایه خودشان تعریف کنند) را به روش خودتان که برایه شما کار میکند و درکش میکنید ترجیح بدید مشکلات بیشتری بوجود میاد.
من میگم به روش مثالی که ضمیمه کردم یک نگاه بندازید و اگر به شما ایده میده که چطوری روشتان را بکار بندازید استفاده‌اش کنید.
این مثالی که ضمیمه کردم در پائینش یک دگمه داره که چک میکند نام و فامیل وارد شده در داتابیس هستش و یا نه، مانند شما که میخواهید چک کنید که پسوردی در داتابیس هستش و یا نه.
از خود کد توضیح‌ بهتر نمیتونم بدم ، به این مثال یک نگاه بندازید و اگر چیزیش به نظر شما معنی نمیداد بپرسید.
من نمیگم که برنامه نویسی ۳ لایه حتما باید این شبیه این مثال باشه، این روشی که "من" بهش عادت دارم و اگر شما فکر میکنید تغییر لازم داره تا برایه شما کار کنه، عوضش کنید و یا فقط به عنوان یک ایده بهش نگاه کنید.
شما پروژه‌ای که باهاش کار میکنید داتابیسش چیه؟ از داتا دزیگنر ویژوال استودیو هم برایه لایه داتا میتوانید کمک بگیرید.

shotshat
سه شنبه 15 آبان 1386, 20:53 عصر
پروژه‌ای که باهاش کار میکنید داتابیسش چیه؟
دیتابیس من sql هست. فکر کنم مثالهای شما دیتابیسش یک چیز دیگه است چون یکسری دستوراتش (مثل IDataBase,OleCbو...) تا حالا به گوشم نخورده بود که فکر کنم مال اینه که دیتا بیس شما متفاوته.

دارید از MessageBox.Show در لایه بیزینس استفاده میکنید، فرمهایه نمایشی متعلق به لایه گوئی هستد.

شما که گفتید messageBox باید در لایه GUI باشه، براساس تعریف وظایف لایه ها درسته ولی اگه بخوایم دقیقا طبق تعاریف پیش بریم باید چک کردن تمام شروط در لایه Business باشد ولی در مثال شما در لایه GUI شرطی را چک کرده بودید و براساس نتیجه ان messegebox گذاشته بودید.
من این مشکل را اینطور حل کردم که در کلاسهایی که در لایه business دارم، شروط را چک می کنم و کلاسم یک return value ی boolean داره که بر اساس شرطی که چک شده true یا false می شود و در لایه Gui براساس T یا F بودن ان return value ی کلاس business ، پیام دلخواه صادر می شود.
با این روش هر لایه طبق وظیفه تعریف شده اش عمل می کند ولی به نظر خیلی مسخره میاد که واسه اینکه messegeBox توی لایه Business نباشه یا چک کردن شروط توی لایهperesentation نباشه چند تا if اضافه تر بذاریم. اصلا این پارامتر پاس کردن های زیاد از این لایه به اون لایه باعث کندی برنامه و اتلاف منابع ما نمیشه؟
مشکل دوم هم که در این روش دارم اینه که هر کلاس فقط می تونه یک پارامتر پاس کنه و فقط یک شرط را چک کند مثلا ما برای ثبت یکسری اطلاعات n تا شرط رو باید چک کنیم . مثلا username تکراری نباشه pass کمتر از 3 تا نباشه id فرد موجود باشه و و و
حالا ما چه جوری می تونیم درست بودن همه این شروط رو با یک کلاس و یک return value نشان بدیم؟

once4ever
سه شنبه 15 آبان 1386, 23:42 عصر
نکته اول اینکه هر شرطی حتما نباید در لایه بیزینس چک شود
بسیاری از شرایطی که جزو اصول برنامه هستند و اکثر به ساختار بانک یا گزارشگیریها و محاسبات مربوط میشه در بیزینس انجام میشه و نه خالی بودن یک تکست باکس
درضمن بیشتر کار کنید تا این در ذهن شما قرار بگیره که میتونید تعداد زیادی پارامتر به یک تابع لایه بیزینس بدید و تمام شرایط اونجا چک شود و یک مقدار به شما برگرداند.
به هرحال روش سه لایه برای مدیریت بهتر (مخصوصا در خطا گیری) و جلوگیری از استفاده کدهای تکراری هست.
موفق باشید

اَرژنگ
چهارشنبه 16 آبان 1386, 13:23 عصر
می دونم که خیلی بشتر باید کار کنم. اگر مثال ساده ای از معماری 3 لایه با C# و دیتابیس SQL دارید لطفا بهم بدید چون دیدن مثالها خیلی به آدم کمک می کنه. بدون دیدن یک برنامه که با اصول صحیح نوشته شده آدم همیشه در اشتباه خودش می ماند و فکر هم می کنه که داره راه رو درست میره!

دوست عزیز با این طرز فکرتان خیلی پیشرفت خواهید کرد. متاسفانه یک مثال ساده برایه معماری ۳ لایه نمیشه داد، چونکه مفاهیم زیادو مختلفی در این زمینه مهم هستند.
برایه مثال، چک کردن اینکه کاربر لگین کرده و بستگی به اینکه در چه گروهی چه اختیاراتی داره ، مایکروسافت در دات‌نت ۲.۰ استفاده از پروفایلها را توصیه میکنه.
معماریه ابجکتهایه بیزینسس لایر، داتا لایر و ... استفاده کردن از Application Blocks بهره میبرند،
http://msdn2.microsoft.com/en-us/library/ms998572.aspx
این لینک را یکی از استادان فرستاده بودند با عرض پوزش که پستشان را پیدا نکردم که بهش لینک بدم.
http://msdn2.microsoft.com/en-us/library/ms978471.aspx

اگر الان دارید با یک پروژه کار میکنید شاید تمام این مفاهیم برایه پروژه شما زیاد باشد. میتوانید همین روشهایی را که استفاده میکنید بهتر کنید و در کنارش هم روشهایی را که مایکراسفت تجویز میکند را مطالعه کنید.

اَرژنگ
یک شنبه 16 دی 1386, 05:32 صبح
سلام
ایمیل من mfazari89@yahoo.com است.
از آقای ارژنگ می خوام اگر ممکنه یه کم بیشتر توضیح بدند
با تشکر
با سلام،
نمیدونم کدام قسمت را توضیح بدم، اگر در مورد برنامه نویسی لایه‌ای میخواهید یاد بگیرید :
http://www.google.com/search?q=C%23+ntier
برایه شروع و ایده گرفتن از http://asp.net/learn/data-access/ شروع کنید.

پروژه Duwamish هم http://msdn2.microsoft.com/en-us/library/ms978471.aspx

هم بدرد میخوره

اَرژنگ
یک شنبه 16 دی 1386, 05:38 صبح
در بخش نمونه برنامه های همین تالار هم یه نمونه عالی هست

لطفاً‌ آدرس دقیق بدید
من نتونستم پیداش کنم

hassan razavi
یک شنبه 16 دی 1386, 07:22 صبح
دوستان ببخشید. می دونستم که برنامه رو جناب ارژنگ خان گذاشتند ولی فکر می کردم تو نمونه برنامه ها باشه. کلمه "سه لایه" و ارسال شده توسط "ارژنگ" رو جستجو کردم و پیداش کردم. فکر کنم خودش باشه.
http://barnamenevis.org/forum/showthread.php?t=81952&highlight=%D8%B3%D9%87+%D9%84%D8%A7%DB%8C%D9%87

razavi_university
سه شنبه 18 دی 1386, 00:23 صبح
با سلام،
نمیدونم کدام قسمت را توضیح بدم، اگر در مورد برنامه نویسی لایه‌ای میخواهید یاد بگیرید :
http://www.google.com/search?q=C%23+ntier
برایه شروع و ایده گرفتن از http://asp.net/learn/data-access/ شروع کنید.

پروژه Duwamish هم http://msdn2.microsoft.com/en-us/library/ms978471.aspx

هم بدرد میخوره
آرژنگ جان لینک‌هایی که گذاشتی بیشتر مربوط به ASP بودند
یعنی لایه سوم ASP بود
مقاله‌ای یا پروژه‌ای داری که 3 لایه فقط در WinApp و DataBase باشد.
ممنون

Masoud_TB
دوشنبه 15 بهمن 1386, 10:00 صبح
اگر می خواهی برنامه نویسی Object Oriented رو شروع کنی به این وبلاگ یه سر بزن:

ttp://csharptuning.blogfa.com (http://csharptuning.blogfa.com)

راه درازی در پیش داری ولی به رفتنش میارزه

اَرژنگ
دوشنبه 15 بهمن 1386, 15:36 عصر
آرژنگ جان لینک‌هایی که گذاشتی بیشتر مربوط به ASP بودند
یعنی لایه سوم ASP بود
مقاله‌ای یا پروژه‌ای داری که 3 لایه فقط در WinApp و DataBase باشد.
ممنون
برایه پروژه‌هایه WinApp از داتا بایندینگ چیزه بیشتری لازم نیست.

اَرژنگ
دوشنبه 15 بهمن 1386, 15:40 عصر
اگر می خواهی برنامه نویسی Object Oriented رو شروع کنی به این وبلاگ یه سر بزن:

ttp://csharptuning.blogfa.com (http://csharptuning.blogfa.com)

راه درازی در پیش داری ولی به رفتنش میارزه
Object Oriented و برنامه‌نویسی لایه‌ای چیزهایه متفاوتی هستند ولی Object Oriented بدانه دانستن Design Patterns به تنهایی هیچ چی نیست.
Object Oriented تازه شروع کار است و به دانستنش حتما میارزه.

آرش2020
سه شنبه 16 بهمن 1386, 02:26 صبح
من یه نمونه دارم که از معماری سه لایه استفاده شده . البته نمیدونم به دردت میخوره یا نه؟ خواستم برات ضمیمه کنم اما خطم مشکل داره نمیتونم . اگه لازم داری mail بده واست بفرستم.


ممکنه برنامه ای که گفتید رو برای من SEND کنید.ایمیل من:
erorarash_2020@yahoo.com

آرش2020
سه شنبه 16 بهمن 1386, 02:35 صبح
لطفا اگر کسی برنامه سه لایه داره برای منم SEND کنه ممنون می شم.ایمیل من:
erorarash_2020@yahoo.com

اَرژنگ
سه شنبه 16 بهمن 1386, 05:25 صبح
لطفا اگر کسی برنامه سه لایه داره برای منم SEND کنه ممنون می شم.ایمیل من:
erorarash_2020@yahoo.com
http://barnamenevis.org/forum/showthread.php?p=429815&highlight=%D8%B9%D8%AF%D8%AF+%D9%85%D9%86%D9%81%DB %8C#post429815
این یک مثال ساده است، در اصل برایه برنامه نویسی ۳ لایه نیست ولی در برنامه نویسی ۳ لایه پیاده شده. برایه شروع و ایده گرفتن بد نیست.

Masoud_TB
سه شنبه 16 بهمن 1386, 08:56 صبح
Design Pattern مفاهیم طراحی هستند به بیشتر به درد کسانی می خورد که می خواهند سیستم طراحی کنند.
این که Object Oriented رو بفهمی پیش نیاز اینه که بخواهی الگو های طراحی رو بشناسی. خیلی خوشحالم که اینجا صحبت از الگو های طراحی میشه و البته امیدوارم که همونقدری که صحبت هم میشه ازش استفاده هم بشه.

اما باید بگم که هر برنامه نویسی باید Object Oriented Programming رو بدونه اما مفاهیم Object Oriented Analysis & Design به درد هر برنامه نویسی نمی خوره که Design Pattern و Analysis Patterns هم از اوناست.

باید به عنوان کسی که چندین ساله که تدریس سی شارپ رو برای موسسات و سازمان ها و افراد بسیار انجام داده باید بگم که متاسفانه ما هنوز به Object Oriented Programming مشکل داریم چه برسد به Design Pattern. و بنده شاهدم که 90 درصد کسانی که سر کلاس های Design Pattern می نشینن فقط به خاطر دریافت مدرک اون اومدند اگر فقط و فقط 15 درصد مطالب رو یاد بگیرند باید بهشون گفت دست مریزاد.

دوست عزیز اگر هدف آموزش است (نه ...) به کسی که تازه می خواد برنامه نویسی اصولی رو شروع کنه نباید انقدر مثال پیچیده ای مثل Design Pattern رو تو صورتش بزنیم که اصلا ناامید بشه و فکر کنه که هیچ. وقتی ما هنوز تو آموزش مفهوم کلاس و object مشکل داریم بیایم بگیم Abstract Factory چیه!!!

اَرژنگ
سه شنبه 16 بهمن 1386, 15:34 عصر
اشکال OOP بدانه داشتن OODP مانند داشتن کلمات و دستور زبان خالی میماند. اگرچه تمام زبان را میشه با کلمات و دستور زبان ساخت ولی تا زمانی که کسی پاراگراف و یا یک داستان کامل را نخوانده باشد ، هرچی کلمات و دستور زبان هم بداند نمیتونه یک نوشته کامل سرهم کند.

خصوصیات Object Oriented Programming خودش محتوایه چندین نوع پترن است و در زمان برنامه نویسی Procedural که قدیمها رایج بود این خصوصیات را به شکل مصنوعی برنامه نویسی میکردند. منتها به خاطر فوایدی که داشتند از قسمت برنامه نویسی کشیدنشان بیرون و جزوه زبانشان کردند.

Design Pattern پیچیده نیستند، یاد گرفتن برنامه نویسی شئیگرا بدانه Design Pattern ها مانند یاد گرفتن زبان انگلیسی فقط با داشتن لغاتش و دستور زبان است، کسی تا مثلهایه سرهم کردن کلمات را در پاراگرافها و موضوعات کامل نبینید مگر زبان یاد میگیره؟

برنامه نویسی هم فرقی ندارد، اگر به یکی آجر چین را یاد بدیم باید بهش اینکه چطوری ۲ تا دیوار را کنار هم بگذارد را هم یاد داد (حالا لازم نیست اینکه ساختمان کامل خه ریختی میشد را بدانند، آرکیتکت برایه همین کار است.)

به جز پترنها ، ضد پترنها هم هستند (anti patterns) و کسانیکه که از هر دویه اینها خبر ندارند مدوما نه اینکه دوباره چرخ رو اختراع میکنند ، بله اشتباهش را درست میکنند، برایه مثال مدواما باید اینکه چرا نباید از یک کلاس استاتیک برایه رد و بدل کردن اطلاعات استفاده بشد را در همین فروم بارها سره و کله بزنیم، اینها حتا مفاهیم شئیگرائی را هم نمیفهمند و بعدش بدانه دانستن روشهایه درست استفاده از اصول شئیگرایی (Design Patterns) آستینهاشان را بال میزنند و میفتند به جانه کد.

Mahdi.Kiani
چهارشنبه 01 اسفند 1386, 09:04 صبح
سلام
من خیلی دوست دارم این LINQ رو بشناسم میشه یه کم توضیخ بدی که فرقش با روش های قبلی چیه و چه حسنی داره؟

یکی از بهترین مقاله ها ، مقاله خود hejlsbeg هست.
من اونو به صورت pdf در اوردم و آپلود کردم . دوستان می تونن استفاده کنند.

have fun

Mahdi.Kiani
چهارشنبه 01 اسفند 1386, 09:08 صبح
این هم دو تا مقاله دیگه
اولی مربوط به LINQ To Sql
و دومی مروبط به LINQ To XML
موفق باشید

اَرژنگ
چهارشنبه 01 اسفند 1386, 14:09 عصر
http://channel9.msdn.com/Showpost.aspx?postid=114680
http://channel9.msdn.com/Showpost.aspx?postid=202138
http://davidhayden.com/blog/dave/archive/2007/01/29/LINQVideoAndersHejlsbergLINQTutorials.aspx

sinpin
چهارشنبه 01 اسفند 1386, 14:57 عصر
سلام
من خیلی دوست دارم این LINQ رو بشناسم میشه یه کم توضیخ بدی که فرقش با روش های قبلی چیه و چه حسنی داره؟
جهت یک آشنایی مختصر :
http://barnamenevis.org/forum/showpost.php?p=470827&postcount=75

این لینک خوبیه :
http://blogs.msdn.com/charlie/archive/2006/11/11/charlie-calvert-s-technical-blog-index.aspx

sinpin
چهارشنبه 01 اسفند 1386, 22:57 عصر
اگر دارید با دات نت ۳.۰ کار میکنید بیخیال این روشها دیگر قدیمی شدند، روشهایه جدید از LINQ استفاده میکنند.


An Example of a Multi Tier Architecture for Linq to Sql (http://code.msdn.microsoft.com/multitierlinqtosql/Release/ProjectReleases.aspx?ReleaseId=431)


http://code.msdn.microsoft.com/multitierlinqtosql

اَرژنگ
جمعه 17 اسفند 1386, 00:43 صبح
سوال در مورد برنامه چند لایه و درخواست نمونه بود ولی متاسفانه بحث منحرف شد.
http://code.msdn.microsoft.com/multitierlinqtosql

sasanazizi
چهارشنبه 11 اردیبهشت 1387, 13:00 عصر
BARNAMEH NEVISI 3 LAYER

Alen
دوشنبه 27 آبان 1387, 21:46 عصر
من تازه دارم راجع به معماری 3 لایه چیزهایی یاد میگیرم
یه جا خوندم که فقط لایه UI روی کلاینت ها قرار میگیره و دو لایه دیگه بر روی سرور هستند
آیا این درسته؟
در این صورت باید از socket programing استفاده کنم یا راه حل دیگه برای دسترسی به متدهای اون دولایه که روی سرور هستند وجود داره؟
ببخشید اگه سوالم مبتدیانه هستش چون تازه کارم

mojtaba.kaviani
دوشنبه 27 آبان 1387, 22:38 عصر
واقعا این برنامه های نوشته شده تا حالا سه لایه است؟

ولاگ من در مورد برنامه های چند لایه حتما ببینید و ادامه دارد!!

نوشته های فنی و شخصی من (http://www.mkaviani.blogfa.com)

SAMANEH_E
دوشنبه 27 آبان 1387, 22:43 عصر
تو مباحثoopیکی از اجزا اون کپسوله سازی (یعنی نیازهای مسئله:property,method,field,.....)تو لایه بعد استفاده و به کارگیری از ایناست.

Green Way
پنج شنبه 26 فروردین 1389, 11:12 صبح
سلام
ممنون ازراهنمایی قشنگتون
من دانشجوی ترم آخر کارشناسی هستم
استاد تاکید دارن که برنامه نویسی پروژه سه لایه صورت بگیره
من هیچ اطلاعاتی ندارم
توی برنامه نویسی هم ضعیفم
اونم سه لایه با سی شارپ باید باشه
الان چند روزیه می گردم یه منبعی پیدا کنم که بتونه کامل کمک کنه اما اکثرا توضیح مختصر دادند
و بعد از توضیح هیچ پروژه عملی ندیدم
لطفا کتابی یا هرچی که فکر می کنین معرفی کنید بتونم بخونم یاد بگیرم
سی شارپ رو دارم می خونم اما سه لایه نمی دونم به چه شکل هست.
کمکم کنید
ممنون

Green Way
پنج شنبه 26 فروردین 1389, 11:25 صبح
سلام
ممنون از این همه راهنمایی ها ی خوبتون
دانشجوی ترم آخر کارشناسیم
پروژه آخرم باید با سی شارپ و برنامه نویسی سه لایه باشه
هیچ اطلاعاتی ندارم . سی شارپ رو دارم می خونم اما نمی دونم برنامه نویسی سه لایه چطوری هستش
لطفا کمکم کنید
کتابی معرفی کنید که بتونم با خوندش برنامه نویسی سه لایه رو انجام بدم ممنونم
آقای عسگری سایت بهم اجازه نمی ده بهتون پیام بفرستم مجبورم همین جا بنویسم.
خواهش می کنم در مورد برنامه نویسی سه لایه کتابی جامع معرفی کنید. سی شارپ رو دارم می خونم ولی از این برنامه نویسی سه لایه سر در نمیارم. استاد هم سایت با سی شارپ و برنامه نویسی سه لایه می خواد . تازه LINQ رو هم ازمون می خواد . می خوام واقعا رو پروژه ام کار کنم . اما فعلا فقط توضیح در مورد سه لایه دیدم. مثل کتاب سی شارپ کتابی که بخواد در این زمینه کمک کنه پیدا نکردم. درمورد LINQ هم کمکم کنید. جسارت من رو می بخشید اما Gmail من اینه :Ameneh.Reza@Gmail.com
می بخشید چاره ای نداشتم اینجا نوشتم

اَرژنگ
پنج شنبه 26 فروردین 1389, 11:28 صبح
BARNAMEH NEVISI 3 LAYER
این مثال خوبی نیست، GUI با داتابیس مستقیماً ارتباط دارد، برایه شروع یک مثال ساده به این
http://barnamenevis.org/forum/showthread.php?p=952137#post952137
یک نگاه بندازید.

Green Way
پنج شنبه 26 فروردین 1389, 11:55 صبح
سلام
خواهش می کنم کتابی رو معرفی کنید که از پایه توضیح بده
من اصلا سه لایه نمی دونم به چه صورت هست.
البته کتاب سی شارپ رو دارم می خونم
با تشکر

اَرژنگ
پنج شنبه 26 فروردین 1389, 12:12 عصر
آرژنگ جان لینک‌هایی که گذاشتی بیشتر مربوط به ASP بودند
یعنی لایه سوم ASP بود
مقاله‌ای یا پروژه‌ای داری که 3 لایه فقط در WinApp و DataBase باشد.
ممنون
این یک مثال ساده است که برایه شروع و راه انداختن بکار بیاد، http://barnamenevis.org/forum/showthread.php?p=952137#post952137

اَرژنگ
پنج شنبه 26 فروردین 1389, 12:26 عصر
سلام
خواهش می کنم کتابی رو معرفی کنید که از پایه توضیح بده
من اصلا سه لایه نمی دونم به چه صورت هست.
البته کتاب سی شارپ رو دارم می خونم
با تشکر
لایه سازی برنامه نوشتن چیزی نیست که در یک کتاب باشد، اگر بشه که برنامه را به قسمتهایه منطقی تقسیم کرد و هر قسمت وظائف مشخصی را داشته باشند و حداقل مقدار وابستگی بینشان ایجاد بشه.
برایه لایه بندی واقعی استفاده از WCF لازم است، ولی برایه یک مثال ساده یک لایه بندی منطقی به این مثال نگاه بندازید. http://barnamenevis.org/forum/showthread.php?p=952137#post952137
در همین توپیک لینکهایه زیادی به پروژه‌هایه مختلف فرستاده شده، ولی از زمانیکه این توپیک شروع شده بود تا الان روشهایه جدیدتری درآمدند که استفاده‌ازشان زمان میبره و نمیشه در یک کتاب جمعشان کرد، بعضی از تکنیکها به اندازه‌ای نوینند که هنوز کتابی درموردشان چاپ نشده.
برنامه‌نویسی لایه‌ای بیشتر یک ایده‌ات تا یک روش بخصوص پیاده کردن، و بنا بر مختصات پروژه نحوه پیداه شدنش تغییر میکنه.

Freydoonk
پنج شنبه 26 فروردین 1389, 12:32 عصر
با سلام
در مورد مفاهيم برنامه نويسي چند لايه بايد اينطور بگم كه ما پدوژه اي رو كه روش كار ميكنيم به معمولا سه بخش تقسيم بندي ميكنيم UI(View),dataAccess,Business
تو UI تنها فرم هامون رو طراحي ميكنيم
تو dataAccess دستورات مربوط به ديتابيس رو مينويسيم
و تو Business رابط بين دو لايه بالا است
اين معماري به صورت 4 لايه 5 لايه نيز وجود داره كه تقسيم بندي رو با جزئيلت بيشتري انجام ميده.
در مورد مثال هم عرض كنم كه فعلا اين كار استاندارد خاصي نداره و معمولا سليقه اي انجام ميشه.

اَرژنگ
پنج شنبه 26 فروردین 1389, 12:48 عصر
با سلام
در مورد مفاهيم برنامه نويسي چند لايه بايد اينطور بگم كه ما پدوژه اي رو كه روش كار ميكنيم به معمولا سه بخش تقسيم بندي ميكنيم UI(View),dataAccess,Business
تو UI تنها فرم هامون رو طراحي ميكنيم
تو dataAccess دستورات مربوط به ديتابيس رو مينويسيم
و تو Business رابط بين دو لايه بالا است
اين معماري به صورت 4 لايه 5 لايه نيز وجود داره كه تقسيم بندي رو با جزئيلت بيشتري انجام ميده.
در مورد مثال هم عرض كنم كه فعلا اين كار استاندارد خاصي نداره و معمولا سليقه اي انجام ميشه.

پیاده‌ ریزیش ممکنه سلیقه‌ای باشد ولی خصوصیاتی را که خودتان نام بردید باید داشته باشد، اینهم را باید اضافه کرد که :
GUI بر Business وابستگی دارد.
GUI بر Database نباید وابستگی داشته باشد.(نمیتواند مستقیم با داتابیس ارتباط برقرار کند، و در مورد داتابیس هیچ اطلاعاتی نباید داشته باشد).
Business بر Database وابستگی دارد.
Business بر GUI نباید وابستگی داشته باشد.
Database به Business و GUI نباید وابستگی داشته باشد.(به جز با اینکه کارهایه داتابیسی انجام بده هیچ اطلاعاتی در مورد بیزینس و یا گویی ندارد).

در مورد مثال هم عرض کنم، من یک مثال ساده برایه لایه بندی منطقی گذاشتم، حالا اگر روشی دیگر است که قابلیت حفظ داده و بازخاندنشان را داشته باشه و مقرارتی که در بالا نام برده شد را پیاده کند و به هر سلیقه‌ای پیاده شده باشد را هر کی که بتونه بفرسته بررسی کنیم.

Green Way
شنبه 28 فروردین 1389, 09:02 صبح
لایه سازی برنامه نوشتن چیزی نیست که در یک کتاب باشد، اگر بشه که برنامه را به قسمتهایه منطقی تقسیم کرد و هر قسمت وظائف مشخصی را داشته باشند و حداقل مقدار وابستگی بینشان ایجاد بشه.
برایه لایه بندی واقعی استفاده از WCF لازم است، ولی برایه یک مثال ساده یک لایه بندی منطقی به این مثال نگاه بندازید. http://barnamenevis.org/forum/showthread.php?p=952137#post952137
در همین توپیک لینکهایه زیادی به پروژه‌هایه مختلف فرستاده شده، ولی از زمانیکه این توپیک شروع شده بود تا الان روشهایه جدیدتری درآمدند که استفاده‌ازشان زمان میبره و نمیشه در یک کتاب جمعشان کرد، بعضی از تکنیکها به اندازه‌ای نوینند که هنوز کتابی درموردشان چاپ نشده.
برنامه‌نویسی لایه‌ای بیشتر یک ایده‌ات تا یک روش بخصوص پیاده کردن، و بنا بر مختصات پروژه نحوه پیداه شدنش تغییر میکنه.
سلام
ممنون از راهنمایی خوبتون
با این توصیف من باید در برنامه نویسی تسلط پیدا کنم تا این مفهوم رو بهتر درک کنم.
بازم تشکر که توجه کردید.
:لبخندساده:

bensaeed
یک شنبه 27 مرداد 1392, 16:12 عصر
سلام
این تصویر خیلی میتونه بدردتون بخوره...
حتما نگاش کنید...
:چشمک: :قلب:
http://social.msdn.microsoft.com/Forums/getfile/83238

خواهش میکنم.:خجالت: