تاریخچه:
بعد از کمی دقت توی زمان هایی که برای برنامه نویسی پروژهام صرف می کردم متوجه شدم که بخش زیادی از این زمان ها صرف انجام کارهای روتین و تکراری (مثل تعریف stored procedure ها در دیتابیس و سپس تعریف کردن کدهای مربوط به صدا کردن این stored procedure در کدها و ...) صرف می شه. یه مدت دنبال یه نرم افزار که به صورت Wizard مانند بتنونه این کارها رو برام انجام بده گشتم، اما اون چیزی رو که می خواستم پیدا نکردم. چون من از مدل 3 لایه ای برای اکثر پروژه هام استفاده می کنم. این مدل جزو رایج ترین مدل های کد نویسی در بین برنامه نویسان ایرانی هم هست. برای همین خودم شروع کردن به طراحی و توسعه یه نرم افزار که بتونه این کار را انجام بده. هدفم این بود که من ( و کلا ما برنامه نویس ها) تمرکز اصلیمون رو بذاریم روی طراحی الگوریتم های تجاری و پیچیده که فقط از عهده یه موجود هوشمند برمیاد و سایر کارهای روتین و پیاده سازی این الگوریتم ها توسط یه نرم افزار انجام بشه. امید اون روزی رو دارم که فقط به نرم افزار که اینکارو انجام می ده بگی که چی چیزی از برنامت انتظار داره و اون بتونه بقیه کارها و کد نویسی را انجام بده! (می دونم زیادی ایده آل گرایانه هست، اما نشدنی نیست، چند نفری هم در این زمینه قدم های خیلی خوبی رو برداشتن، شاید تا سال 2030 همچین چیزی بشه!)
در طراحی این نرم افزار (که با اسم DB_Scripter شناخته می شه) سعی کردم که تجربیات چندین سالم در توسعه نرم افزارهای تحت وب و همچنین نرم افزارهای دسکتاپ رو بگنجانم.
تا اینجا هم نتیجه خیلی خوبی هنگام استفاده از این نرم افزار گرفتم. این نرم افزار تونست توی یکی از پروژه هام بیش از 70% کد نویسی ها رو انجام بده و به طور باورنکردنی باعث ذخیره وقت و سرعت بالای تحویل پروژه بشه. و این دقیقا یعنی درآمد و پول چندین برابر!
البته میزان کارآمد بودن DB_Scripter وابسته به نوع پروژه که داره کد نویسی می شه داره. در پروژهایی که بیشتر زمان پروژه صرف طراحی الگوریتم ها می شه، DB_Scripter کمترین بازده خود و در پروژه هایی که زمان اعظم پروژه صرف کارهای روتین می شه (مثل نرم افزارهایی که تعداد وسیعی تابع جهت ذخیره و بازیابی اطلاعات دارن) حداکثر بازده خود را دارد.
به طور خلاصه استفاده از DB_Scripter باعث صرفه جویی بین 10% تا 80% در طراحی و توسعه و کد نویسی یک پروژه می شود.
روش استفاده از DB_Scripter به این صورت هست که ما ساختار دیتابیس را طراحی می کنیم (فقط جداول و رابطه بین آنها رو) و DB_Scripter بر اساس این ساختار stored procedure های Select و Update و Insert و Delete رو ایجام می کنه. همینظور کدهای C# مربوط به صدا کردن این stored procedure ها رو هم ایجاد می کنه. در نسخه جدید DB_Scripter علاوه بر این کارها، HTML صفحات و کدهای مربوط به ارتباط فرم های HTLM به دیتابیس را هم ایجاد می کنه.
ممکنه که یاد گرفتن استفاده از برنامه یک روز طول بکشه (که فکر می کنم کسی که یه مدل کد نویسی 3 لایه ای آشنا باشه نیم ساعت هم طول نخواهد کشید که کاملا روی این نرم افزار مسلط بشه) اما در مقابل زمانی که صرفه جویی خواهد شد و اینکه زمان صرف شده جهت مسلط شدن در مدت زمان بسیار کمی بازخواهد گشت، استفاده از این نرم افزار رو به یه سرمایه گذاری خیلی خیلی خوب تبدیل کرده! (مخصوصا برای ما برنامه نویس ها که عموما انسان های محافظه کار و مقاوم در مقابل تغییرات تکنیکی هستیم).
برای همین تصمیم گرفتم که این نرم افزار را به صورت رایگان در اختیار دیگران هم قرار بدهم. سورس برنامه هم باز هست (البته تا قسمتی باز! چون سورس رو اختیار کسانی قرار خواهم داد که دلیل موجه برای داشتن و تغییر سورس داشته باشند) و هر کسی بخواهد ایمیل بزنه تا سورس برنامه را در اختیارش بذارم.
مشخصات فنی:
- خود نرم افزار DB_Scripter تحت .Net Framework 2 و با استفاده از C# نوشته شده.
- خروجی stored procedure ها بر اساس T-SQL و Microsoft SQL Server می باشد.
- خروجی کدها برای زبان C# می باشد. (در صورت همکاری برنامه نویسان دیگه می شه خروجی های سایر زبان های برنامه نویسی رو هم ایجاد کرد، اما چون مورد استفاده خودم نبود اینکارو نکردم)
- stored procedure های ساخته شده برای دستور Select شامل یک Inner Join به جداولی که با جدول اصلی relation دارند می باشد.
- برای های Forieng-key جدول، یک stored procedure دستور select ساخته می شود.
- ایجاد validation controlهای لازم در HTML ساخته شده
- امکان تعریف انواع فیلد File و Email جهت ایجاد validation مناسب در HTML ساخته شده و همچنین ایجاد کدهای مناسب جهت upload فایل.

پنجره ایجاد پروژه جدید

دستور select ایجاد شده بر اساس کلید جدول در دیتابیس نمونه pubs در SQL Server 2000

کد #C ساخته شده جهت صدا کردن دستور select ساخته شده. این کد معمولا در Business Logic Layer قرار می گیرد. البته این امر کاملا اختیاری بوده و برنامه نویس می تواند این کد را هر جای دلخواه قرار دهد.

کد HTML ساخته شده برای دستور update. در این کد مقدارها از دیتابیس خوانده شده و در textbox و dropdown و یا سایر control های لازم که به طور خودکار ایجاد شده اند قرار می گیرند. همچنین کنترل های validation نیز به طور اتوماتیک قرار داده می شوند.

کد های #C ساخته شده جهت دریافت اطلاعات از HTML ساخته شده برای دستور update.

کد T-SQL ساخته شده جهت دستور Insert