PDA

View Full Version : سوال در مورد خطایابی در لایه ها یا درون پیج



Payman62
یک شنبه 02 بهمن 1390, 12:35 عصر
سلام.
میدونید که در برنامه نویسی 3 لایه، لایه BLL وظیفه اعتبار سنجی داده ها رو داره. اگر ایرادی و کم و کاستی باشه به کاربر اطلاع میده.

در ویندوز اپلیکیشن همه بررسی ها در BLL انجام میشه و مشکلی هم نیست.
اما در وب قضیه فرق میکنه. Validator ها هستند که قبل از ارسال اطلاعات به BLL خیلی از ایرادها رو چک میکنن و به کاربر اطلاع میدن و اطلاعات سالم تری به BLL ارسال میشه.

هنگامی که این ایرادها کلاینت ساید چک میشن مثل زمان استفاده از RequiredFieldValidator منطقی هست که از ولیدیتور استفاده کنیم. چون به هر حال سرعت و سبک بودن سایت همیشه الویت داره.

اما هنگامی که از CustomValidator استفاده میکنیم خیلی از ایرادها رو سرور ساید و در ایونت ServerValidate چک میکنیم.

حالا سوالم اینه که بهتر نیست این قبیل ایرادها به جای بررسی در ServerValidate در لایه BLL چک بشه تا همه ایرادها یک جا متمرکز بشه و یه جا چک بشه.
به هر حال اطلاعات به سرور ارسال شده و این روش تاثیری در افزایش و کاهش سرعت نداره.

hamid_shrk
دوشنبه 03 بهمن 1390, 08:36 صبح
ببینید دوست من همهی اینها بستگی به سبک کد نویسی شما داره ، خیلی تو لایه BLL فقط میان موارد دیتا بیسی رو چک میکنن و اون رو واسط DAL و BOL قرار میدن و این قبیل اتفاقاتی که گفتید رو تو کد همون صفحه چک میکنن.اما شما میتونید کاری که میگید رو بکنید و فکر میکنم ساختار برنامتون بهتر بشه.

* joodi *
دوشنبه 03 بهمن 1390, 08:59 صبح
سلام
اين سوال شما سوال من هم هست در واقع!!
من از لايه BLL فقط براي چك تكراري نبودن ديتا تا بحال استفاده كردم و مواردي مثل validator هارو داخل اينترفيس چك ميكنم آيا اين در ساختار برنامه نويسي 3 لايه ايرادي پيش مياره؟ميشه يك نمونه از كدي كه در لايه BLL اين كارو انجام داديد بزاريد؟!
و سوال ديگه اين كه چرا وقتي ميتونم تنها با يكبار برقراري ارتباط با بانك هم تكراري بودن ديتا رو چك كنيم و هم مقادير رو اينزرت كنيم بايد دوبار يعني يكبار در لايه BLL و يكبار در DAL اين كارو انجام بديم؟ :خجالت:
ممنون

Payman62
دوشنبه 03 بهمن 1390, 13:34 عصر
سلام.


ببینید دوست من همهی اینها بستگی به سبک کد نویسی شما داره ، خیلی تو لایه BLL فقط میان موارد دیتا بیسی رو چک میکنن و اون رو واسط DAL و BOL قرار میدن و این قبیل اتفاقاتی که گفتید رو تو کد همون صفحه چک میکنن.اما شما میتونید کاری که میگید رو بکنید و فکر میکنم ساختار برنامتون بهتر بشه.

من میخوام بدونم کدوم روش اصولی هست تا به اون صورت عمل کنم.
من خودم موارد دیتابیسی رو در bll چک میکنم. چون این لایه برای ارتباط با دیتابیس هست.

میخوام بدونم آیا اصولی هست مثلا در ایونت ServerValidate یه CustomValidator بیایم و یه مورد دیتابیسی رو چک کنیم و اگه برقرار نبود IsValid رو فالس کنیم؟



سوال ديگه اين كه چرا وقتي ميتونم تنها با يكبار برقراري ارتباط با بانك هم تكراري بودن ديتا رو چك كنيم و هم مقادير رو اينزرت كنيم بايد دوبار يعني يكبار در لايه BLL و يكبار در DAL اين كارو انجام بديم؟ :خجالت:
ممنون

شما در لایه BLL اعتبار داده ها رو بررسی میکنید و در لایه DAL اعمال تغییرات به دیتابیس رو انجام میدید.
با این کار مدیریت خطاها و بررسی مشکلات موجود یک جا متمرکز میشه و مدیریت و رسیدگی بهشون ساده تر میشه و خوانایی و استحکام کدتون بالاتر میره.