熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

基於元數據和模板的代碼生成器的目標

2013-11-13 09:43:12  來源: .NET編程 
本來是想弄完JavaScript混淆器再來整理這個的但是天天都在和數據庫打交道索性還是先簡化自己的工作量吧把自己關於代碼生成器的一些想法放上來由於本人從開始工作到現在基本做的都是MIS從剛開始的腳本模式到領域對象模式然後是從手工輸入SQL語句到由反射自動生成基本的SQL語句雖然說方式變了很多但還是逃不出一些瑣碎的事情比如說中間層一個表對應的實體你總要一個字段一個字段地把屬性弄上去吧列就算了多那麼點誰都頭痛前台界面上你得把一個個字段對應的控件放上去吧調位置沒法省什麼工但放上去也很麻煩吧後台數據庫操作如果要自己寫UpdateInsert或者Delete就更麻煩了雖然有不少代碼生成器可不是覺得麻煩就是覺得不順手所以自己來動手
 
  單位裡自己寫了一個代碼生成器不過不算是基於模板的而且也不夠智能和通用嚴格說起來只是在指定的地方輸出固定的代碼而已不過其他方面的功能還不錯有點像現在的Codematic不過Codematic現在似乎有那麼一個模板功能了看模板似乎是用xslt來生成代碼這個似乎是不錯的主意能省掉自己解析模板的工作不過覺得麻煩了一些暫時不考率之
 
  再一個咚咚就是很流行的CodeSmith這東西不錯現成的模板很多只要流行的框架它都能有模板套用編輯器之類的東西也挺完善不過還是覺得它麻煩原因稍後再說
 
  CodeProject上面有一個Template based code generationSmart Template Engine感覺這個東西和CodeSmith有些異曲同工的地方CP上的都是需要模板中按照一定的規律進行替換後就可以生成輸出的CS代碼然後對CS代碼進行動態編譯執行後就得到了最終的代碼這裡就出現了我剛才說的麻煩的地方你必須有點編程的知識而且還必須使用生成器支持的語言而且模板編寫起來也比較復雜上手的時間比較長還有一個可能不是原因的原因我看到的幾個代碼生成器似乎都只輸出固定語言的代碼
 
  分析一下常用代碼生成器的功能不外乎如下需要遍歷用戶所選的表 遍歷每個表的字段遍歷表的主鍵列(當然外鍵不少人也用可惜我一般不在數據庫表加這個暫時就不考慮了等有時間再加入)分析字段的類型根據模板生成代碼
 
  所以我的目標就是模板定義簡單不需要復雜的定義只需要通過定義一些簡單的標記就可以完成
 
  生成的代碼不受語言的限制各種語言的語法由模板來定義就好了
 
  可以擴展就是能支持插件可以自己擴展一些標記完成一些比較有針對性的事情當然這個插件就看dotNet支持哪些語言了數據庫的類型和具體語言中數據類型的相互轉換不同風格的名稱轉換等
 
  可以利用簡單的標記取得一些必須的屬性表名列名在CLS中的數據類型字符串長度等等
 
  生成代碼的時候可以選擇跳過某些不需要的字段比如有些列對應的代碼已經再基類中定義了
 
  可以指定為每個選定的表都生成單獨的文件還是將所有生成的代碼都放在一個文件中
 
  PS改個標題其實不一定要連接到實際的數據庫只要能有元數據就可以了
From:http://tw.wingwit.com/Article/program/net/201311/11405.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.