نمایش نتایج 1 تا 26 از 26

نام تاپیک: معماری 3 لایه

  1. #1
    کاربر دائمی آواتار mohsen99
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    Microsoft
    پست
    144

    معماری 3 لایه

    فرض کنید معماری یک برنامه دارای 3 لایه:
    1- User Interface layer
    2- Business layer
    3- Data Layer
    باشد
    سوال: آیا ارتباط لایه ها فقط یک طرفه (از بالا به پایین) است یا ارتباط می تواند دو طرفه هم باشد؟
    به عبارت ساده تر آیا می توان در لایه 3 از کلاسهای لایه 2 استفاده کرد؟

  2. #2
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379
    1- ارتباط میتواند دو طرفه باشد.

    2- ارجاعات کلاسهای لایه ها بر حسب نیاز است. بعنوان مثال، طبق ترتیب شماره گذاری شما، لایه 3 چه نیازی به فراخوانی لایه 2 میتواند داشته باشد؟

  3. #3
    محروم شده
    تاریخ عضویت
    اسفند 1383
    محل زندگی
    Never Land
    پست
    423
    خواهش می کنیم اگه کسی مثالی در مورد 3tier داشته باشه (البته به جزء Duwamish) به ما هم حال بده
    با تشکر

  4. #4
    کاربر دائمی آواتار mohsen99
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    Microsoft
    پست
    144
    لایه 3 چه نیازی به فراخوانی لایه 2 میتواند داشته باشد؟
    برای مثال برای ثبت اطلاعات یک object از یک کلاس در db بجای فرستادن تک تک فیلدها به لایه 3 خود آن object فرستاده شود.

  5. #5
    محروم شده آواتار Babak-Aghili
    تاریخ عضویت
    اسفند 1383
    محل زندگی
    در خاطرات شما
    پست
    801
    من این کتاب را توصیه میکنم ::

    Microsoft Press :: Building Enterprise Soloutions With .NET

    البته به اون دات نت اش نگاه نکیند ! بطور کلی توضیح داده .

  6. #6
    محروم شده
    تاریخ عضویت
    اسفند 1383
    محل زندگی
    Never Land
    پست
    423
    اقا این کتاب رو کدوم انتشارات افست کرده
    راستی یه قیمت هم محبت می کنی
    راستی اگه E-book داری حال بده
    راستی در مورد Crystal Reports دات نت (البته در مورد برنامه نویسی) کتابی سراغ دارید
    مرسی :wink:

  7. #7
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379
    خواهش می کنیم اگه کسی مثالی در مورد 3tier داشته باشه (البته به جزء Duwamish) به ما هم حال بده
    به چه زبانی مثال میخواهی؟

  8. #8
    محروم شده آواتار Babak-Aghili
    تاریخ عضویت
    اسفند 1383
    محل زندگی
    در خاطرات شما
    پست
    801
    این تصویر را از توی همان کتابه آوردم .
    فکر کنم مفید باشه .

  9. #9
    محروم شده
    تاریخ عضویت
    اسفند 1383
    محل زندگی
    Never Land
    پست
    423
    آقای کرامتی اگه ممکن یه مثال در VB.NET می خواستم (راستی Windows App باشه)
    tnx

  10. #10
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379
    این یکی رو شرمنده.

    من VB.NET رو اونقدر وارد نیستم که پاسخ این سوال رو در اون زبان بهتون بدم.

    اگر در #C یا دلفی خواستید در خدمتم.

  11. #11
    محروم شده
    تاریخ عضویت
    اسفند 1383
    محل زندگی
    Never Land
    پست
    423
    آقای کرامتی اگه سی شارپ هم باشه محبت می فرمایید (Windows App باشه لطفا)

  12. #12
    کاربر دائمی آواتار mohsen99
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    Microsoft
    پست
    144
    این تصویر را از توی همان کتابه آوردم .
    فکر کنم مفید باشه .
    همانطور که در عکس هم مشخصه همه فلشها یک طرفه است
    علت پرسیدن سوالم هم همین بود که همیشه در کتابها فلش یک طرفه است از بالا به پایین

  13. #13
    1- ارتباط میتواند دو طرفه باشد.

    2- ارجاعات کلاسهای لایه ها بر حسب نیاز است. بعنوان مثال، طبق ترتیب شماره گذاری شما، لایه 3 چه نیازی به فراخوانی لایه 2 میتواند داشته باشد؟

    معماری 3 لایه روشی برای جدا کردنه منطق تجاری برنامه از زیر ساخت لازم برای اجرای اونه
    در لایه میانی میتوان از com+ یا corbaیا روش بورلند MIDASاستفاده کرد
    پس کاملا مشخصه که لایه های پایین به لایه های بالا visibility ندارند (com+ به UI دسترسی نداره)

    نکته اصلی اینکه در متدولوژی معماری N-لایه ای (نه فقط 3 لایه) لایه های پایین نباید به لایه های بالا دسترسی داشته باشند در موارد خاص که مجبور به اینکار هستیم راه حله ارئه شده اگر اسمش درست یادم باشه Observer Pattern است.می تونی به کتابهای Object oriented Design مراجعه کنی

  14. #14
    کاربر دائمی آواتار mohsen99
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    Microsoft
    پست
    144
    نکته اصلی اینکه در متدولوژی معماری N-لایه ای (نه فقط 3 لایه) لایه های پایین نباید به لایه های بالا دسترسی داشته باشند
    بهتر علت پرسیدن سوال توضیح بدم
    تا انجایی که من نوی دانشگاه خوندم و توی کتابها دیدم معماری 3لایه همین طوره که quack گفته ولی وقتی کد Community Server رو بررسی می کردم دیدم که در لایه data از کلاسهای لایه بالاتر استفاده شده
    می خواستم بدونم بالاخره کدومش درسته؟؟؟

  15. #15
    کاربر دائمی آواتار M.GhanaatPisheh
    تاریخ عضویت
    اردیبهشت 1383
    محل زندگی
    ----------
    پست
    1,267
    Microsoft Press :: Building Enterprise Soloutions With .NET
    این کتاب یه دید جامع و باز از Pattern ها بهتون میده که توی دید تحلیلیتون و حتی Programmingتون بسیار تاثیر گذار خواهد بود.

    نقل قول:
    خواهش می کنیم اگه کسی مثالی در مورد 3tier داشته باشه (البته به جزء Duwamish) به ما هم حال بده

    به چه زبانی مثال میخواهی؟
    شما دارید راجع به معماری حرف می زنید
    به چه زبانی اینجا واژه غریبی است.

    همانطور که در عکس هم مشخصه همه فلشها یک طرفه است
    علت پرسیدن سوالم هم همین بود که همیشه در کتابها فلش یک طرفه است از بالا به پایین
    دوست عزیز
    هر لایه یک سطح انتزاعی برای سطح بالا تر است
    مسخره است که از کدهایUI توی Business Logic استفاده بشه یا موارد مشابه.مگر موارد خاص...

    اگر اسمش درست یادم باشه Observer Pattern است
    درسته دوست عزیز.

  16. #16
    کاربر دائمی آواتار mohsen99
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    Microsoft
    پست
    144
    هر لایه یک سطح انتزاعی برای سطح بالا تر است
    مسخره است که از کدهایUI توی Business Logic استفاده بشه یا موارد مشابه.مگر موارد خاص...
    من نگفتم از کدهای UI در Business Logic استفاده بشه
    منظور من استفاده از کلاسهای Business Logic در لایه data بود

  17. #17
    کاربر دائمی آواتار M.GhanaatPisheh
    تاریخ عضویت
    اردیبهشت 1383
    محل زندگی
    ----------
    پست
    1,267
    بازم همون جریانه است.
    یه کم فکر کنید. :wink:

  18. #18
    منظور من استفاده از کلاسهای Business Logic در لایه data بود
    یه مثال بزن تا راجع اون بحث کنیم

  19. #19
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1382
    پست
    49
    سلام آقای کرامتی

    اگه امکانش هست برای من به دلفی یک مثال بفرستید .
    mehdi_rah@yahoo.com

  20. #20
    کاربر دائمی آواتار mohsen99
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    Microsoft
    پست
    144
    یه مثال بزن تا راجع اون بحث کنیم
    برای مثال قسمتی از کد CommunityServer:
    از فایل WeblogSqlDataProvider.cs

    //------------------------------------------------------------------------------
    // <copyright company="Telligent Systems">
    // Copyright (c) Telligent Systems Corporation. All rights reserved.
    // </copyright>
    //------------------------------------------------------------------------------

    using System;
    using System.Collections;
    using System.Data;
    using System.Data.SqlClient;
    using CommunityServer.Blogs; //کلاس لایه Business Logic
    using CommunityServer.Blogs.Components; //کلاس لایه Business Logic
    using CommunityServer.Components; //کلاس لایه Business Logic

    namespace CommunityServer.Data
    ...


    کد اضافه کردن پست به وبلاگ :

    public override BlogPostResults AddPost(WeblogPost post, User user, out int postID)
    {
    postID = -1;

    // Create Instance of Connection and Command Object
    //
    using( SqlConnection myConnection = GetSqlConnection() )
    {
    SqlCommand myCommand = new SqlCommand(databaseOwner + ".cs_weblog_Post_Create", myConnection);
    myCommand.CommandType = CommandType.StoredProcedure;

    myCommand.Parameters.Add("RETURN_VALUE", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;

    // Add parameters
    //
    myCommand.Parameters.Add("@SectionID", SqlDbType.Int).Value = post.SectionID;
    myCommand.Parameters.Add("@ParentID", SqlDbType.Int).Value = post.ParentID;
    myCommand.Parameters.Add("@AllowDuplicatePosts ", SqlDbType.Bit).Value = true;
    myCommand.Parameters.Add("@DuplicateIntervalIn Minutes", SqlDbType.Int).Value = 1;
    myCommand.Parameters.Add("@Subject", SqlDbType.NVarChar, 256).Value = post.Subject;
    myCommand.Parameters.Add("@IsLocked", SqlDbType.Bit).Value = post.IsLocked;
    myCommand.Parameters.Add("@IsApproved", SqlDbType.Bit).Value = post.IsApproved;
    myCommand.Parameters.Add("@IsTracked", SqlDbType.Bit).Value = post.IsTracked;
    myCommand.Parameters.Add("@PostType", SqlDbType.Int).Value = post.PostType;
    myCommand.Parameters.Add("@EmoticonID", SqlDbType.Int).Value = post.EmoticonID;
    myCommand.Parameters.Add("@UserID", SqlDbType.Int).Value = user.UserID;
    myCommand.Parameters.Add("@Body", SqlDbType.NText).Value = post.Body;
    myCommand.Parameters.Add("@FormattedBody", SqlDbType.NText).Value = post.FormattedBody;
    myCommand.Parameters.Add("@UserHostAddress", SqlDbType.NVarChar, 32).Value = post.UserHostAddress;
    myCommand.Parameters.Add("@PostDate",SqlDbType .DateTime,8).Value = post.PostDate;
    myCommand.Parameters.Add("@BloggerTime",SqlDbT ype.DateTime,8).Value = post.BloggerTime;
    ...

    همانطور که می بینید WeblogPost وUser از کلاسهای لایه Business Logic هستند

  21. #21
    متاسفانه منظورت رو متوجه نشدم . میشه مشکل رو یه ذره توضیح بدی

  22. #22
    کاربر دائمی آواتار mohsen99
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    Microsoft
    پست
    144
    متاسفانه منظورت رو متوجه نشدم . میشه مشکل رو یه ذره توضیح بدی
    صورت سوال : آیا در لایه data می توان از کلاسهای لایه Business استفاده کرد ؟

    جواب 1 : خیر
    دلیل : کتابهای مهندسی نرم افزار و جواب آقای قناعت پیشه

    جواب 2 : بله
    دلیل : مثالهای عملی موجود مثل برنامه Community Server 1.0 که قسمتی از کدشو قبلا نوشتم

    1 سوال با 2 جواب درست (و متضاد) :strange:

  23. #23
    اولا که توی این مثالی که زدی فلش همچنان بالا به پایینه
    اگه منظورت پارامتر های تابع addpost که user و... یک سری دیتاس که با یک Message از لایه بالا به لایه 3 فرستاده شده نه از پایین به بالا

    دوما جواب سوالت رو توی اولین ارسالم دادم . گفتم که مواردی هست که لازمه یک Message از پایین به بالا فرستاده بشه(البته اما نه این مثالی که زدی). از لحنت مالومه اصلا نرفتی Patternی که بهت گفتم رو بخونی

  24. #24
    کاربر دائمی آواتار mohsen99
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    Microsoft
    پست
    144
    یک سری دیتاس که با یک Message از لایه بالا به لایه 3 فرستاده شده نه از پایین به بالا
    Message یا اشیاپی از کلاسهای لایه بالاتر؟

    در مورد load چی؟ برعکس همین مورد اتفاق می افته

  25. #25
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    نقل قول نوشته شده توسط mohsen99 مشاهده تاپیک
    برای مثال برای ثبت اطلاعات یک object از یک کلاس در db بجای فرستادن تک تک فیلدها به لایه 3 خود آن object فرستاده شود.
    استفاده از این روش چه فایده‌ای اضافه میکنه؟
    در مورد مثال از کامیونیتی سرور:
    اگر میخواستند ،میتوانستند از یک اینترفیس که در بیزینیس لایر هم پیاده شده استفاده کنند و به آ نطریق لازم نبود که لایه ۳ در مورد لایه ۲ چیزی بدانه (هر دو لایه در مورد اینترفیسی که باید باهاش کار کنند میدانستند).
    در هیچ حالتی لازم نیست که لایه ۳ از لایه ۲ استفاد کند و اگر هم جایی دیدید که استفاد میکند میشه این نیاز را برداشت.

  26. #26

    نقل قول: معماری 3 لایه

    سلام اگه لطف کنید یه مثال از سی شارپ بزارید خیلی خوب میشه.
    ممنون

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

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