国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

輕量級的代碼生成方案選擇

2019-11-18 15:39:05
字體:
來源:轉載
供稿:網友

上次說到MyAppfuse要有一個代碼生成工具, codegeneration.net上匯集了各種平臺各種語言的工具。

其中一些用到UML做元數據的,就變成了上年最流行的MDA tool。MDA其實是超級炒冷飯了,偶N年前的畢業論文做的就是這個題目,現在再看進步也不大。

不過想下也正常。因為MDA是由模型、實現和轉換程序三者構成的,假如模型定義飛速發展了,與底層實現之間必定會形成巨大落差,需要轉換程序做大量工作來消彌。當落差足夠大時,就會很少人愿意做這個轉換工作。而為了減少落差,一是等底層實現的發展,但這是整個IT界的事情,不是MDA開發者的個人問題。另外就唯有減低模型定義的高度,比如AndroMDA,很多現成的模板都只依靠于UML靜態Class圖,同時使用大量的Tagged Value,看上去和一個xml格式的自定義模型沒什么區別。

所以,一來受底層實現的制約,二來OMG的結構也不像個很高產的組織,MDA忽然爆發,大家洗腳上田不用再Coding的機會不大。但隨著AOP,Meta-Data,O/R Mapping,IOC Container這些底層的發展,還有微軟DSL對UML的沖擊,MDA還是會繼續慢慢發展,究竟這是我們的夢。

當下還是挑些輕量級的代碼生成方案比較實際。我挑的是XML格式的自定義模型 + jsp/Freemarker模板。當然也可以像Appfuse那樣用XDoclet,但我覺得XDoclet的擴展性,治理性和適用范圍都是最低的。也可以不用模板,用C#/java程序完全控制代碼的生成,這種方式現在又多了Python,Ruby這些動態語言可供選擇。

但我還是習慣模板多一些。比如jsp,可以用Httpclient訪問jsp,獲得返回內容來生成文件。而xml格式的元數據, 可以通過Filter放入到Request或者session中。

不過,現在流行Velocity和Freemarker。兩者之間可以用三局兩勝制決出。

一,Freemarker網站上有一篇文章,列出了Freemarker語法上比Velocity優勝的地方。

二,但現在的PM不能夠這么狹隘的從純技術角度看問題的了,Velocity有著比Freemarker多得多的用戶群體,比如AndroMDA, IntelliJ IDEA。

三,又但是,對于這種用XML格式定義的元數據,Freemarker有一個很少被提到,但無匹的優勢--內置了XML DOM的訪問語法。比如以下的元數據:

<table>
<column name="id"/>
<column name="name"/>
</table>

Freemarker可以這樣列出table下所有column的name:

<#list table.* as column>

${column.@name}

對比Velocity要使用JDom的API,簡單了不知多少倍。就這點,讓Freemarker勝出,因為Code Generate的過程中,實在要訪問太多的xml元數據。也是這點,讓我在jsp和freemarker間模棱兩可。本來,因為生成的是代碼,不是頁面,freemarker markup-language化的優勢并不存在。而jsp的好處是人人都懂,而且有最好的IDE,擴展性還超強,可以做任意的事情。

不過,說到底, 用什么做模板,其實不是件很重要的事情,這里只是寫一下group memoring,記錄低決定的過程。進入討論組討論。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐城市| 莱西市| 丹江口市| 泸水县| 江都市| 武陟县| 贵德县| 新郑市| 南投市| 尚义县| 东明县| 明星| 织金县| 松溪县| 武穴市| 肥西县| 济阳县| 长宁区| 普定县| 原阳县| 蒲城县| 萨嘎县| 卓尼县| 苗栗市| 宣汉县| 郧西县| 白沙| 砀山县| 黄梅县| 弥渡县| 开原市| 英山县| 商南县| 商洛市| 万山特区| 正安县| 马关县| 青河县| 仙居县| 措勤县| 上思县|