PDA

View Full Version : طراحی فریم ورک برای کار با دیتابیس sql



.مهدی فهمیده غلامی.
شنبه 19 فروردین 1385, 22:48 عصر
سلام خدمت دوستان
من قصد دارم یه کلاس طراحی تا هر وقت کار با پایگاه داده داشتم وخواستم عملی روی پایگاه داده انجام بدم یه نسخه از این کلاس ایجاد کنم و متد مربوطه را با پارامترهای مناسب فراخوانی کنم.به این ترتیب سایر کد های فرم های برنامه را از عملیات کار با دیتابیس ایزوله کنم.
این به بهترین شکل چطوری انجام میشه؟
با تشکر.

m_rashidi
یک شنبه 20 فروردین 1385, 10:58 صبح
آقا مهدی و سایر دوستان
سلام وخسته نباشید خیلی شرمنده ام ولی اگه منظورتون رو درست فهمیده باشم شما یک مثال اماده میخواهید.باید بگم که متاسفانه یا خوشبختانه اینجا مثال آماده کم ارائه میشه شما باد کدتون رو بنویسید واشکالتون رو بپرسید اینجوری خودتون هم بهتر یاد میگیرید.

.مهدی فهمیده غلامی.
یک شنبه 20 فروردین 1385, 21:57 عصر
با تشکر
خدمتون عرض کنم سوال من در مورد نحوه کار با متد ها نیست .من یه مدل یا کلاس دیاگرام میخوام که عملیات کار با دیتا بیس رو از فرم ها ایزوله کنه.

Mehrafrooz
یک شنبه 20 فروردین 1385, 22:30 عصر
ببینید این بدرتون میخوره :
http://www.barnamenevis.org/forum/showthread.php?t=38062

keramatiabi
سه شنبه 22 فروردین 1385, 13:11 عصر
Microsoft Application Blocks for .NET

M.GhanaatPisheh
سه شنبه 22 فروردین 1385, 13:30 عصر
بیا با یه سوال شروع کنیم.
تو می خوای یه چارچوب جدید بسازی که از امکانات موجودکه چارچوب خاص خودش رو داره ، توی چار چوبت استفاده کنی.
احتمالا به کاهش هزینه فکر می کنی.

حالا سوال اینه که چه توقعی از Framework ت داری؟ یا اینکه چه سودی داره پیاده سازی این سناریو؟

dot_net_lover2
سه شنبه 22 فروردین 1385, 22:04 عصر
به نظر من بهتره Framework صداش نکنی.
مجتبی جان تا اونجا که من فهمیدم این دوستمون قصد داره یک کلاس طراحی کنه تا واسه کار با DB نیاز به کد زدن اضافی نداشته باشه.که کاره منطقی هست و همینطور یکی از کاربردهای کلاس هم این است.

mohandese_hiclass
چهارشنبه 23 فروردین 1385, 23:25 عصر
با عرض سلام حضور دوستان
دوست عزیز شما می توانید برای حل مشکل خود این کارو بکنید که ابتدا یک data form wizard از طریق add new item اضافه کنید سپس مراحل را مرحله به مرحله برید در انتهای کار کد دیتا بیس را خود دات نت ایجاد می کند که میشه گفت کد های استانداردی هم هستند سپس به سادگی می تونید این کدها را به کلاس تبدیل کنید و از این به بعد کار شما دیگر راحت می شود و فقط کافیست که شما 1-دیتا بیس خود را ست کنید و اگه به برنامه نویسی 3-tier هم آشنایی داشته باشید به راحتی و فقط با تغییر دو یا سه سطر کد به راحتی از کدهای قبلی استفاده کنید البته اینم بگم که من ین کار را کردهام و تمام کدهای خود را به راحتی و با تغییر چند سطر کد انجام می دهم فقط کد های من ساختیافته هستند و هنوز فرصت پیدا نکردم شی گرا کنم البته با این روشی که من گفتم زیاد فرق نمیکند اگه توضیحات من مفید بود به من mail بزنید تا اگه بتونم راهنماییتون بکنم

.مهدی فهمیده غلامی.
پنج شنبه 24 فروردین 1385, 14:22 عصر
با تشکر از پاسخ دوستان
به نظرم تعریف فریم ورک این باشه که یه مجموعه کلاس که به تنهایی شاید کاربرد نداشته باشه
در واقع یه برنامه بالقوه است.مگه اینکه توی برنامه ای ازش استفاده بشه.
اگه این تعریف اشتباه است اصلاح کنید.

فکر نمی کنم به صرف اینکه ما تمام کار با دیتا بیس توی یه فایلcs قرار بدیم بشه گفت object oriented کار کردیم.

در ضمن اگه میشه کد نمونه ای ارایه کنید.

mohandese_hiclass
پنج شنبه 24 فروردین 1385, 14:52 عصر
درسته دوست عزیز حق با شماست نمی شه گفت OBJECT ORIENTED واسه اینکه شما حتما از حرف من این طوری بر داشت کردید که من میخوام فقط یه کلاس بنویسم و بس ولی منظور من این نبود این جوری اگه بنویسید میشه OBJECT BASE ولی منظور من این بود که تمام اصول شی گرایی رعایت بشه باز اگه بخواید من چارچوبشو نه کدشو واسه شما بعد کنکور به صورت کاملا OBJECT ORIENTED طراحی می کنم این هم که می گم نه کدشو واسه خودتونه چون اگه منتظر باشید که یکی کد بنویسه و شما استفاده کنید همیشه یه پله عقب مییفتید دوست عزیز امیدوارم از حرفام ناراحت نشی (این حرفا فقط یه گپ دوستانست)

.مهدی فهمیده غلامی.
جمعه 25 فروردین 1385, 20:39 عصر
با تشکر از پاسخ های دوستان
من بیشتر میخوام بدونم چطوری میشه این کار رو به بهترین شکل انجام داد.
و ایده سایر دوستان رو می خوام .
شخصا ایده خودم شبیه فرمایش شماست.
منتها میخوام بدونم روش بهتری وجود داره؟

M.GhanaatPisheh
شنبه 26 فروردین 1385, 08:55 صبح
با تشکر از پاسخ دوستان
به نظرم تعریف فریم ورک این باشه که یه مجموعه کلاس که به تنهایی شاید کاربرد نداشته باشه
در واقع یه برنامه بالقوه است.مگه اینکه توی برنامه ای ازش استفاده بشه.
اگه این تعریف اشتباه است اصلاح کنید.

فکر نمی کنم به صرف اینکه ما تمام کار با دیتا بیس توی یه فایلcs قرار بدیم بشه گفت object oriented کار کردیم.

در ضمن اگه میشه کد نمونه ای ارایه کنید.



هنوز جواب منو ندادی!!
می خوای این Framework چه مشکلی رو حل کنه؟ باید چکار کنه؟

.مهدی فهمیده غلامی.
دوشنبه 18 اردیبهشت 1385, 13:16 عصر
چیزی که من میخوام اینه که:
من میگم عملیات درج ,حذف و جستجو در همه جداول و حتی پایگاه داده های مختلف و حتی در برنامه های کاربردی مختلف یکی هست.خود عمل منظورمه.
چطوری میشه یک کلاس برای این عملیات درست کنیم که این متد ها رو داشته باشه و هم جامع باشه و هم ساده و هم قابل استفاده مجدد در پروژه های دیگه , من می دونم که شرکت های بزرگ این کار رو انجام می دم و منم می خوام این ایده رو در پروژه خودم پیاده کنم.
ممنون میشم اگه کسی راهنمایی کنه.

.مهدی فهمیده غلامی.
چهارشنبه 20 اردیبهشت 1385, 10:27 صبح
کسی در این مورد کار نکرده؟

reza_rad
چهارشنبه 20 اردیبهشت 1385, 10:32 صبح
چیزی که من میخوام اینه که:
من میگم عملیات درج ,حذف و جستجو در همه جداول و حتی پایگاه داده های مختلف و حتی در برنامه های کاربردی مختلف یکی هست.خود عمل منظورمه.
چطوری میشه یک کلاس برای این عملیات درست کنیم که این متد ها رو داشته باشه و هم جامع باشه و هم ساده و هم قابل استفاده مجدد در پروژه های دیگه , من می دونم که شرکت های بزرگ این کار رو انجام می دم و منم می خوام این ایده رو در پروژه خودم پیاده کنم.
ممنون میشم اگه کسی راهنمایی کنه.


فکر کنم شما می خواهی یک query builder بسازی از نوع کنترل که توی هر پروژه ای بتونی ازش استفاده کنی.

خوب چرا نمیشه.
منتها مشکلت کجاست؟

M.GhanaatPisheh
چهارشنبه 20 اردیبهشت 1385, 12:16 عصر
لینک زیر رو ببین.
تمام کاری رو که می خوای به یه سبک خاص پیاده سازی کرده.
برای کار با DB از یه سری API ساده استفاده می کنه :

http://www.nhibernate.org/

.مهدی فهمیده غلامی.
چهارشنبه 20 اردیبهشت 1385, 13:36 عصر
ممنونم از همه
راستش من از لینکی که داده بودید چیزی سر در نیاوردم!!!

M.GhanaatPisheh
چهارشنبه 20 اردیبهشت 1385, 14:05 عصر
http://www.barnamenevis.org/forum/showthread.php?t=16721

.مهدی فهمیده غلامی.
جمعه 22 اردیبهشت 1385, 12:57 عصر
آقای قناعت پیشه
لینکی رو که گذاشته بودید مطالعه کردم و ممنونم از لطف حضرتعالی
ولی من از طرحش خوشم نیومد چون من می خوام کدی رو خودم بنویسم
و از داخلش سر دربیارم و دست خودم باشه نمی تونم روی این تکنیکی که
به آشنا نیستم و هنوز نوپا هم هست و هزینه داره برای یادگیری وقت بذارم
و نمی خوام api NHibernate برام اینکار رو بکنه.
چطوری می تونم همین تکنیک رو
---که شامل یک کلاس و یک جدول رو که با یه سند xml به مرتبط میشن--
داشته باشم ولی کد عملیات درج و حذف و ... رو خودم بنویسم و نیز
از امکان داشتن هر نوع ارتباط با RDBMS های مختلف رو داشته باشه؟

dot_net_lover2
شنبه 23 اردیبهشت 1385, 21:49 عصر
چطوری می تونم همین تکنیک رو
---که شامل یک کلاس و یک جدول رو که با یه سند xml به مرتبط میشن--
داشته باشم ولی کد عملیات درج و حذف و ... رو خودم بنویسم و نیز
از امکان داشتن هر نوع ارتباط با RDBMS های مختلف رو داشته باشه؟


دوست عزیز در برنامه نویسی ممکن است یک کار بخصوص را N تا برنامه نویس به N روش مختلف انجام دهند٬ روش پیاده سازی یک تکنیک یا یک Frame Work یا هر جیزه دیگری بستگی به نیاز و دانش هر برنامه نویسی داره.

M.GhanaatPisheh
شنبه 23 اردیبهشت 1385, 22:52 عصر
من از طرحش خوشم نیومد
راه حل فوق یکی از الگوهای جدید طراحیه که سال گذشته مارتین فاولر معرفی کرد.


چطوری می تونم همین تکنیک رو
---که شامل یک کلاس و یک جدول رو که با یه سند xml به مرتبط میشن--
داشته باشم ولی کد عملیات درج و حذف و ... رو خودم بنویسم

شما ناگزیرید لایه های پایینتر رو برای نیل به مقصود پیاده سازی کنید
احتمالا چارچوب مورد نظر شما خارج از الگوی فوق عملا کمک خاصی به کاربر نخواهد کرد ، مگر اینکه تصمیم داشته باشی الگوی جدیدی معرفی کنی که با توجه به در خواستی که در کادر نقل قول موجوده بعید به نظر می رسه.
سعی نکنید دوباره چیزی رو اختراع کنید.
پیاده سازی چند تا کلاس با چند تا رابطه که ذخیره و باز یابی و سایر عملیات های مربوطه رو به یه مدل دیگه ولی بدون تفاوت در کارایی مدل سازی کنه عملا ارزشی نداره.

Behrooz_CS
یک شنبه 24 اردیبهشت 1385, 18:28 عصر
دوست عزیز کاری که من کردم اینه

برای عملیات داده ای بر روی یک جدول من دو فرم پایه طراحی کردم که دکمه های درج و حذف و ویرایش را روی خوش داره و در ضمن توابع پیش فرض برای این عملیات نیز در کلاس پدر پیاده شده و من فقط اونا رو صدا می زنم
باورت نمی شه من برای فرم اول که وظیفه نمایش داده ها را داره در فرم وارث فقط پنج خط
کد می نویسم و تمام عملیات به صورت خود کار انجام می شه

فرم دوم برای درج و ویرایش و اعتبار سنجی داده هاست که اون هم بستگی به کاری که لازمه
بین ده تا سی خط کد لازم داره

نهایتا من در عرض بیست دقیقه و حتی کمتر از پانزده دقیقه این کار را انجام می دهم و واقعا کارم راحت شده

چون تمام کدهای تکراری در فرم های پدر نوشته شده

پیشنهاد می کنم شما هم این کار را بکنی چون واقعا جواب می ده

:لبخند: :لبخند:

Ghalandari
دوشنبه 25 اردیبهشت 1385, 05:57 صبح
روش Behrooz_CS رو من دارم استفاده می کنم و جواب هم میده