用K2 smartforms开发一个应用程序究竟比ASP.NET快多少?
这次试验的起因是一场内部辩论。
“用K2 smartforms开发一个应用程序究竟比ASP.NET快多少?”
我们推测是快4倍。
但是经过测试发现,我们推测错了。
本文记录了试验的规划、过程以及令人惊讶的结果。
真实的故事。
参与者
Renier 简介 Renier是K2 blackpearl的产品市场营销经理。很 久以前,Renier 还是一名软件开发人员,但是他 现在不再编写程序了。Renier 需要使用 K2 smartforms 来开发测试应用程序。 |
Eugene 简介 Eugene是一名K2技术专家。他是一名非常专业的开 发人员,擅长使用 Visual Studio 和 K2 blackpearl Eugene 的任务是尽快用 ASP.NET 开发出相同的应 用程序。 |
///////////////////////////////////////////////////////////////////////////////////////////////////
PK应用程序
我们决定开发费用报销应用程序,因为在某种程度上,所有类型和规模的机构对此都有共同需求。我们常常在 K2 blackpearl 上演示此解决方案,所以可以将现有的应用程序作为设计基础。Renier 和 Eugene 对应用程序的功能都非常熟悉,因此我们相信这是一次公平竞争。
///////////////////////////////////////////////////////////////////////////////////////////////////
PK要求
Renier 和 Eugene 需要对应用程序要求达成共识。为了区分表单及平衡其他变量,他们二人同意将开发仅限于表单开发。
试验中不包括表单背后的工作流,并且提前用 K2 SmartObjects 创建数据存储。SmartObjects 的使用类似于传统的业务对象,具有 CRUD(创建、读取、更新、删除)功能。每个人都可以使用相同的设置:员工、成本中心、部门、费用报销和费用报销项。
///////////////////////////////////////////////////////////////////////////////////////////////////
费用报销状态说明
SAVED(已保存):员工可以创建费用报销单,并且无需提交审批即可保存。这通常用于定期获取费用,以后批量提交。当报销单处于保存状态时,可以打开,对其进行编辑。
SUBMITTED(已提交):报销单已提交审批。员工无法更改这种状态下的报销单,但可以查看。
PROCESSED(已处理):此报销单已经审批并处理。这种状态下的报销单不能更改只能查看。
系统假定登录 Windows 的用户是员工,需要填写表单。要在此基础上开发以下表单。
///////////////////////////////////////////////////////////////////////////////////////////////////
管理费用报销表单
管理费用报销表单将作为应用程序的登录页。
版块 • 页眉是 K2 标识和应用程序名称 • 当前用户的员工数据及审批负责人列表 • 授权用户创建的所有报销项列表 操作 •打开并创建新的支出表单 •选择现有支出后,打开我的支出(My Expense) |
创建新的费用报销表单
员工可以用这个表单收集单项报销费用。
版块 • 页眉是 K2 标识和应用程序名称 • 当前用户的员工数据及审批负责人列表 • 费用报销的详细信息,如日期、名称和汇总资料 • 支出项目,包括日期、说明、币种、汇率和附件 操作 • 提交费用报销单以备审批 • 保存费用报销单,稍后再填写 • 编辑费用报销单的详细信息 • 添加、编辑或删除支出项目 |
一级和二级审批表单
审批表单用于验证报销费用,作为工作流的一部分。
版块 • 页眉是 K2 标识和应用程序名称 • 当前用户的员工数据及审批负责人列表 • 费用报销的详细信息,如日期、名称和汇总资料 • 支出项目,包括日期、说明、币种、汇率和附件 • 审批人意见 • 历史意见 操作 • 批准或拒绝报销单 • 添加意见 • 查看支出项目 |
注:如果报销金额超过部门或审批人的审批额度,那么此报销项就需要2级审批。只要该表单能够显示所有之前的审批意见,那么就由 Renier 和 Eugene 决定他们是否需要使用一个或两个表单来完成多个审批人场景。
我的支出表单
员工可以使用这个表单查看已提交的费用。
版块 • 页眉是 K2 标识和应用程序名称 • 当前用户的员工数据及审批负责人列表 • 费用报销的详细信息,如日期、名称和汇总资料 • 支出项目,包括日期、说明、币种、汇率和附件 • 审批人意见 • 历史意见 操作 • 查看支出项目 • 关闭表单 |
///////////////////////////////////////////////////////////////////////////////////////////////////
准备工作
摄像头已安装在两个隔间外,机器已配置好必需的 软件,冰箱里放满了苏打水,Camtasia 已经准备好 录下两人的活动。 |
///////////////////////////////////////////////////////////////////////////////////////////////////
开始运行
Renier: 已经开始构建表单视图。K2 smartforms 为他完成所有的低级命令;零代码;零耗时;
Eugene: 在用 ADO 连接K2 SmartObjects 的时候,他已经慢在起跑线上了;
18分钟时... Renier: 正在配置一个新费用申请表单 Eugene :仍然在开发费用报销表单 |
|
42分钟时... Renier: 开始创建一个新的费用报销表单 Eugene :仍然在编写费用报销表单 |
|
88分钟时... Renier: 已开始测试费用报销表单 Eugene :仍然在开发表单,已落后 Renier 67 分钟 |
|
117分钟时... Renier: 已完成整个应用程序开始享受余下时光 Eugene :仍然在编写代码 |
4小时... | 9小时... | 第二天... |
Eugene在编写代码 | Eugene在编写代码 | Eugene在编写代码 |
///////////////////////////////////////////////////////////////////////////////////////////////////
结论
“用K2 smartforms开发一个应用程序
究竟比ASP.NET快多少?”
17小时,15分钟,52秒 …
Eugene 终于快完成了。他很疲惫。我们的观点被证实了。我们应该欢呼。
我们推测是快4倍。
但是经过测试发现,我们推测错了。
不是快4倍,而是8倍。
(至少)
1:57:52 | ||
VS | ||
17:15:52 |
“我对 K2 smartforms 有了新的认识。让任何一位ASP.NET 开发者进行此项试验,他们都会得出完全相同的结论 - 这件产品简直太棒了!”- Eugene
用K2 smartforms开发一个应用程序究竟比ASP.NET快多少?的更多相关文章
- ubuntu下使用C语言开发一个cgi程序
主要步骤是: 1. 开发一个C程序(在标准输出中输出HTML字符串) 2. 复制到apache2的cgi-bin目录去 3. 在httpd.conf中开启cgi功能(我似乎没用到,也可以使用cgi) ...
- K8S集群入门:运行一个应用程序究竟需要多少集群?
如果你使用Kubernetes作为应用程序的操作平台,那么你应该会遇到一些有关使用集群的方式的基本问题: 你应该有多少集群? 它们应该多大? 它们应该包含什么? 本文将深入讨论这些问题,并分析你所拥有 ...
- 探索 Python、机器学习和 NLTK 库 开发一个应用程序,使用 Python、NLTK 和机器学习对 RSS 提要进行分类
挑战:使用机器学习对 RSS 提要进行分类 最近,我接到一项任务,要求为客户创建一个 RSS 提要分类子系统.目标是读取几十个甚至几百个 RSS 提要,将它们的许多文章自动分类到几十个预定义的主题领域 ...
- yii开发一个web程序的基本流程
1. 创建目录结构.在前面的章节Creating First Yii Application写的yiic工具可以帮助我们快速完成这步. 2. 配置 application.就是修改applicatio ...
- 开发一个App的成本是多少?
英文出处:savvyapps.欢迎加入翻译小组. 在最近的一个会议上,一个叫Bob的老顾客引用了<App Savvy>(<放飞App:移动产品经理实战指南>)中探讨研发一个io ...
- 【Qt开发】【Linux开发】Qt程序在嵌入式设备(arm) 上运行,鼠标擦除界面的解决方案
笔者最近想在arm开发板上,开发一个应用程序,经过网上查询发现qt作为跨平台开发软件很不错,于是便选择了qt开发,笔者的qt版本是4.8.6的.由于arm的主频太低,在arm上进行开发编译,效率会大大 ...
- 搭建java开发环境、使用eclipse编写第一个java程序
搭建java开发环境.使用eclipse编写第一个java程序 一.Java 开发环境的搭建 1.首先安装java SDK(简称JDK). 点击可执行文件 jdk-6u24-windows-i586. ...
- [Ruby on Rails系列]3、初试Rails:使用Rails开发第一个Web程序
本系列前两部分已经介绍了如何配置Ruby on Rails开发环境,现在终于进入正题啦! Part1.开发前的准备 本次的主要任务是开发第一个Rails程序.需要特别指出的是,本次我选用了一个(Paa ...
- Android(java)学习笔记219:开发一个多界面的应用程序之两种意图
1.两种意图: (1)显式意图: 在代码里面用intent设置要开启Activity的字节码.class文件: (2)隐式意图: Android(java)学习笔记218:开发一个多界面的应用程序之人 ...
随机推荐
- ip变更导致连接不到mysql的解决办法
第一步:ssh连接到服务器 第二步:连接mysql mysql -u root -psqj888 第三步:切换到mysql数据库 use mysql 第四步:查询mysql的user表 SELECT ...
- 在Spring Data JPA 中使用Update Query更新实体类
对于 Spring Data JPA 使用的时间不长,只有两年时间.但是踩过坑的却不少. 使用下列代码 @Modifying @Query("update User u set u.firs ...
- UnicodeEncodeError
UnicodeEncodeError at /admin/shop/product/add/ 'ascii' codec can't encode characters in position 0-1 ...
- weblogic 下载安装部署说明
http://blog.csdn.net/gaofuqi/article/details/36870887/ http://jingyan.baidu.com/article/d8072ac45f57 ...
- (转)HashMap分析
原文地址:http://www.cnblogs.com/ITtangtang/p/3948406.html HashMap的数据结构 HashMap的底层主要是基于数组和链表来实现的,它之所以有相当快 ...
- 基因组组装工具之 SOAPdenovo 使用方法
SOAPdenovo是一个新颖的适用于组装短reads的方法,能组装出类似人类基因组大小的de novo草图. 该软件特地设计用来组装Illumina GA short reads,新的版本减少了在图 ...
- java 多线程7(线程的停止)
notify(): 是很温和的唤醒线程的方法,它不可以指定清除哪一个异常 interrupt(): 粗暴的方式,强制清除线程的等待状态,被清除的线程会接收到一个InterruptedException ...
- Qt之QParallelAnimationGroup
简述 QParallelAnimationGroup类提供动画的并行组. QParallelAnimationGroup - 一个动画容器,当它启动的时候它里面的所有动画也启动,即:并行运行所有动画, ...
- hdu----(1599)最大子矩阵(几何/dp)
最大子矩阵 Time Limit: 30000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- Reverse Integer [LeetCode]
Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 click to ...