GeneXus学习笔记——入门篇
使用GeneXus做開(kāi)發(fā)做了有一段時(shí)間了 卻發(fā)現(xiàn)一個(gè)問(wèn)題(O_O)?就是除了相關(guān)的Wiki外 網(wǎng)上其他地方的相關(guān)資料都很少 于是乎我就想在這記錄一些東西 來(lái)幫助以后會(huì)用到的人(°ー°〃)
那么第一個(gè)問(wèn)題:什么是GeneXus ?? w(゚Д゚)w?
這個(gè)問(wèn)題我想大部分人都很陌生 首先可能先入為主的以為是一個(gè)技術(shù) 但是無(wú)論是從貼吧圈子里都很少或者說(shuō)幾乎沒(méi)聽(tīng)過(guò)這個(gè)詞語(yǔ) 對(duì)吧?其實(shí)這個(gè)GeneXus是一款從國(guó)外傳進(jìn)來(lái)的開(kāi)發(fā)工具ㄟ( ▔, ▔ )ㄏ
欸 Σ(⊙▽⊙"a?現(xiàn)在主流的語(yǔ)言都會(huì)有自己的一個(gè)配套的開(kāi)發(fā)工具 Java有Idea? C#有Vs? 安卓有自己的Android Studio 等等諸如此類(lèi)的? 那么這是不是某種語(yǔ)言的開(kāi)發(fā)工具呢?
其實(shí)也不是-_-||使用它的話可以同時(shí)開(kāi)發(fā)javaC# 以及安卓 IOS等應(yīng)用程序 是不是聽(tīng)得很奇怪 這都不是一個(gè)平臺(tái)的東西 ? ? PS:(ˉ▽ ̄~) 切~~ C#天下第一!!破音!~( ̄0 ̄)/ ?請(qǐng)繼續(xù)往下看
首先傳統(tǒng)模式的開(kāi)發(fā)由于受成本的控制,不可能所有開(kāi)發(fā)人員都是經(jīng)驗(yàn)非常豐富的。人員能力參差不齊導(dǎo)致代碼 Bug非常多 其次就是隨著多元化的時(shí)代的腳步 公司人員投入的成本也很大
比如一個(gè)項(xiàng)目可能就需要公司的前端設(shè)計(jì)+后端開(kāi)發(fā)服務(wù)然后是其他的公司的測(cè)試啊什么的? 或者說(shuō)一個(gè)人身上需要參與著幾個(gè)項(xiàng)目 比如這個(gè)項(xiàng)目還需要用到IOS開(kāi)發(fā) 這時(shí)候公司又沒(méi)有 這類(lèi)人員
公司招了一個(gè) 寫(xiě)完這個(gè)項(xiàng)目又不需要了 然后踢了 哈哈哈哈哈╮(╯▽╰)╭ 又不是沒(méi)有這樣的事 這個(gè)時(shí)候GeneXus的作用就體現(xiàn)出來(lái)了 首先比如一個(gè)項(xiàng)目可能前后需要10個(gè)人參與 那么按照我們的要求 使用GeneXus的團(tuán)隊(duì)只需要3個(gè)人 !!理由如下:
1.幾乎全自動(dòng)化的代碼生成:我們使用的過(guò)程中只需要關(guān)注邏輯代碼的編寫(xiě) 其底層的代碼完全由GeneXus替代 相當(dāng)于你告訴它(我想吃雪糕 你從抽屜里拿錢(qián) 然后過(guò)馬路 過(guò)馬路時(shí)注意車(chē)輛? 和店員說(shuō)買(mǎi)個(gè)雪糕 藍(lán)莓味的 然后回來(lái)給我)剩下的事情不需要操心 它自動(dòng)幫你完成 只要邏輯沒(méi)問(wèn)題 那么就不會(huì)發(fā)生代碼層級(jí)的bug.
2.代碼的復(fù)用性: 我們只需要寫(xiě)一套業(yè)務(wù)邏輯 這套代碼就能直接生成安卓、IOS 、C# 以及Java端的應(yīng)用? Σ( ° △ °|||)︴ 沃日!唯一可能改變的就只有頁(yè)面的布局之類(lèi)的 但是不用急請(qǐng)繼續(xù)往下看
3.提供各種Web及移勱端UI模板,模塊化配置 里面自帶了各種Web端的UI設(shè)計(jì) 不僅如此 移動(dòng)端IOS 和安卓? WebForm? 甚至到塞班系統(tǒng)都有集成 選個(gè)模板修修改改就可以了 當(dāng)然 你完全可以自己找一個(gè)UI設(shè)計(jì)
畫(huà)出你想要的 然后 拖拉拽 OK? 你沒(méi)看錯(cuò) 是直接拖拉拽 然后改一下名字顯示 綁定一下變量或者Grid 然后把之前Web端寫(xiě)好的邏輯挪過(guò)來(lái) 點(diǎn)擊安卓環(huán)境 生成 完事..... 超方便的說(shuō)?(* ̄ω ̄)
4.最后就是簡(jiǎn)單易學(xué),學(xué)習(xí)GeneXus只要掌插各個(gè)對(duì)象的使用方法就可以,不用陷入各種不同技術(shù)的細(xì)節(jié)中。因?yàn)橹拔揖驼f(shuō)過(guò)?GeneXus有自己的技術(shù)團(tuán)隊(duì) 會(huì)把當(dāng)下熱門(mén)的技術(shù)進(jìn)行學(xué)習(xí)了解摸透 然后通過(guò)自己的方式集成到IDE中
我們要做的就只有調(diào)用就好了 這么說(shuō)你可能還沒(méi)有明確的概念 我舉個(gè)簡(jiǎn)單的例子吧 比如現(xiàn)在我調(diào)用一個(gè)接口獲取電話號(hào)碼的歸屬地? 當(dāng)然這里只是舉個(gè)例子?C#代碼如下? 這里我用的是聚合數(shù)據(jù)的參考代碼
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; using Xfrog.Net; using System.Diagnostics; using System.Web;namespace ConsoleAPI {class Program{static void Main(string[] args){string url = "http://apis.juhe.cn/mobile/get";var parameters = new Dictionary<string, string>();parameters.Add("phone" , "13429667914"); //需要查詢(xún)的手機(jī)號(hào)碼parameters.Add("key", "您申請(qǐng)的ApiKey");//你申請(qǐng)的keystring result = sendPost(url, parameters, "get");// 代碼中JsonObject類(lèi)下載地址:http://download.csdn.net/download/gcm3206021155665/7458439JsonObject newObj = new JsonObject(result);String errorCode = newObj["error_code"].Value;if (errorCode == "0"){Debug.WriteLine("成功");Debug.WriteLine(newObj);}else{//Debug.WriteLine("請(qǐng)求異常");Debug.WriteLine(newObj["error_code"].Value+":"+newObj["reason"].Value);}}/// <summary>/// Http (GET/POST)/// </summary>/// <param name="url">請(qǐng)求URL</param>/// <param name="parameters">請(qǐng)求參數(shù)</param>/// <param name="method">請(qǐng)求方法</param>/// <returns>響應(yīng)內(nèi)容</returns>static string sendPost(string url, IDictionary<string, string> parameters, string method){if (method.ToLower() == "post"){HttpWebRequest req = null;HttpWebResponse rsp = null;System.IO.Stream reqStream = null;try{req = (HttpWebRequest)WebRequest.Create(url);req.Method = method;req.KeepAlive = false;req.ProtocolVersion = HttpVersion.Version10;req.Timeout = 60000;req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";byte[] postData = Encoding.UTF8.GetBytes(BuildQuery(parameters, "utf8"));reqStream = req.GetRequestStream();reqStream.Write(postData, 0, postData.Length);rsp = (HttpWebResponse)req.GetResponse();Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);return GetResponseAsString(rsp, encoding);}catch (Exception ex){return ex.Message;}finally{if (reqStream != null) reqStream.Close();if (rsp != null) rsp.Close();}}else{//創(chuàng)建請(qǐng)求HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + "?" + BuildQuery(parameters, "utf8"));//GET請(qǐng)求request.Method = "GET";request.ReadWriteTimeout = 5000;request.ContentType = "text/html;charset=UTF-8";HttpWebResponse response = (HttpWebResponse)request.GetResponse();Stream myResponseStream = response.GetResponseStream();StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));//返回內(nèi)容string retString = myStreamReader.ReadToEnd();return retString;}}/// <summary>/// 組裝普通文本請(qǐng)求參數(shù)。/// </summary>/// <param name="parameters">Key-Value形式請(qǐng)求參數(shù)字典</param>/// <returns>URL編碼后的請(qǐng)求數(shù)據(jù)</returns>static string BuildQuery(IDictionary<string, string> parameters, string encode){StringBuilder postData = new StringBuilder();bool hasParam = false;IEnumerator<KeyValuePair<string, string>> dem = parameters.GetEnumerator();while (dem.MoveNext()){string name = dem.Current.Key;string value = dem.Current.Value;// 忽略參數(shù)名或參數(shù)值為空的參數(shù)if (!string.IsNullOrEmpty(name))//&& !string.IsNullOrEmpty(value) {if (hasParam){postData.Append("&");}postData.Append(name);postData.Append("=");if (encode == "gb2312"){postData.Append(HttpUtility.UrlEncode(value, Encoding.GetEncoding("gb2312")));}else if (encode == "utf8"){postData.Append(HttpUtility.UrlEncode(value, Encoding.UTF8));}else{postData.Append(value);}hasParam = true;}}return postData.ToString();}/// <summary>/// 把響應(yīng)流轉(zhuǎn)換為文本。/// </summary>/// <param name="rsp">響應(yīng)流對(duì)象</param>/// <param name="encoding">編碼方式</param>/// <returns>響應(yīng)文本</returns>static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding){System.IO.Stream stream = null;StreamReader reader = null;try{// 以字符流的方式讀取HTTP響應(yīng)stream = rsp.GetResponseStream();reader = new StreamReader(stream, encoding);return reader.ReadToEnd();}finally{// 釋放資源if (reader != null) reader.Close();if (stream != null) stream.Close();if (rsp != null) rsp.Close();}}} }?是不是很麻煩?當(dāng)然現(xiàn)在可能你們公司都有大佬寫(xiě)好了一些東西 不用寫(xiě)這么多代碼來(lái)調(diào)用但是相比于GeneXus調(diào)用 簡(jiǎn)單
//拼接聚合API調(diào)用地址 &vUrlStr = "apis.juhe.cn/mobile/get?" //拼接參數(shù):手機(jī)號(hào) &vUrlStr = &vUrlStr +"phone="+&iPhone //拼接參數(shù):APPKEY &vUrlStr = &vUrlStr +"&key=1234567890" //拼接參數(shù):dtype(默認(rèn)json) &vUrlStr = &vUrlStr +"&dtype=" //調(diào)用聚合API調(diào)用地址 &httpclient.Host = &vUrlStr &httpclient.Execute('GET', '') &result = &httpclient.ToString() //接口返回Json &oResult.FromJson(&result)通過(guò)定義變量然后拼接接口需要的參數(shù)調(diào)用內(nèi)置函數(shù)&httpclient以及他的一些屬性最后用內(nèi)置函數(shù)FromJson解析返回的Json數(shù)據(jù)就結(jié)束了? 炒雞簡(jiǎn)單
當(dāng)然簡(jiǎn)簡(jiǎn)單單這么些篇幅完全不能夠介紹完GeneXus所擁有的能力? 接下來(lái)我會(huì)將一些東西慢慢展示給你們大家
?
轉(zhuǎn)載于:https://www.cnblogs.com/CurtilageBoy/p/10616965.html
總結(jié)
以上是生活随笔為你收集整理的GeneXus学习笔记——入门篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SPSS 输出表格样式设置操作——三线表
- 下一篇: 小寓言