zoukankan      html  css  js  c++  java
  • 边界接口设计

    用户交互设计原则、模板

    分离具体业务,基于认知规律,抽象出通用指导原则。

     

    总体原则

    l  心智模型:感知;理解;目标、计划、执行、解惑、总结;

    l  一致性:习惯、操作系统、品牌识别、关联软件、软件内部

     

    感知体验

    原则:简洁、对比、流畅

    视觉:配色、布局、排版、动画

    媒体:文字、图像、音视频

    交互:键鼠、触摸、手势

     

    理解内容

    原则:降低复杂度

    主次:重要(基本)、次要(详细)

    分组:同类信息

    分层:面向用户、面向设备

    联想:运用比喻、类比辅助理解

     

    任务处理

    原则:站在用户角度(使用用户语言、工作流、交互流),简单(步骤少、有向导),智能

     

    目标(做什么)

    被动任务通知:紧急信息、重要信息、普通信息

    主动任务导航:常用功能、所有功能(功能分组、子功能)

     

    计划(怎么做)

    分解流程,预计花费时间,分析使用者情绪

     

    执行(做得好)

    输入:模板、向导、默认值

    提交:动作、响应、历史

    处理故障:预防避免、提示改正、恢复、提交故障反馈

    寻求帮助:提示、帮助文档、咨询反馈、远程协助

     

    典型场景

    安装:硬件连接向导、一键安装环境,程序安装向导

     

    调试:部署人员工具箱

     

    培训:演示、试用、多媒体帮助文档、宣传材料

     

    日常使用-主界面

    l  待处理任务:区别重要性、复杂任务向导

    l  常用任务:快捷访问,复杂任务向导

    l  功能导航:提供所有功能的入口

     

    日常使用-功能界面

    l  多模块:划分子功能、划分功能步骤(向导)

    l  数据显示:基本信息(列表)、详细信息;信息分组

    l  表单提交:提供模板、提供默认值、隐藏高级参数;模糊查询、高级查询;

    l  提交响应:主动(即时、长时)、被动(系统通知)、及时紧急通知

     

    日常使用-处理故障

    l  提示:输入错误实时提示、业务逻辑提示、提交后提示

    l  恢复:向导

    l  反馈:环境与日志输出向导

     

    软件升级:自动升级、新功能使用向导

     

    风格指南

    LOG、配色、功能模板、语言词典

     

     

    跨平台接口设计原则、模板

    设计原则

    职责独立:上层决定下层,下层提供可行性验证,上下层依赖抽象

    通信类型:请求响应(即时、长时)、通知

     

    模板-PINVOKE

    会话类型

    同步请求DLL

    类似于System.IO. Stream类的方法

    int Read(byte[] buffer, int offset, int count)

     

    异步请求DLL

    类似于System.IO. Stream类的方法

    IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state)

    int EndRead(IAsyncResult asyncResult)

     

    DLL主动通知

    例如告警信息上报

     

    基本概念

    参数寻址方式

    DoWork(MyStruct x);          要求零级间接寻址。     允许

    DoWork(MyStruct* x);         要求一级间接寻址。     允许

    DoWork(MyStruct** x);       要求二级间接寻址。     禁止

     

    结构类型字节对齐

    单字节

     

    状态模板

    启动

    初始化开始-》各项设置-》初始化结束

     

    正常运行

    基本状态:连接、断开;接口:注册,注销,连接、断开事件通知

     

    关闭

    释放

     

     

    函数模板

    请求

    Int  模块名方法名( [const] 类型1  _参数1 [const] 类型n  _参数n)

     

    类型分类

    简单类型:charchar*

    结构体:Json

     

    输入输出

    参数可以作为输入或输出使用,默认为输入,如果是用于输出需要注明

     

    回调

    XXXCallback(int业务标识, 枚举类型  事件类型,  object 事件参数)

    XXXCallback(int业务标识, object 参数)

     

    同步请求DLL

    重构:去除超时参数(由实现方决定是否超时,然后通过返回值体现)、不加Sync

     

    异步请求DLL

     

    DLL主动通知

    代码模板


     

    模板-SOCKET私有协议

    会话类型

    请求:例如链路建立与链路响应,支持一次请求中包含多条关联报文

    通知:例如心跳报文、GPS信息上报

     

    基本概念

    报文格式

    报文 = 报文头 + 报文内容

    报文头格式如下

    字段

    类型

    长度(字节)

    说明

    起始标识

    Int16

    2

    固定为0xAAAA,用于识别报文开始

    报文内容长度

    Int32

    4

    后面所有字段总长度

    功能标识

    Int16

    2

    用于识别报文类型

    注册标识

    Int32

    4

    类似于动态密码,客户端注册成功后获得

    发送方事务标识

    Int32

    4

    由发送方指定。当会话类型为请求型时,用于区别发送方的不同请求;当会话类型为通知型时,固定为0

    接收方事务标识

    Int32

    4

    由接收方指定。当会话类型为请求型时,用于区别接收方的不同请求,特别的,会话开始的第一条报文,发送方的该字段填0;当会话类型为通知型时,固定为0

     

    事务标识

    以链路建立为例,正常流程是客户端发送“链路建立”,服务器端发送“链路建立回复”。客户端发送时,在报文头填写“发送方事务标识”为XX不为0,可以用递增的方式区别不同请求过程),“接收方事务标识”为0;服务器发送时,在报文头填写“发送事务标识”为YY不为0),“接收方事务标识”为X

    如果客户端发起对同一号码的两次跟踪,那么两次跟踪的“发方事务标识”应该是不同的。

    一个报文如果发方事务标识和收方事务标识都为0,表示是通知型会话;如果发方事务标识不为0,收方事务标识为0,表示请求型会话的第一条报文;如果发方事务标识和收方事务标识都不为0,表示请求型会话,但不是请求过程中的第一条报文。

     

    注册标识

    逻辑上用于鉴权,类似于动态密码。服务器端和客户端通信的第一组报文就是注册与注册响应(链路建立与链路建立响应),注册成功后,客户端获得注册标识,之后服务器和客户端通信的所有报文的报文头中,都包含该注册标识。客户端重新注册后会获得新的注册标识。

     

    变长报文

    有些报文中的部分字段是可选的或者是变长的,都可能导致报文的长度是可变的。这就要求,解码报文时需要逐字段解码。定义报文的字段时,用(*)表示该字段是可选的或是变长的。

     

    解码规则

    接收到的所有字节存放在接收字节队列中,先依据起始标识(0x55AA)寻找到可能的报文头,解码报文头,获得功能标识、报文内容长度、注册标识,验证功能标识合法性、验证报文内容长度小于等于1000、验证注册标识的合法性,如果验证不成功,继续寻找可能的报文头,如果验证成功后,读取报文内容字节,依据具体功能的报文结构逐字段解码报文内容,如果解码成功,则在队列中截掉该报文对应的字节(如果报文头之前还有字节,也截掉),如果解码不成功,继续寻找可能的报文头。

     

    字节序

    short(int16)int(int32)、long(int64)ushort(uint16)uint(uint32)、ulong(uint64)采用网络字节序编码,关于网络字节序的具体概念,请参见MSDN或是百度。

     

    单字节对齐

    因为服务器与客户端都是X86/X64平台,对字节对齐没有特殊要求,所以采用最简单的单字节对齐。

     

    代码模板

     

    模板-桌面应用程序与网页

    会话类型

    桌面应用程序发起请求

    例如:桌面应用程序使用定位功能,发起在网页中显示地图位置的请求

     

    网页发起请求

    例如:在地图中已定位的图标(对应一个人)上,发起在桌面程序中对该用户的呼叫

     

    基本概念

    桌面应用程序

    对象: System.Windows.Forms.WebBrowserHtmlDocument

    成员:GetElementByIdInvokeScriptAttachEventHandler

     

    复杂参数传递:JSON方式

    对象:JavaScriptSerializer

     

    状态模板

    桌面应用程序和WEB客户端的状态同步

    桌面应用程序:属性(简单类型、各种集合类)

    WEB客户端:JS全局变量(简单类型、Array对象)

     

    代码模板

     

     





  • 相关阅读:
    浅谈 js字符串 trim 方法之正则篇
    各大型网站使用的服务器空间运行环境盘点
    博客打开慢?请禁用WordPress默认的谷歌字体!
    巧妙设计:让页面活起来
    最流行的JavaScript库jQuery不再支持旧版IE
    Spring各个版本源码下载地址
    mysql 修改字符集
    Spring AOP aspectjweaver.jar与aopalliance-1.0.jar 下载地址
    <<Java | Java正则表达式 | 学习总结>>
    <Java并发编程实战 | 前言 | 学习总结>
  • 原文地址:https://www.cnblogs.com/wangk/p/5731479.html
Copyright © 2011-2022 走看看