GeneXus学习笔记——入门篇
使用GeneXus做開發(fā)做了有一段時間了 卻發(fā)現(xiàn)一個問題(O_O)?就是除了相關(guān)的Wiki外 網(wǎng)上其他地方的相關(guān)資料都很少 于是乎我就想在這記錄一些東西 來幫助以后會用到的人(°ー°〃)
那么第一個問題:什么是GeneXus ?? w(゚Д゚)w?
這個問題我想大部分人都很陌生 首先可能先入為主的以為是一個技術(shù) 但是無論是從貼吧圈子里都很少或者說幾乎沒聽過這個詞語 對吧?其實(shí)這個GeneXus是一款從國外傳進(jìn)來的開發(fā)工具ㄟ( ▔, ▔ )ㄏ
欸 Σ(⊙▽⊙"a?現(xiàn)在主流的語言都會有自己的一個配套的開發(fā)工具 Java有Idea? C#有Vs? 安卓有自己的Android Studio 等等諸如此類的? 那么這是不是某種語言的開發(fā)工具呢?
其實(shí)也不是-_-||使用它的話可以同時開發(fā)javaC# 以及安卓 IOS等應(yīng)用程序 是不是聽得很奇怪 這都不是一個平臺的東西 ? ? PS:(ˉ▽ ̄~) 切~~ C#天下第一!!破音!~( ̄0 ̄)/ ?請繼續(xù)往下看
首先傳統(tǒng)模式的開發(fā)由于受成本的控制,不可能所有開發(fā)人員都是經(jīng)驗(yàn)非常豐富的。人員能力參差不齊導(dǎo)致代碼 Bug非常多 其次就是隨著多元化的時代的腳步 公司人員投入的成本也很大
比如一個項(xiàng)目可能就需要公司的前端設(shè)計(jì)+后端開發(fā)服務(wù)然后是其他的公司的測試啊什么的? 或者說一個人身上需要參與著幾個項(xiàng)目 比如這個項(xiàng)目還需要用到IOS開發(fā) 這時候公司又沒有 這類人員
公司招了一個 寫完這個項(xiàng)目又不需要了 然后踢了 哈哈哈哈哈╮(╯▽╰)╭ 又不是沒有這樣的事 這個時候GeneXus的作用就體現(xiàn)出來了 首先比如一個項(xiàng)目可能前后需要10個人參與 那么按照我們的要求 使用GeneXus的團(tuán)隊(duì)只需要3個人 !!理由如下:
1.幾乎全自動化的代碼生成:我們使用的過程中只需要關(guān)注邏輯代碼的編寫 其底層的代碼完全由GeneXus替代 相當(dāng)于你告訴它(我想吃雪糕 你從抽屜里拿錢 然后過馬路 過馬路時注意車輛? 和店員說買個雪糕 藍(lán)莓味的 然后回來給我)剩下的事情不需要操心 它自動幫你完成 只要邏輯沒問題 那么就不會發(fā)生代碼層級的bug.
2.代碼的復(fù)用性: 我們只需要寫一套業(yè)務(wù)邏輯 這套代碼就能直接生成安卓、IOS 、C# 以及Java端的應(yīng)用? Σ( ° △ °|||)︴ 沃日!唯一可能改變的就只有頁面的布局之類的 但是不用急請繼續(xù)往下看
3.提供各種Web及移勱端UI模板,模塊化配置 里面自帶了各種Web端的UI設(shè)計(jì) 不僅如此 移動端IOS 和安卓? WebForm? 甚至到塞班系統(tǒng)都有集成 選個模板修修改改就可以了 當(dāng)然 你完全可以自己找一個UI設(shè)計(jì)
畫出你想要的 然后 拖拉拽 OK? 你沒看錯 是直接拖拉拽 然后改一下名字顯示 綁定一下變量或者Grid 然后把之前Web端寫好的邏輯挪過來 點(diǎn)擊安卓環(huán)境 生成 完事..... 超方便的說?(* ̄ω ̄)
4.最后就是簡單易學(xué),學(xué)習(xí)GeneXus只要掌插各個對象的使用方法就可以,不用陷入各種不同技術(shù)的細(xì)節(jié)中。因?yàn)橹拔揖驼f過?GeneXus有自己的技術(shù)團(tuán)隊(duì) 會把當(dāng)下熱門的技術(shù)進(jìn)行學(xué)習(xí)了解摸透 然后通過自己的方式集成到IDE中
我們要做的就只有調(diào)用就好了 這么說你可能還沒有明確的概念 我舉個簡單的例子吧 比如現(xiàn)在我調(diào)用一個接口獲取電話號碼的歸屬地? 當(dāng)然這里只是舉個例子?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"); //需要查詢的手機(jī)號碼parameters.Add("key", "您申請的ApiKey");//你申請的keystring result = sendPost(url, parameters, "get");// 代碼中JsonObject類下載地址: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("請求異常");Debug.WriteLine(newObj["error_code"].Value+":"+newObj["reason"].Value);}}/// <summary>/// Http (GET/POST)/// </summary>/// <param name="url">請求URL</param>/// <param name="parameters">請求參數(shù)</param>/// <param name="method">請求方法</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)建請求HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + "?" + BuildQuery(parameters, "utf8"));//GET請求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>/// 組裝普通文本請求參數(shù)。/// </summary>/// <param name="parameters">Key-Value形式請求參數(shù)字典</param>/// <returns>URL編碼后的請求數(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)流對象</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)在可能你們公司都有大佬寫好了一些東西 不用寫這么多代碼來調(diào)用但是相比于GeneXus調(diào)用 簡單
//拼接聚合API調(diào)用地址 &vUrlStr = "apis.juhe.cn/mobile/get?" //拼接參數(shù):手機(jī)號 &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)通過定義變量然后拼接接口需要的參數(shù)調(diào)用內(nèi)置函數(shù)&httpclient以及他的一些屬性最后用內(nèi)置函數(shù)FromJson解析返回的Json數(shù)據(jù)就結(jié)束了? 炒雞簡單
當(dāng)然簡簡單單這么些篇幅完全不能夠介紹完GeneXus所擁有的能力? 接下來我會將一些東西慢慢展示給你們大家
?
轉(zhuǎn)載于:https://www.cnblogs.com/CurtilageBoy/p/10616965.html
總結(jié)
以上是生活随笔為你收集整理的GeneXus学习笔记——入门篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SPSS 输出表格样式设置操作——三线表
- 下一篇: 小寓言