这次试验的起因是一场内部辩论。

“用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快多少?的更多相关文章

  1. ubuntu下使用C语言开发一个cgi程序

    主要步骤是: 1. 开发一个C程序(在标准输出中输出HTML字符串) 2. 复制到apache2的cgi-bin目录去 3. 在httpd.conf中开启cgi功能(我似乎没用到,也可以使用cgi) ...

  2. K8S集群入门:运行一个应用程序究竟需要多少集群?

    如果你使用Kubernetes作为应用程序的操作平台,那么你应该会遇到一些有关使用集群的方式的基本问题: 你应该有多少集群? 它们应该多大? 它们应该包含什么? 本文将深入讨论这些问题,并分析你所拥有 ...

  3. 探索 Python、机器学习和 NLTK 库 开发一个应用程序,使用 Python、NLTK 和机器学习对 RSS 提要进行分类

    挑战:使用机器学习对 RSS 提要进行分类 最近,我接到一项任务,要求为客户创建一个 RSS 提要分类子系统.目标是读取几十个甚至几百个 RSS 提要,将它们的许多文章自动分类到几十个预定义的主题领域 ...

  4. yii开发一个web程序的基本流程

    1. 创建目录结构.在前面的章节Creating First Yii Application写的yiic工具可以帮助我们快速完成这步. 2. 配置 application.就是修改applicatio ...

  5. 开发一个App的成本是多少?

    英文出处:savvyapps.欢迎加入翻译小组. 在最近的一个会议上,一个叫Bob的老顾客引用了<App Savvy>(<放飞App:移动产品经理实战指南>)中探讨研发一个io ...

  6. 【Qt开发】【Linux开发】Qt程序在嵌入式设备(arm) 上运行,鼠标擦除界面的解决方案

    笔者最近想在arm开发板上,开发一个应用程序,经过网上查询发现qt作为跨平台开发软件很不错,于是便选择了qt开发,笔者的qt版本是4.8.6的.由于arm的主频太低,在arm上进行开发编译,效率会大大 ...

  7. 搭建java开发环境、使用eclipse编写第一个java程序

    搭建java开发环境.使用eclipse编写第一个java程序 一.Java 开发环境的搭建 1.首先安装java SDK(简称JDK). 点击可执行文件 jdk-6u24-windows-i586. ...

  8. [Ruby on Rails系列]3、初试Rails:使用Rails开发第一个Web程序

    本系列前两部分已经介绍了如何配置Ruby on Rails开发环境,现在终于进入正题啦! Part1.开发前的准备 本次的主要任务是开发第一个Rails程序.需要特别指出的是,本次我选用了一个(Paa ...

  9. Android(java)学习笔记219:开发一个多界面的应用程序之两种意图

    1.两种意图: (1)显式意图: 在代码里面用intent设置要开启Activity的字节码.class文件: (2)隐式意图: Android(java)学习笔记218:开发一个多界面的应用程序之人 ...

随机推荐

  1. 【摘抄】meta系列用法总结【持续更新中】

    meta标签分两大部分:HTTP标题信息(HTTP-EQUIV)和页面描述信息(NAME). ★页面描述信息NAME变量  name是描述网页的,对应于Content(网页内容),以便于搜索引擎机器人 ...

  2. hiho_1081_最短路径1

    题目 最短路模板题目,纯练习手速. 实现 #include<iostream> #include<string.h> #include<iostream> #inc ...

  3. listview某一项不可点击

    listview 整个都不可操作 listview.setEnable(false); listview 某一项不可点击 重写 isEnable()方法,在方法内部判断position,不可点击的项 ...

  4. 自定义view获取宽高

    View在构造函数初始化并未布局处理,此时宽高均为0,待所有控件初始化完毕后,由上级容器对内部各控件进行布局,此时控件才会具有位置与大小属性,可以通过以下方法获取:1.在ondraw()函数中获取,2 ...

  5. vim Project

    VIM是Linux和Unix下常用的文本编辑工具,在编写代码和阅读代码中经常使用. 但VIM进行代码项目管理时,没有IDE集成开发工具方便,现在提供一个VIM插件Project,可以对代码项目进行简单 ...

  6. 项目解析- JspLibrary - part3

    CRUD read: String sql = "select b.*,c.name as bookcaseName,p.pubname as publishing,t.typename f ...

  7. Nginx + Tomcat 配置

    Windows下Nginx的启动.停止等命令 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动.停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍.1.启 ...

  8. ASP.NET Core身份识别

    Introduction to Identity 66 of 93 people found this helpful By Pranav Rastogi, Rick Anderson, Tom Dy ...

  9. 响应式web设计读书笔记

    1.媒体查询可以在链接link标签和具体的CSS中使用: 2.通过<link>标签的 media 属性为样式表指定设备类型和其他条件  中间用and和()来分隔,如下 <link r ...

  10. 32-HTML辅助方法

    顾名思义,HTML辅助方法(HTML Helper)就是用来辅助产生HTML之用,在开发View的时候一定会面对许多HTML标签,处理这些HTML的工作非常繁琐,为了降低View的复杂度,可以使用HT ...