PDA

View Full Version : اشکال در معماری 3 لایه



fatemeh rahimi
شنبه 03 آذر 1386, 21:54 عصر
سلام.یه سوال داشتم ، اینکه تو معماری 3 لایه میشه از کلاس presentationام، obj بگیرم ومتد call کنم؟ با توجه به اینکه کلاس presentation ام همون کلاس فرمم(پشت فرم)میشه!
اگه نمیشه obj گرفت پس چیکار باید کرد؟به عنوان مثال من یه فرم login دارم که میخوام کلاس کنترلیم نام کاربری وکلمه عبور رو از کلاس presentation ام بگیره و با username & password هایی که از کلاس data access ام گرفته مقایسه کنه و اجازه ورود رو بده.
برای اینکار چطور کلمه عبور ونام کاربری وارد شده توسط کاربر رو تو کلاس کنترلی بیارم!؟

vcldeveloper
یک شنبه 04 آذر 1386, 01:46 صبح
کلاسی که نقش کنترل کننده را داره یک متد تعریف میکنه که پارامترهای ورودی آن username\password کاربر باشد. کلاس سطح کلاینت شما (همون فرم برنامه تون) هر زمان نیاز به لاگین داشته باشه، این متد را فراخوانی میکنه و username\password ایی را که کاربر وارد کرده به عنوان پارامتر به این متد پاس میده. متد مربوطه در داخل لایه دوم سیستم (Business Logic که کلاس کنترل کننده در آن قرار داره) اجرا میشه و عملیات مربوط به لاگین را انجام میده.
به این ترتیب نیازی نیست که کلاس کنترل کننده به نمونه ایی از کلاس موجود در لایه Presentation دسترسی داشته باشه.

fatemeh rahimi
یک شنبه 04 آذر 1386, 08:01 صبح
از راهنماییتون خیلی ممنون ،مشکل من حل شد. ولی هنوز این سوال برای من وجود داره که
ایا میشه از کلاس presentation obj گرفت یا نه؟در حالت کلی می پرسم.

fatemeh rahimi
یک شنبه 04 آذر 1386, 09:05 صبح
ببخشید یه سوال دیگه هم برام پیش اومده ،اینکه ایا تو کلاس کنترلی داخل متد authentication ،بعد از اینکه مقایسه انجام شد،فرم بعدی رو show کنم یا تو کلاس presentation بعد از اینکه متد authentication رو call کردم فرم بعدی رو show کنم؟

vcldeveloper
یک شنبه 04 آذر 1386, 23:42 عصر
ولی هنوز این سوال برای من وجود داره که
ایا میشه از کلاس presentation obj گرفت یا نه؟
بله میشه، اما این کار با اصول طراحی 3-لایه منافات داره.


ایا تو کلاس کنترلی داخل متد authentication ،بعد از اینکه مقایسه انجام شد،فرم بعدی رو show کنم یا تو کلاس presentation بعد از اینکه متد authentication رو call کردم فرم بعدی رو show کنم؟
کلاس کنترل کننده کاری به کلاس های موجود در لایه Presentation نداره، فقط درخواستی که ازش شده را انجام میده. برای مورد Authentication که ذکر کردید، کلاس کنترلی میتونه متدی را در اختیار سرویس گیرندگان خود قرار بده که در صورت انجام صحیح عملیات مقداری را به سرویس گیرنده برگرداند (مثلا ارسال True)، اگر هم عملیات با خطا مواجه شد، مقدار دیگری را برگرداند (مثلا False). کلاس Presentation بعد از فراخوانی متد مربوطه، مقدار برگشتی آن را چک می کند و بر اساس آن تصمیم می گیرد که آیا فرمی باید نمایش داده شود یا نه.

fatemeh rahimi
سه شنبه 06 آذر 1386, 09:55 صبح
از توضیحات خوبتان سپاسگذارم.