PDA

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



ashkan209
شنبه 22 خرداد 1389, 23:54 عصر
دوستان سلام
قصد داریم بهترین و مناسبترین تکنیکهای برنامه نویسی دیتابیس با 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, 23:07 عصر
با سلام

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

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

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

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

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

pooshiran
چهارشنبه 14 اسفند 1392, 15:27 عصر
به نظر دوستان برای توسعه نرم افزاری با فرضیات فوق کدام روش ارتباط با دیتابیس بهتره ado.net یا linq یا ef

linux
پنج شنبه 15 اسفند 1392, 22:04 عصر
دوستان سلام
قصد داریم بهترین و مناسبترین تکنیکهای برنامه نویسی دیتابیس با 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 کنیم و آنگاه کانکشن را ببندیم و ... و با این نوع کد نویسی تراکنشهای نرم افزار در محیط شبکه را بالا ببریم و افت سرعت محسوس را شاهد باشیم ؟ اگر جوابتان به این سوال منفی است ، شما بگوئید چگونه اینگونه کدنویسی را پیاده سازی کنیم
با احترام

مهم نیست که win app هست یا web app با این شرط که تحت شبکه هست و تعداد کاربرها برنامه شما زیاد هست بهتر هست که برنامه شما دو قسمت باشه.
یک قسمت سرور، یک قسمت کلاینت. قسمت سرور منظور محل ذخیره دیتانیست قسمت سرور باید یک وب سرویس باشه که از یک طرف با دیتابیس ارتباط داره و از طرف دیگر با کلاینتها
فرض که شما دات نت استفاده می کنید. برای این قسمت از wcf استفاده کنید برای درست کردن وب سرویس‌ها. حالا برای همه ۱۰۰ فرم و ۴ عملیات اصلی شما باید وب سرویس ایجاد کنید. برای این وب سرویس ها و اتصالش به دیتابیس من پیشنهادم EF هست. سرعت توسعه نرم‌افزار به نظر من خیلی مهم هست. ولی کندی سرعت EF به Ado.net کاملا قابل چشم پوشی هست.
در سمت کلاینت شما اصلا با دیتابیس ارتباط مستقیمی ندارید از طریق وب سرویسها کارتون را انجام می دهید. دوست داشتید پیغام خصوصی بذارید تا بیشتر توضیح بدم.

mollyAreco
سه شنبه 20 اسفند 1392, 17:19 عصر
با سلام
اگه میشه بیشتر توضیح بدید که چگونه می شه با وب سرویس در کلاینتها ارتباط داشت و لی سرعت نرم افزار کم نشه و برای کاربر ملموس نشه که برنامه کنده؟