PDA

View Full Version : حرفه ای: مشکل در لایه بندی (Three Layer Architecture)



vb8334
جمعه 15 آذر 1392, 21:45 عصر
با سلام

دوستان من یک پروژه ای نوشتم برای کار با فایل ها در حال حاضر من دو تا کلاس ایجاد کردم
توی لایه ی DataAccess که یکیش به نام FileSpliter و دیگری به نام FileSearcher

وظیفه ی FileSpliter :کارش دریافت یه فایل حجیم (گیگابایتی) از نوع متنی (txt,....) و تبدیل کردن اون
به فایل های کوچکتر برای جستجو کردن توی فایل این روش مناسب است چون نمیشه فایل گیگاباتی رو توش
جستجو کرد به دلیل کند شدن و وقتی فایل تک تکه میشه مثلآ این فایل گیگاباتی به هزاران فایل 800 کیلوبایتی تبدیل میشه که دیگه جستجو کردن توش راحته و سریع


وظیفه ی FileSearcher :این رو بگم که یک ورودی از نوع int میگیره و آدرس فایل بر میگردونه

کارش اینطوریه که یه متیغر به نام seed داریم که شروع فایل متنی رو میدونه (مثلآ 1000) چنده و ثابت هستش و یه متغیر داریم به نام pagesize که اندازه هر صفحه رو مشخص میکنه که هر صفحه توش چند تا
خط باشه (یا همون رکورد) و ما انتهای فایل رو هم میدونیم (مثلآ 50001000)
حالا این ورودی که گرفته میشه توی FileSearcher میاد یه id هستش که نشان دهنده id یک شخص هست
توی فایل یعنی این id برای یک رکورد هست


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

نکته :این Id در فرم OrderViewForm به شکل یک تکست باکس وارد میشه یعنی من می خوام یک رکورد رو
باتوجه به id پیدا کنم که به این id برای پیدا کردن فایل اون رکورد نیاز دارم

مرسی

vb8334
شنبه 16 آذر 1392, 17:07 عصر
کسی نیست کمکی کنه؟

plus
شنبه 16 آذر 1392, 18:23 عصر
خوب برای جستجو شما مگه در Business Layer تون یک متد ندارین که در UI اون متد رو فراخوانی کنید؟ در این صورت، Id از UI به متد BL و از BL به متد مربوط به کلاس FileSearcher در DAL میره و در نهایت نتیجه از طریق BL به UI برمیگرده.

vb8334
شنبه 16 آذر 1392, 19:38 عصر
بله من این روش رو انجام دادم قبلآ ولی گفتم شاید روش بهتری از این هم باشه.

من یه متد نوشتم که اسمش SendToId هستش که همین کاری که میگید رو انجام میده .


ممنون

علی متقی پور
شنبه 16 آذر 1392, 21:00 عصر
با سلام

قاعدتا شما باید در لایه بیزینستون شی ای داشته باشید که این آی دی جزء پراپرتی هاش باشه. این شی را در PL بسازید و به بیزینس پاس بدید. برحسب سناریو هم این شی را به DAL برسونید. مثلا میتونید در لایه DAL یک اینتفریس داشته باشید که در لایه بیزینس پیاده سازی شده و سپس نمونه کلاستون در بیزینس رو بعنوان ورودی یک متد از جنس اون اینترفیس به لایه DAL بدید

vb8334
شنبه 16 آذر 1392, 23:03 عصر
میشه یک مثال از این روشی که میگید بزنید

ممنون

علی متقی پور
یک شنبه 17 آذر 1392, 00:31 صبح
فرض کن تو لایه بیزینست یه کلاس داشته باشی بنام Person
حالا فرض کن تو DAL هم یه اینترفیس داشته باشی بنام IPerson
کلاس پرسن این اینترفیس رو پیاده میکنه. پس دیگه از این به بعد همنوع اونه
حالا ورودی متد insert دیگه لازم نیست Person باشه بلکه IPerson هست
ولی شما تو بیزینستون همون پرسن رو بجای اینترفیس پرسن میدید به متد اینزرت و اون هم قبول میکنه
دست به کد شی خودت کامل میفهمی چی به چیه

kds4you
یک شنبه 17 آذر 1392, 03:03 صبح
متشکریییییممممممممم

علی متقی پور
یک شنبه 17 آذر 1392, 10:32 صبح
متشکریییییممممممممم

اگر با بنده بودید ==> خواهش میکنم