使用GeneXus做开发做了有一段时间了 却发现一个问题(O_O)?就是除了相关的Wiki外 网上其他地方的相关资料都很少 于是乎我就想在这记录一些东西 来帮助以后会用到的人(°ー°〃)

那么第一个问题:什么是GeneXus ?? w(゚Д゚)w?

这个问题我想大部分人都很陌生 首先可能先入为主的以为是一个技术 但是无论是从贴吧圈子里都很少或者说几乎没听过这个词语 对吧?其实这个GeneXus是一款从国外传进来的开发工具ㄟ( ▔, ▔ )ㄏ

欸 Σ(⊙▽⊙"a 现在主流的语言都会有自己的一个配套的开发工具 Java有Idea  C#有Vs  安卓有自己的Android Studio 等等诸如此类的  那么这是不是某种语言的开发工具呢?

其实也不是-_-||使用它的话可以同时开发javaC# 以及安卓 IOS等应用程序 是不是听得很奇怪 这都不是一个平台的东西     PS:(ˉ▽ ̄~) 切~~ C#天下第一!!破音!~( ̄0 ̄)/  请继续往下看

首先传统模式的开发由于受成本的控制,不可能所有开发人员都是经验非常丰富的。人员能力参差不齐导致代码 Bug非常多 其次就是随着多元化的时代的脚步 公司人员投入的成本也很大

比如一个项目可能就需要公司的前端设计+后端开发服务然后是其他的公司的测试啊什么的  或者说一个人身上需要参与着几个项目 比如这个项目还需要用到IOS开发 这时候公司又没有 这类人员

公司招了一个 写完这个项目又不需要了 然后踢了 哈哈哈哈哈╮(╯▽╰)╭ 又不是没有这样的事 这个时候GeneXus的作用就体现出来了 首先比如一个项目可能前后需要10个人参与 那么按照我们的要求 使用GeneXus的团队只需要3个人 !!理由如下:

1.几乎全自动化的代码生成:我们使用的过程中只需要关注逻辑代码的编写 其底层的代码完全由GeneXus替代 相当于你告诉它(我想吃雪糕 你从抽屉里拿钱 然后过马路 过马路时注意车辆  和店员说买个雪糕 蓝莓味的 然后回来给我)剩下的事情不需要操心 它自动帮你完成 只要逻辑没问题 那么就不会发生代码层级的bug.

2.代码的复用性: 我们只需要写一套业务逻辑 这套代码就能直接生成安卓、IOS 、C# 以及Java端的应用  Σ( ° △ °|||)︴ 沃日!唯一可能改变的就只有页面的布局之类的 但是不用急请继续往下看

3.提供各种Web及移劢端UI模板,模块化配置 里面自带了各种Web端的UI设计 不仅如此 移动端IOS 和安卓  WebForm  甚至到塞班系统都有集成 选个模板修修改改就可以了 当然 你完全可以自己找一个UI设计

画出你想要的 然后 拖拉拽 OK  你没看错 是直接拖拉拽 然后改一下名字显示 绑定一下变量或者Grid 然后把之前Web端写好的逻辑挪过来 点击安卓环境 生成 完事..... 超方便的说 (* ̄ω ̄)

4.最后就是简单易学,学习GeneXus只要掌插各个对象的使用方法就可以,不用陷入各种不同技术的细节中。因为之前我就说过 GeneXus有自己的技术团队 会把当下热门的技术进行学习了解摸透 然后通过自己的方式集成到IDE中

我们要做的就只有调用就好了 这么说你可能还没有明确的概念 我举个简单的例子吧 比如现在我调用一个接口获取电话号码的归属地  当然这里只是举个例子 C#代码如下  这里我用的是聚合数据的参考代码

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"); //需要查询的手机号码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">请求参数</param>/// <param name="method">请求方法</param>/// <returns>响应内容</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{//创建请求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"));//返回内容string retString = myStreamReader.ReadToEnd();return retString;}}/// <summary>/// 组装普通文本请求参数。/// </summary>/// <param name="parameters">Key-Value形式请求参数字典</param>/// <returns>URL编码后的请求数据</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;// 忽略参数名或参数值为空的参数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>/// 把响应流转换为文本。/// </summary>/// <param name="rsp">响应流对象</param>/// <param name="encoding">编码方式</param>/// <returns>响应文本</returns>static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding){System.IO.Stream stream = null;StreamReader reader = null;try{// 以字符流的方式读取HTTP响应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();}}}
} 

是不是很麻烦?当然现在可能你们公司都有大佬写好了一些东西 不用写这么多代码来调用但是相比于GeneXus调用 简单

//拼接聚合API调用地址
&vUrlStr = "apis.juhe.cn/mobile/get?"
//拼接参数:手机号
&vUrlStr = &vUrlStr +"phone="+&iPhone
//拼接参数:APPKEY
&vUrlStr = &vUrlStr +"&key=1234567890"
//拼接参数:dtype(默认json)
&vUrlStr = &vUrlStr +"&dtype="
//调用聚合API调用地址
&httpclient.Host = &vUrlStr
&httpclient.Execute('GET', '')
&result = &httpclient.ToString()
//接口返回Json
&oResult.FromJson(&result)

通过定义变量然后拼接接口需要的参数调用内置函数&httpclient以及他的一些属性最后用内置函数FromJson解析返回的Json数据就结束了  炒鸡简单

当然简简单单这么些篇幅完全不能够介绍完GeneXus所拥有的能力  接下来我会将一些东西慢慢展示给你们大家

转载于:https://www.cnblogs.com/CurtilageBoy/p/10616965.html

GeneXus学习笔记——入门篇相关推荐

  1. Vue学习笔记入门篇——数据及DOM

    本文为转载,原文:Vue学习笔记入门篇--数据及DOM 数据 data 类型 Object | Function 详细 Vue 实例的数据对象.Vue 将会递归将 data 的属性转换为 getter ...

  2. C# 学习笔记入门篇(上)

    文章目录 C# 学习笔记入门篇 〇.写在前面 Hello World! 这篇学习笔记适合什么人 这篇学习笔记到底想记什么 附加说明 一.命名空间 "进入"命名空间 嵌套的命名空间. ...

  3. R语言学习笔记——入门篇:第一章-R语言介绍

    R语言 R语言学习笔记--入门篇:第一章-R语言介绍 文章目录 R语言 一.R语言简介 1.1.R语言的应用方向 1.2.R语言的特点 二.R软件的安装 2.1.Windows/Mac 2.2.Lin ...

  4. R语言学习笔记——入门篇:第三章-图形初阶

    R语言 R语言学习笔记--入门篇:第三章-图形初阶 文章目录 R语言 一.使用图形 1.1.基础绘图函数:plot( ) 1.2.图形控制函数:dev( ) 补充--直方图函数:hist( ) 补充- ...

  5. 易语言学习笔记——入门篇

    易语言学习笔记20180709 最早接触易语言是三年前的事情了,那时候是因为DNF这个游戏我才知道了易语言这个编程语言,当时对他就非常的憧憬.只不过那时候易语言的学习资源比较少,而且自身的学业比较重就 ...

  6. Docker学习笔记-入门篇

    文章目录 Docker概述 Docker为什么会出现 Docker的历史 Docker为什么这么火(有什么优势) Docker是什么 Docker能做什么 Docker的基本组成 Docker为什么比 ...

  7. JavaScript学习笔记 - 入门篇(1)- 准备

    为什么学习JavaScript 一.你知道,为什么JavaScript非常值得我们学习吗? 所有主流浏览器都支持JavaScript. 目前,全世界大部分网页都使用JavaScript. 它可以让网页 ...

  8. zabbix学习笔记——入门篇

    目录 一.了解监控 监控的种类 二.zabbix监控 1.介绍zabbix 2.为什么选择zabbix 3.Zabbix可监控对象 4.zabbix监控方式 1.被动监控 2.主动监控 5.zabbi ...

  9. android学习笔记(入门篇)

    +号只是当你第一次定义一个资源ID的时候需要, 告诉SDK此资源ID需要被创建出来 对于所有的View默认的权重是0,如果你只设置了一个View的权重大于0,那么这个View将占据除去别的View本身 ...

最新文章

  1. Exchange 2016 Outlook新建会议时收到提醒邮件
  2. (转) Unity3D 使用Texturepacker打包工具制作NGUI(Atlas)图集
  3. C++进程数量的限制
  4. Python判断变量的数据类型的两种方法
  5. SQL select 语法(转)
  6. Python的序列Ⅰ
  7. mybatis学习与踩坑记录
  8. Java打包生成exe(使用exe4j和inno setup)
  9. SpringMVC中404错误解决方法总结
  10. 8.企业安全建设入门(基于开源软件打造企业网络安全) --- 态势感知系统建设
  11. 【Request】全面总结并理解request
  12. 将java或javaweb项目打包为jar包或war包
  13. 电感式dcdc原理(转)
  14. 程序猿的创业故事:一个游走于计算机编程、高中数学、高中物理、爱好木工的全栈工程师,转行做高中教学的亲生经历!
  15. 机器学习算法原理与编程实践-郑捷著 读书笔记—第一章part1
  16. 联邦学习纵向逻辑回归公式推导
  17. Git 分支篇之分支介绍
  18. Linux从入门到精通——基本命令
  19. |PS内置滤镜简介|
  20. JAVA 接口 验证哥特巴赫猜想

热门文章

  1. 奶牛与农夫John与oj
  2. 小猫爪:S32K3学习笔记02-S32K3之FlexCAN
  3. yii2-elasticsearch(3)yii2 elasticsearch 的初步尝试
  4. 业务数据激增,4张图看清zData如何助力金融企业快速响应IT需求
  5. mac关闭php,mac强制退出程序的方法有哪些
  6. Apache Kafka 3.0.0 稳定版发布,有哪些值得关心的变化?
  7. manjaro kde安装 配置教程
  8. python 地图偏移_python 地图经纬度转换、纠偏的实例代码 百度地图经纬度web纠偏怎么用...
  9. 页脚设置页码(首页无页码,从第二页开始页码为1)
  10. word样式和多级列表设置技巧(二)