用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 的时候,他已经慢在起跑线上了;
|
Renier: 正在配置一个新费用申请表单 Eugene :仍然在开发费用报销表单 |
|
|
|
Renier: 开始创建一个新的费用报销表单 Eugene :仍然在编写费用报销表单 |
|
Renier: 已开始测试费用报销表单 Eugene :仍然在开发表单,已落后 Renier 67 分钟 |
|
![]() |
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:开发一个多界面的应用程序之人 ...
随机推荐
- Bootstrap文本对齐风格
在排版中离不开文本的对齐方式.在CSS中常常使用text-align来实现文本的对齐风格的设置.其中主要有四种风格: ☑ 左对齐,取值left ☑ 居中对齐,取值center ☑ 右对齐,取值r ...
- 简单ssh框架整合
Struts2+Spring4 +Hibernate4 首先看看建立项目的框架 第一步 建立web项目 第二步 导入相对应需要的jar包(放在项目WEB-INFO/lib下) 需要导入Spring ...
- 理解 Linux shell 中的一个方言:2>&1
理解 Linux shell 中的一个方言:2>&1 2016-11-14 杜亦舒 前言 在使用 linux 命令或者 shell 编程时,这个用法常会遇到 2>&1 如 ...
- 测试分页查询出数据并分文件导出[java工程]
package cn.shiyanjun.test; import java.util.ArrayList; import java.util.List; public class ExcelTest ...
- ltib学习抄录
linux -- LTIB学习笔记 一 安装篇二 运行篇三 修改工具包 四 编译新的内核 ---------相关资料------------------------------------------ ...
- Hbase之使用回调函数进行批处理操作
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; impo ...
- python操作mongodb之四cp数据库
from pymongo import MongoClient #连接数据库 client=MongoClient('192.168.30.252',27017) #获取现有数据库的名称 client ...
- Sql Server中通配符的使用
Sql Server中通配符的使用 通配符_ "_"号表示任意单个字符,该符号只能匹配一个字符."_"可以放在查询条件的任意位置,且只能代表一个字符.一个汉字只 ...
- php 使用 restler 框架构建 restfull api
php 使用 restler 框架构建 restfull api restler 轻量级,小巧,构建restfull api非常方便! 官网:http://restler3.luracast.com/ ...
- 如何使用JavaScript和正则表达式进行数据验证
利用客户端JavaScript的优势,JavaScript中的正则表达式可以简化数据验证的工作,下面与大家分享下如何使用JavaScript和正则表达式进行数据验证,感兴趣的朋友可以参考下哈 数据验证 ...







18分钟时... 


