HTML5技术

领域驱动和MVVM应用于UWP开发的一些思考 - durow(3)

字号+ 作者:H5之家 来源:博客园 2015-10-31 09:17 我要评论( )

这样MVVM和DDD中的几大样算是全了,可以开始了。计划是做一个类似记事本一样的东西,可以添加标题,内容,并进行分类。应用会记录添加时间和最后编辑时间。业务逻辑简单,需要数据库操作,所以看了下UWP的数据库操

这样MVVM和DDD中的几大样算是全了,可以开始了。计划是做一个类似记事本一样的东西,可以添加标题,内容,并进行分类。应用会记录添加时间和最后编辑时间。业务逻辑简单,需要数据库操作,所以看了下UWP的数据库操作,然后就被啪啪啪打脸了。

UWP貌似只支持SQLite本地数据库,不过SQLite也行啊,反正下几个dll引用一下,数据库操作封装到Infrastructure,实体映射封装到Domain的Repository,有强大的理论武器,怕什么。结果看了下UWP中的SQLite操作然后就脸肿了,UWP中SQLite数据库操作不是基于ADO.NET实现的,微软自己包装了一套叫SQLitePCL,实在太简单易用了。两行代码就执行完数据库操作,但获取的数据并不是DataSet或DataTable那种数据列表,只能获取SQLite对象然后一行一行读取数据,或者自己封装成DataTable那样的对象,返回到领域层,再由领域层映射为领域层对象。我是有多蛋疼才会那么做啊!好吧我真的那么做了,只是为了试一下分层,以后UWP开发中绝对不会第二次这么做了。以后在需要SQLite数据库操作时直接在领域层中获取数据并映射成领域实体对象,好吧,在领域层中出现了SQL语句,这脸打的,不过我有法宝:任何设计都要看场景!UWP中真的没有必要把数据库操作放到基础层,可以把UWP中的SQLite看作已经封装好了的基础层的功能,就差一条SQL语句当参数了。当然UWP上也有比较成熟的ORM工具,不过我没有使用。

0x07 实践后的想法

果然实践出真知。

还有就是由于刚开始学习UWP,很多地方不太熟悉,有些希望达到的效果实现起来比较慢,所以这个实例最终还没有做完。后面边学边做吧,牵扯到的一些技术问题都解决了估计也就入门了。另外在使用之前自己写的简易的MVVM框架去实际开发UWP应用时也发现了框架的一些不足,例如页面导航用到Frame,所以在ViewModelBase中加入了Frame方便在ViewModel中导航,也体会到了设计时显示测试数据的重要性,无需运行就能看到数据显示的样子,可以直接在设计界面观察效果。为此加入了ViewModelLocator,在ViewModelBase中加入了InitTestData()和InitRealData()等,根据是不是DesignMode加载不同数据等等,这些等后面单独写一篇文章吧。

看了领域驱动的一些文章后对WPF开发也有很大的启发,后面再做项目的时候可以从领域层的业务逻辑开始,分析完领域层后由擅长数据库的人员去设计数据库表和存取方法,只要最后按照领域层需求提供相应的操作即可,领域层定义和实现Repository接口,基于接口完成业务逻辑的编写,应用层调用领域层和基础层完成程序的功能和交互,开发界面的只要在需要数据的地方绑定数据,在需要执行命令的地方绑定命令就可以了。

第一次写这么长的文章,感觉想说的东西很多,不知道该怎么写,写作能力太差啊。写了3个多小时感觉乱七八糟的也不知道有没有说明白,好吧,反正我自己是越写越明白了。最后还有一点感受就是虽然红轴比较轻,打字时间长了手也会酸啊。

0x08 相关下载

https://github.com/durow/TestArea/tree/master/UWPDDD

示例还没有写完,不过大概框架有了。还需要边学习边完善。

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 从USB驱动器运行Windows 10 - SmallProgram

    从USB驱动器运行Windows 10 - SmallProgram

    2017-03-11 09:01

  • vue系列之MVVM框架 - zhaobao1830

    vue系列之MVVM框架 - zhaobao1830

    2017-02-16 13:00

  • MVVM - 王小帅0401

    MVVM - 王小帅0401

    2016-12-07 17:00

  • Vue.js 和 MVVM 的小细节 - 一像素

    Vue.js 和 MVVM 的小细节 - 一像素

    2016-11-08 14:00

网友点评
a