WinForm WEB交互设计
沉沙 2018-05-18 来源 : 阅读 1064 评论 0

摘要:用WinForm做东西,在交互这一块,通过窗体、按钮和事件等,可以很方便快捷的做出比较复杂的交互。但我们发现,用Web做这种交互,则非常难。原因何在?

    1.用WinForm做东西,在交互这一块,通过窗体、按钮和事件等,可以很方便快捷的做出比较复杂的交互。但我们发现,用Web做这种交互,则非常难。

 

    2.原因何在?细细分析,比如登录。WinForm的窗体,打开时,时未登录的。登录后,首先后台数据发生改变,比如后台会有一个类,记录当前登录的账户信息。而点击登录按钮后,前台界面元素也发生相应改变,比如登录信息输入框没了,变成了用户信息栏。仔细分析后,还可得知,这种改变,是持久性的。而对于Web,由于Web是无状态的,每一次更新后(刷新\post\跳转 等),前台后台的界面,与网页上的即时数据,都无法持久化的保留。虽然,Web目前有cookie和session等可以保存数据,但没有一种机制,可以像WinForm那样保存界面的状态信息。

 

    3.综上,网页交互设计之难,难在所有的状态都需要设计师和程序员去手动维护。对于WinForm,它不仅帮你维护了UI的状态,通过绑定,UI还可以关联部分数据,因此WinForm实际帮你维护了所有UI状态和部分数据状态。而对于Web,所有状态,都必须自己手动维护。

 

    4.对于Web交互,我们应该怎么做?

        4.1 由于UI无法维护,因此,对于单个 UI,我们只能通过把它的状态进行数据化,通过维护数据,来达到维护UI的目的。这需要很大的工作量和设计量。

        4.2 不仅要维护单个UI,还要维护与UI相关联的步骤的状态。举个例子,程序一开始打开,为显示最初数据,并且,并未登录。此状态假设为1.登录后,界面上还是显示相同数据,但登陆框没有了,取而代之的是显示当前用户信息。此状态假设为2。WinForm通过窗口状态的自动持久化,把这个状态自动维护了,但对于Web,我们需要自己来维护。

        4.3 数据的状态。比如,WinForm下的全局数据保存类、与当前UI关联的数据类等,都需要我们自己去维护。

 

    5.基于网页模板与状态机的网页交互设计

        5.1 有了以上分析,我们可以得出一个Web交互设计的方法:基网页模板,与状态机的网页交互设计。

            5.1.1 组件拆分:尽量把网页,拆分为单个功能的组件,组件实际上是 网页html的一部分(View),以及它需要的数据(Data),加上操作它的方法(Controller)。注意了,这有点像MVC,只是,此处的Controller仅仅为一个方法体,与Asp.net的MVC种的Controller无关。

            5.1.2 状态划分:按流程,把每一个步骤需要的界面,做一个全局唯一的标志,每个标志都形成一个网页模板。当然,流程也要弄清楚。流程主要有两个,第一是当前状态是从哪个状态来的,以及当前状态通过交互后,会移动到哪个状态去。

            5.1.3 状态分支(流向)判断:如果一个状态,会跳转到多个状态,则如何判定当前状态应该跳转到哪个状态,并且,应该先做哪个判断,再做哪个判断。

 

    6.总之,这种设计方法,非常复杂,而且耗时,但它是网页交互设计的最基础原理与方法。如果能有页面控件或其他设计方法,能减少这种原始方法使用,则尽量避免。但实在无法避免的情况下,也只能采用它了。

        这种方法复杂且耗时的原因是,它把每一种静态的状态,当成一个原子状态,因此,一些过程比较多的复杂交互,就需要分解成很多个原子状态,无论是状态维护还是数据交换,都非常麻烦。

 

    7.在以往的开发经验中,网页设计者实际上采用的是一种低复杂度的方法。

       低复杂度:它基于Action这个主状态。比如,用户浏览主页时,Request里的Action为NULL,此时只需要显示主页信息,以及显示用户登录控件就行了。然后,当用户输入用户名和密码,进行登录后,Request里的Action变成"Regist_Test",然后,基于这种状态,开发者就知道,此时应该验证用户名和密码,以及进行登录测试了。如果登录失败,则Action变成"Regist_Fail"(实际上,Action只是用来区分客户端的操作,服务端的状态转变,并不需要输出到Action。但为了规范以及方便调试,可以用Action记录整个系统的状态,整个系统是包含了服务端和客户端的)。基于这种Action状态转换,可以比较方便地设计出基于状态转换的网页。


本文由职坐标整理发布,更多相关知识,请关注职坐标设计创作交互设计频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程