PDA

View Full Version : مناسبترین روش کد نویسی دیتابیس پروگرامینگ کدامست



ashkan209
شنبه 22 خرداد 1389, 23:24 عصر
دوستان سلام
قصد داریم بهترین و مناسبترین تکنیکهای برنامه نویسی دیتابیس با Ado.Net را بررسی کنیم ، و میخواهیم بدانیم چگونه کد نویسی های مربوط به کاربرد Ado.net را انجام دهیم که یک برنامه استاندارد مهندسی سده و با سرعت مناسب ارائه نمائیم .
به همین خاطر چند تا فرض اولیه را مطرح میکنیم ، تا چهار چوب این طراحی ملموستر شود
فرض اول: فرض کنید شما مسئول طراحی یک پروژه Win Application هستید و فرض کنید که این پروژه نیمه سنگین حدود 100 فرم را داراست که تک تک این فرمها با دیتابیس نرم افزار ارسال و دریافت اطلاعات می کنند.
فرض دوم: ضمنا نرم افزار بر روی شبکه نصب و ران شود و روزانه تعداد زیادی کاربر (مثلا 100 نفر) از آن استفاده کرده و Data Entry و یا ویرایش و یا گزارشگیری نمایند .
فرض سوم: و فرض می کنیم که پلاتفرم شبکه (سرور - سوئیچ و کابلها و ...) در وضعیت ایده ال کار می کنند.
فرض چهارم: این تاپیک در قسمت Ado ایجاد شد تا این موضوع را مستقل از اینکه زبان برنامه نویسی شما چیست ، بررسی کنیم ، تا چنانچه نمونه کدی ارائه کردید ف به همان زبان مورد نظر خودتان باشد (البته حتما با یکی از زبانهای Visual Studio.net)
فرض پنجم: اصلا قصد مقایسه انواع دیتابیسها در تناسبشان با این نرم افزار را نداریم (Access یا Sqlserver یا Oracle) اما شما در مورد استفاده کد نویسی مختص این دیتابیسها (مثلا استفاده از Store Proceduer در Sqlserver) و عملکرد مناسبتر نرم افزار صحبت کنید .
در تک تک فرمهای برنامه مذکور، کلیدهای متفاوتی موجود خواهد بود که همه آنها می خواهند با دیتابیس ارتباط گرفته و عملیات محوله (Insert - Update - Delete - Select) را انجام دهند . به نظر شما نحوه نوشتن کدهای Dataset ، DataAdaptor ، Reader ، Execute ها و Connection ها , و محلهای ایجاد آنها و کانکت شدنهای فراوان در این برنامه را با توجه به مسائل فوق چگونه باید انجام داد .
آیا صحیح است که برای تک تک کلید ها ، هر بار دیتاست ایجاد کرد و کانکشن باز کنیم و دیتا آداپتور ها را Fill کنیم و آنگاه کانکشن را ببندیم و ... و با این نوع کد نویسی تراکنشهای نرم افزار در محیط شبکه را بالا ببریم و افت سرعت محسوس را شاهد باشیم ؟ اگر جوابتان به این سوال منفی است ، شما بگوئید چگونه اینگونه کدنویسی را پیاده سازی کنیم
با احترام

sd.CSharpProgrammer
چهارشنبه 26 خرداد 1389, 22:37 عصر
با سلام

قبل از هر اظهار نظری باید بگم که هر چیزی اینجا مینویسم نظر شخصی بنده است که البته از رو تجربیات شخصی (هر چند انک) بوده و شاید تعدادی از اساتید مخالف این موارد باشند.

یکی از مواردی که بین دوستان برنامه نویس زیاد دیدم این هست که برنامه رو اصولی به دیتابیس bind نمیکنن. به عنوان مثال خیلی جاها دیده شده که یک دیتاگریدویو روی فرم گذاشته شده و بجای اینکه به دیتاست بایند بشه , تک تک رکوردها با یک حلقه بصورت دستی بهش اضافه شدند. این موضوع وقتی که تعداد رکوردها زیاد نباشند زیاد ملموس نیست ولی اگه رکوردها زیاد باشند , این روش برنامه رو بسیار کند میکنه , مخصوصاً در حالت شبکه!!

مورد بعدی هم اینه که فکر میکنم استفاده از کلاسهای ado.net (بطور خالص) در روند اجرا و سرعت برنامه بهتر باشه تا اینکه با کلاسهای کانکشن , کامند و ... یک یا چند کوئری رو به دیتابیس بفرستیم و نتیجه رو بگیریم.

باز هم میگم اینها همه نظرات شخصی بنده است.
با تشکر

naser2009
پنج شنبه 27 خرداد 1389, 17:15 عصر
سلام دوسته من
بحث خوبی را شروع کرده اید
به نظر من اگر از کلاس های داده توکار دات نت استفاده کنید مناسب میباشد و باید این رو هم در نظر گرفت که کلاس ها واسه محصولات مایکروسافتی مثل Sql server بهینه سازی شده اند نه محصولاتی مثل oracle
اگه بخواهیم پروژه رو خیلی بزرگ تر کنیم باید کلا پلت فرم عوض شه و با java EE و Oracle کار بشه دیگه محصولات مایکروسافتی جواب نمیده (مثل برنامه مورد در اکثر بانک های کشور)
در هر حال پروژه ای که شما مطرح کردید در سطح متوسطه و همون زبان های .NET و Sql جواب میده
اما در بحث شبکه و زیاد بودن کاربران باید مباحثی همچون transaction ها ، DRP (Disater recovery plan) و data integrity رو مد نظر داشت. تا مشکلی واسه برنامه پیش نیاد.