GeneXus学习笔记——入门篇
使用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" , ""); //需要查询的手机号码
parameters.Add("key", "您申请的ApiKey");//你申请的key string result = sendPost(url, parameters, "get"); // 代码中JsonObject类下载地址:http://download.csdn.net/download/gcm3206021155665/7458439
JsonObject newObj = new JsonObject(result);
String errorCode = newObj["error_code"].Value; if (errorCode == "")
{
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 = ;
req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
byte[] postData = Encoding.UTF8.GetBytes(BuildQuery(parameters, "utf8"));
reqStream = req.GetRequestStream();
reqStream.Write(postData, , 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 = ;
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所拥有的能力 接下来我会将一些东西慢慢展示给你们大家
GeneXus学习笔记——入门篇的更多相关文章
- PHP学习笔记 - 入门篇(5)
PHP学习笔记 - 入门篇(5) 语言结构语句 顺序结构 eg: <?php $shoesPrice = 49; //鞋子单价 $shoesNum = 1; //鞋子数量 $shoesMoney ...
- PHP学习笔记 - 入门篇(4)
PHP学习笔记 - 入门篇(4) 什么是运算符 PHP运算符一般分为算术运算符.赋值运算符.比较运算符.三元运算符.逻辑运算符.字符串连接运算符.错误控制运算符. PHP中的算术运算符 算术运算符主要 ...
- PHP学习笔记 - 入门篇(3)
PHP学习笔记 - 入门篇(3) 常量 什么是常量 什么是常量?常量可以理解为值不变的量(如圆周率):或者是常量值被定义后,在脚本的其他任何地方都不可以被改变.PHP中的常量分为自定义常量和系统常量 ...
- PHP学习笔记--入门篇
PHP学习笔记--入门篇 一.Echo语句 1.格式 echo是PHP中的输出语句,可以把字符串输出(字符串用双引号括起来) 如下代码 <?php echo "Hello world! ...
- PHP学习笔记 - 入门篇(2)
PHP入门篇(2) 什么是变量 变量是用于存储值的容器,如下 $var = @"6666" 如何定义变量 定义变量就是像服务器的内存申请空间,用来存储数据,eg: <?php ...
- JavaScript学习笔记 - 入门篇(1)- 准备
为什么学习JavaScript 一.你知道,为什么JavaScript非常值得我们学习吗? 所有主流浏览器都支持JavaScript. 目前,全世界大部分网页都使用JavaScript. 它可以让网页 ...
- android学习笔记(入门篇)
+号只是当你第一次定义一个资源ID的时候需要, 告诉SDK此资源ID需要被创建出来 对于所有的View默认的权重是0,如果你只设置了一个View的权重大于0,那么这个View将占据除去别的View本身 ...
- Android攻城狮学习笔记—入门篇三
第十章 CheckBox 与其他控件类似 有自己的监听方法 实现监听 并定义被选中或取消后的操作 第十一章 RadioGroup和RadioButton RadioGroup是RadioButton的 ...
- Android攻城狮学习笔记—入门篇二
第七章 跑马灯 activity_main.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/an ...
随机推荐
- Javascript 知识遗漏点梳理。
先说一下我之前学习Javascript的学习经历,然后就是最近几天学到以前没有注意的知识遗漏点. 1.之前的学习经历和方法: 最开始是看了Javascript DOM编程与艺术这本书,把慕课网上的&l ...
- ZOJ3712:Hard to Play
MightyHorse is playing a music game called osu!. After playing for several months, MightyHorse disco ...
- Android-广播总结
1.发送广播: 其实发送广播属于隐式意图 1.1.系统发出的广播(有序广播/无序广播) 1.2自己发出的广播(有序广播/无序广播) 2.订阅广播: 2.1.AndroidManifest.xml形式订 ...
- IDEA配置hibernate
当做完struts2的demo之后,发现这些和myeclipse下面几乎没有差别. 唯一觉得不好的就有一点,model的映射文件 .hbm.xml这个无法通过model来生成,所以是手写,有点麻烦.这 ...
- 电表读数归零回滚SQL处理算法
在采集电表数据的时候,可以发现有些电表设备读数会发生回滚.这时候,如果单纯的累加计算用电量,就会出现负值.当然,这也许和电表的质量有关系. “RTQty”(当前读到的读数).“LastQty”(上次读 ...
- Javascript设计模式理论与实战:组合模式
我们平时开发过程中,一定会遇到这种情况:同时处理简单对象和由简单对象组成的复杂对象,这些简单对象和复杂对象会组合成树形结构,在客户端对其处理的时候要保持一致性.比如电商网站中的产品订单,每一张产品订单 ...
- XML--将XML中数据提取出转换成表
DECLARE @xml XMLSET @xml='<Students> <Student id="1001"> <name&g ...
- Fiddler关闭后打不开网页
今天项目系统测试的时候,CS客户端的Restful请求都失败,但是实际上的服务是正常开启的,马上通过cmd指令ping了一下服务,正常:再用telnet试了一下端口,也是正常.不过随后发现在这台电脑上 ...
- ES6学习之const声明常量的学习
在ES中const关键字用来声明常量,const声明的一经定义不能修改 和let特性差不多, ; console.log(a); a = ; //报错 const定义完常量后必须赋值,后面不允许再次赋 ...
- UWP开发入门(四)——自定义CommandBar
各位好,再次回到UWP开发入门系列,刚回归可能有些不适应,所以今天我们讲个简单的,自定义CommandBar,说通俗点就是自定义类似AppBarButton的东西,然后扔到CommandBar中使用. ...