【風雲】也談程式碼生成器
程式碼生成器的用途一般是根據表自動生成(Model,儲存過程,Dao,Biz,UI(html,asp,aspx,jsp,winForm. ....))等,分析其特性程式碼生成器其實就是MVC的結構,M 指的是資料庫表或其他(資料來源),C指的是程式碼生成器引擎,V指的是程式碼輸出。
那麼程式碼生成器的方案有哪些可以選擇?
第一:模型邏輯,控制器邏輯,檢視邏輯都在WinForm的程式碼中混著。
很多設計者由於專案的狀況(時間比較緊)或為了暫時的方便就把程式碼生成的邏輯直接放在程式碼生成器的引擎中,就像JAVA中有些人把所有的控制邏輯和展現邏輯都放在Servlet中一樣。這樣的程式雖然在一定程度上符合了很多開發者的需求,但是很多的專案框架和你的程式碼生成器生成出來的框架不一致,那就不行了,要麼重新修改介面修改內部的程式碼,要不再轉為指定的專案框架再設計一套程式碼生成器。優點:速度快 ; 缺點: 擴張性差.
第二:在特定專案的資料庫中建幾個儲存過程來實現程式碼生成,優點:速度快 ; 缺點: 擴張性差.
第三:表示層採用伺服器檢視模板引擎的MVC結構,如JSP 檢視引擎,ASP/ASPX/PHP等伺服器檢視引擎,優點:開發非常方便,可以很好的分離了檢視/控制器/模型,缺點:依賴於特定的Web伺服器,使用起來沒有CS結構的方便好用
第四:自行開發一個檢視模板引擎,然後基於該模板引擎建造一個MVC的程式碼生成器,如商業上的CodeSmith.優點:功能強,靈活,擴充套件性好;缺點:收費的。。。。
第五:基於開源模板引擎 Velocity,StringTemplate /NVelocity,StringTemplate.Net 建造一個MVC的程式碼生成器。
第六:基於動態語言 IronPython,Boo ,ruby等
第七:檢視引擎採用Velocity,StringTemplate 等開源引擎,控制器引擎採用JAVA/.NET, Shell 介面採用動態語言,利用動態語言把模板引擎和控制器引擎有機的結合起來。
關於程式碼生成器的7種模式是我在日常工作中的總結,歡迎大家再多提提其它的設計方案。
最後備上一個基於第五種方案的DEMO--NDO.Tools,該生成器根據資料庫表自動生成模型類,以及填補了CoR程式碼生成器缺少的一部分----根據表自動生成模型,控制器,以及對應的檢視。
關於CoR的介紹請看,我前幾天寫的頂著Rails的浪潮,用NDO + Castle的monorail 也來秀一把
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-281038/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 企業上雲?也許只差一個程式碼生成器
- 也談如何閱讀程式原始碼原始碼
- (程式碼生成)JS寫的程式碼生成器-編碼也可以這麼爽..JS
- 也談談規範,JS程式碼的幾個注意點JS
- 談談JavaScript編碼風格JavaScript
- 程式碼生成器
- 也談程式設計改革程式設計
- Laravel 程式碼生成器Laravel
- js 程式碼生成器JS
- ZT 程式碼生成器
- 雲風:一個程式設計的自由人(圖靈訪談)程式設計圖靈
- 【風之語.也談天津濱海新區爆炸事件】事件
- 基於SSM風格的Java原始碼生成器SSMJava原始碼
- 談談Python的生成器Python
- go模板-程式碼生成器Go
- MyBatis Plus程式碼生成器MyBatis
- 我亦云雲——也談雲端計算(1)薦
- 小白也能看懂的二維碼生成器 API 的技術原理(附Java 接入程式碼)APIJava
- windows10風格 springboot mybatis 專案框架原始碼 shiro 整合程式碼生成器WindowsSpring BootMyBatis框架原始碼
- 《程式碼本色》作者Daniel Shiffman:藝術家也程式設計(圖靈訪談)程式設計圖靈
- 淺談 PHP 生成器PHP
- SpringBoot程式碼生成器Spring Boot
- beego 程式碼自動生成器Go
- C#垃圾程式碼生成器C#
- js簡單程式碼生成器JS
- PHP程式碼生成器介紹PHP
- 尋找Java程式碼生成器Java
- 也來談談CFRunLoop(NSRunLoop)OOP
- 談談程式碼重構
- C 語言程式碼風格之 Linux 核心程式碼風格Linux
- EMC毛文波:我亦云雲也談雲端計算
- 動軟程式碼生成器學習
- mybatis_plus程式碼生成器類MyBatis
- Cruddiy:無程式碼Bootstrap CRUD生成器boot
- MyBatis-Plus之程式碼生成器MyBatis
- java 程式碼生成器設計方案Java
- MyBatis程式碼生成器的實用MyBatis
- 也談元件化元件化