PDA

View Full Version : 5 دليل براي استفاده از يك ابزار ORM



mohsen_zelzela00
چهارشنبه 06 خرداد 1388, 11:13 صبح
با سلام
چند روز پیش در وبلاگ استاد نصیری بودم به یه مطلب خیلی جالبی برخوردم برای همین این مطلب رو اینجا میزارم که دوستان استفاده کنند

چرا بايد از ابزارهاي Object relational Mapper يا به اختصار ORM استفاده كرد؟ در اينجا سخن در مورد ORM خاصي نيست. هدف تبليغ يك محصول ويژه هم نمي‌باشد و يك بحث كلي مد نظر است.
كار ابزارهاي ORM خواندن ساختار ديتابيس شما بوده و سپس ايجاد كلاس‌هايي بر اساس اين ساختار ، برقراري ارتباط بين اشياء ايجاد شده و جداول، ويووها، رويه‌هاي ذخيره شده و غيره مي‌باشد. همچنين اين ابزارها امكان تعريف روابط one-to-one, one-to-many, many-to-one, و many-to-many بين اشياء را نيز بر اساس ساختار ديتابيس شما فراهم مي‌كنند.
در ادامه به فوايد استفاده از ORM ها خواهيم پرداخت:

الف) يك ابزار ORM زمان تحويل پروژه را كاهش مي‌دهد

اولين و مهم‌ترين دليلي كه بر اساس آن در يك پروژه، استفاده از ORM حائز اهميت مي‌شود، بحث بالا بردن سرعت برنامه نويسي و كاهش زمان تحويل پروژه به مشتري است. اين كاهش زمان بسته به نوع پروژه بين 20 تا 50 درصد مي‌تواند خود را بروز دهد.
بديهي است ابزارهاي ORM كار شگفت انگيزي را قرار نيست انجام دهند و شما مي‌توانيد تمام آن عمليات ‌را دستي هم به پايان رسانيد؛ اما اجازه دهيد يك مثال كوتاه را با هم مرور كنيم.
براي پياده سازي يك برنامه متداول با حدود 15 تا 20 جدول، حدودا به 30 شيء براي مدل سازي سيستم نياز خواهد بود و برنامه نويسي اين مجموعه بين 5000 تا 10000 سطر كد را به خود اختصاص خواهد داد. بديهي است برنامه نويسي و آزمايش اين سيستم چندين هفته يا ماه به طول خواهد انجاميد.
اما با استفاده از يك ORM ، عمده وقت شما به طراحي سيستم و ايجاد ارتباطات بين اشياء و ديتابيس در طي يك تا دو روز صرف خواهد شد. ايجاد كد بر اساس اين مجموعه و با كمك ابزارهاي ORM ، آني است و با چند كليك صورت مي‌گيرد.


ب) يك ابزار ORM كدي با طراحي بهتر را توليد مي‌كند

ممكن است شما بگوئيد كه كد نويسي من بي‌نظير است و از من بهتر كسي را نمي‌توانيد پيدا كنيد! به تمامي زواياي كار خود مسلطم و نيازي هم به اين‌گونه ابزارها ندارم!
عده‌اي از شما به طور قطع اين‌گونه‌ايد؛ اما نه همه. در يك تيم متوسط، همه نوع برنامه نويس با سطوح مختلفي را مي‌توانيد پيدا كنيد و تمامي ‌‌آن‌ها برنامه نويس‌ها و يا طراح‌هاي آنچنان قابلي هم نيستند. بنابراين امكان رسيدن به كدهايي كه مطابق اصول دقيق برنامه نويسي شيء گرا نيستند و در آن‌ها الگوهاي طراحي به خوبي رعايت نشده، بسيار محتمل است. همچنين در يك تيم زمانيكه از يك الگوي يكسان پيروي نمي‌شود، نتايج نهايي بسيار ناهماهنگ خواهند بود.
در مقابل استفاده از ORM هاي طراحي شده توسط برنامه نويس‌هاي قابل (senior (architect level) engineers) ، كدهايي را بر اساس الگوهاي استاندارد و پذيرفته شده‌ي شيء‌گرا توليد مي‌كنند و همواره يك روند كاري مشخص و هماهنگ را در يك مجموعه به ارمغان خواهند آورد.

ج) نيازي نيست تا حتما يك متخصص دات نت فريم ورك باشيد تا از يك ORM استفاده كنيد

قسمت دسترسي به داده‌ها يكي از اجزاي كليدي كارآيي برنامه شما است. اگر طراحي و پياده سازي آن ضعيف باشد، كل برنامه را زير سؤال خواهد برد. براي طراحي و پياده سازي دستي اين قسمت از كار بايد به قسمت‌هاي بسياري از مجموعه‌ي دات نت فريم ورك مسلط بود. اما هنگام استفاده از يك ORM مهمترين موردي را كه بايد به آن تمركز نمائيد بحث طراحي منطقي كار است و ايجاد روابط بين اشياء و ديتابيس و امثال آن. مابقي موارد توسط ORM انجام خواهد شد و همچنين مي‌توان مطمئن بود كه پياده سازي خودكار انجام شده اين قسمت‌ها، بر اساس الگوهاي طراحي شيء‌گرا است.


د) هنگام استفاده از يك ابزار ORM ، مدت زمان آزمايش برنامه نيز كاهش مي‌يابد

بديهي است اگر قسمت دسترسي به داده‌ها را خودتان طراحي و پياده سازي كرده باشيد، زمان قابل توجهي را نيز بايد به بررسي و آزمايش صحت عملكرد آن بپردازيد و الزامي هم ندارد كه اين پياده سازي مطابق بهترين تجربيات كاري موجود بوده باشد. اما هنگام استفاده از كدهاي توليد شده توسط يك ابزار ORM مي‌توان مطمئن بود كه كدهاي توليدي آن كه بر اساس يك سري الگوي ويژه توليد مي‌شوند، كاملا آزمايش شده هستند و همچنين صدها و يا هزارها نفر در دنيا هم اكنون دارند از اين پايه در پروژه‌هاي موفق خود استفاده مي‌كنند و همچنين بازخوردهاي خود را نيز به تيم برنامه نويسي آن ابزار ORM ارائه مي‌دهند و اين مجموعه مرتبا در حال بهبود و به روز شدن است.

ه) استفاده از يك ابزار ORM ، كار برنامه نويسي شما را ساده‌تر مي‌كند

توضيح اين قسمت نياز به ذكر يك مثال دارد. لطفا به مثال زير دقت بفرمائيد:








try {
Employees objInfo = new Employees();
EmployeesFactory objFactory = new EmployeesFactory();
objInfo.EmployeeID = EmployeeID;
objFactory.Load(objInfo);
// code here to use the "objInfo" object }
catch(Exception ex) {
// code here to handle the exception
}
try { Employees objInfo = new Employees();
EmployeesFactory objFactory = new EmployeesFactory();
objInfo.EmployeeID = EmployeeID;
objFactory.Load(objInfo); // code here to use the "objInfo" object}catch(Exception ex) { // code here to handle the exception}



به نظر شما كار كردن با يك يا چند شيء توليد شده كه نمايانگر ساختار ديتابيس شما هستند و با استفاده از اينترفيس عمومي آن‌ها مي‌توان تمامي اعمال بارگذاري، درج و حذف و غيره را انجام داد، ساده‌تر است يا كار كردن با كوهي از دستورات ADO.Net ؟


(کلیه حقوق این مقاله برای استاد نصیری محفوظ است)

mohsen_zelzela00
پنج شنبه 07 خرداد 1388, 13:29 عصر
اگه دوستان موارد دیگری دارند ممنون میشم اینجا اضافه کنند

NewFoxStudent
سه شنبه 19 خرداد 1388, 16:41 عصر
آقا من با این Object Relation Mapper ها اصلا آشنا نبودم ، اصلا اسمشون رو نشنیده بودم
میشه یه توضیحی ، لینکی ، سایتی ، نرم افزاری ، چیزی به ما معرفی کنید
قربان شما

mohsen_zelzela00
چهارشنبه 20 خرداد 1388, 17:22 عصر
nhibernate چیست (http://barnamenevis.org/forum/showthread.php?t=160728)

aynehband
پنج شنبه 15 مرداد 1388, 00:13 صبح
میشه آدرس وبلاگ نویسنده رو هم بدی؟
ممنون

علیرضا مداح
پنج شنبه 15 مرداد 1388, 11:07 صبح
سلام دوست عزیز؛
آدرس وبلاگ استاد وحید نصیری:
http://vahidnasiri.blogspot.com/


میشه یه توضیحی ، لینکی ، سایتی ، نرم افزاری ، چیزی به ما معرفی کنید

بر روی LINQ-To-SQL و Entity Framework مطالعه نمایید،/