在软件的设计中,尤其是GUI界面的软件设计中,涉及到了很多的数据和控件之间的交互,数据和远程服务或远程数据源的交互。
控件作为用户与软件交互的入口,在控件中的各种输入信息,需要通过对应的数据结构,传输到存储介质中,这中间涉及到几次数据转化,控件的数据类型到数据结构,数据结构到网路字节流,字节流转化成数据结构,数据结构再转化成存储字节流,最后实现存储。
在上述的操作中,如果任何一步出现了问题,即使是一个最简单的类型转化错误,上述过程都将不可逆回,也就是用户在界面中输入的数据保存之后,再次调用之后不是原来的数据了。
为了减少中间的转化过程,我们可以利用框架或类库所做的自动化的转化工具或类库,如何实现控件和数据结构的交互性操作转化,这就涉及到了数据绑定的问题,数据绑定在解决类型转化问题的基础上,还衍生出了另一个软件工程上的改变,一种设计模型MVC ,因为进行了绑定操作,就可以利用绑定数据源转化,对View层和Model层进行隔离,在Model层实现直接的业务处理。
解决了数据的绑定问题,当调用Contril方法进行业务处理时,又往往遇到了数据结构到存储层或网络层的等待过程,因为保存数据到物理介质或网络介质,是一个比内存操作慢的多的慢速过程,为了给界面层的等待更好的显示,可以将Model层的数据进行一个副本拷贝,利用异步线程对副本进行处理,这样界面层就不需要进入长久等待或假死过程,我们利用异步线程进行数据处理,当处理完毕之后,将返回的副本数据合并到正式数据中,达到了数据的编辑修改目的。因为副本和异步线程的存在,保证了数据的完整性,所有的处理都在副本数据上处理,即使取消了异步线程的处理,也不会对主数据造成影响。