设为首页 收藏本站
查看: 1875|回复: 0

[经验分享] [UWP]爱恋动漫BT开发小记

[复制链接]

尚未签到

发表于 2017-7-1 19:03:04 | 显示全部楼层 |阅读模式
  在七月和某个人相识,在七月又和这个人重回陌路,在这个伤感的七月,让我来水一篇博客。
  已经很久没有写博客了,最近现在来写一篇,总结一下这个七月。
  今年的暑假特别的长,大概六月中旬就考完试了,而开学一直要到九月初。中间有两个月的假期,可以好好的“玩”和学学编程了。虽然暑假很长,但是感觉时间过得特别快,每天都是起床,往电脑前面一座,然后天黑了,继续睡觉,就一直这样重复重复。一晃眼好几周就过去了。但总的来说呢,这个七月还是干了点事儿的。
  七月初的时候,回了一趟家,在家呆了大概七天左右,然后就回学校实习去了。说起实习,感觉的确是好尴尬。虽然面试到了一家互联网公司,但是面试的职位是个编辑,题库编辑,就是很苦逼的一天校对文本,文本录入,对着电脑看一天的word,感觉很枯燥,很无聊。所以干了整整七天后,离职了。离职后其实也挺好,我终于有大把的时间来看看编程方面的东西了。
  之前一直学习C#,算是入了微软的坑了,现在反正就是.net方面的都有看,但看的都不多。微软前不久发布了.Net Core 1.0,感觉是个很牛的东西。本着也来学学它的精神,在七月中旬我开始制作一个个人博客(www.cjw1115.com),用的自然就是基于asp.net core了,而在数据存储方面用了ef core和sqlite。由于我的前端功底真的很渣,所以没有怎么做美化界面的事儿,整个博客系统也没有用到AJAX,想着以后慢慢加吧。值得一提的是,作为微软MSP的奖励,我有一年的msdn订阅,各种微软正版软件免费用,好爽!里面还包含有azure的订阅,我自然是把网站全面部署到了Azure上,不过貌似现在也只有Azure的虚拟机的iis支持Asp.net Core吧。
  说的有些跑题了,在七月末,我开始了制作这个爱恋动漫BT的UWP客户端,不过很坑爹的一件事儿是这个爱恋动漫BT和wp一样,也是个小众的产品,它甚至没有安卓和IOS客户端,不过本着练手的原则,我还是简单的开发了一下。
  开发有两个重点,一个就是爱恋动漫bt相关内容展示方面的开发,另外一个就是内置下载器的开发。
  一、就爱恋动漫本身来说,大概有这么几步吧
  1.获取各种资源的接口:这个就很尴尬了,这个网站没有官方app,但是有一个针对移动设备优化过的移动版的web站点,很遗憾,它所有页面全部是由服务器端渲染完成后返回的,整个站点找遍了,连个json的毛都没找到。那所有的数据只能通过解析html来获取了。
  2.数据解析:因为基本页面其实就两个,一个是资源列表页面,用了大量的<li>标签,这个很容易获取;而另一个页面是关于资源的详情展示页面,我在这儿偷了一个懒,把详情展示页面不变动的地方本地化了,把具体的资源描述内容这种变化比较大的,通过webview直接展示,不仅省力,而且还不失美观。
  3.页面设计:关于页面设计,很自然的和官方的页面一一对应就行。用了MVVM,针对这种大量数据的,用数据绑定真的好爽。
  二、下载器方面主要有以下几点
  1.下载器无非就两个页面,一个下载中,一个下载完成,所有数据的存储都使用了sqlite,通过ef core来操作sqlite的确是非常便捷。
  2.整个下载其实完全依赖了uwp自带的BackgroundTransfer类。整个下载过程只需要控制开始,暂停,结束就行了。
  3.有想过做p2p的下载,但是这个工作量应该不小,所以就先缓缓。
  整个工程中,其实都是MVVM和Code-hehind混合使用的,的确设计的很乱,以后应该要好好整理一下,好好做做分层。
  在发布后,我从商店下载安装使用了一下,很明显的两个bug就暴露出来了。
  第一个就是顶部状态栏编程一道白条,遮挡了系统状态栏的所有图标和信息。其实之前在做工大助手的时候也有遇见过,但当时以为是系统的bug,所以没有关心,这次才发现,是有一个判断平台特定api可用性的函数失效导致的(估计是.net native编译有关),所以最后的解决办法就是直接判断平台是什么,而不是判断这个api是不是适用于这个平台。



//不可靠的方法
if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(typeof(StatusBar).ToString()))
{
StatusBar statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();
statusBar.BackgroundOpacity = 1;
statusBar.BackgroundColor = brush.Color;
}
//可靠方法
if ("Windows.Mobile" == Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily)
{
StatusBar statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();
statusBar.BackgroundOpacity = 1;
statusBar.BackgroundColor = brush.Color;
}
  第二个BUG也是最让我纠结的一个,因为在发布版本里面会出现这个问题,但是在调试的时候并不会。后来注意到,发布的时候是全新的.net native编译方式,而调试的时候是传统的编译方式,这就很尴尬了,我必须去用.net native编译后测试,让人最受不了的就是这种编译方式太慢了,编译的时间长到足以让我去打个水,回来再泡个茶,这个还不够,剩余时间还能去上个厕所!不过还好,最后也发现问题了,问题在于,我在项目里使用sqlite和ef时,使用的是ef 7相关的一些程序集,在构造我的实体类的时候,会发生类型初始化错误。后来把ef 7换成了ef core 1.0后问题就解决了。
  顺便附上最权威的相关资源学习地址
  1.Asp.net Core
  2.EntityFramework Core
  哎,不过最忧伤的事儿还是喜欢的姑娘和她男朋友分手了,她却把我的微信删了.......
  并不是吐槽她什么,只是觉着这种处理方式有些欠妥......
  毕竟我没有做错什么......
  求老司机指点!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-390156-1-1.html 上篇帖子: ElasticSearch查询 第三篇:词条查询 下篇帖子: Retrofit2.0 的初步使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表