首页 > 代码库 > wp8人人监督app开发历程 - (前期调研 > app策划 > 代码编写 >测试 > 上架到商店)
wp8人人监督app开发历程 - (前期调研 > app策划 > 代码编写 >测试 > 上架到商店)
前言
一直想为社会做一点事情,却一直都不知道做什么,策划已久的"人人监督"app终于做了一小半了。
开发了好几款app了,一直没写博文记录在开发app中遇到的问题和技术,这次"人人监督"不能在错过了,一定要坚持把整个开发历程写下来,同大家分享在代码世界中的快乐。
"人人监督" 是一款供民众投诉、检举、监督的一款app,其目的是人人监督以营造和谐的社会!
项目技术
开发环境:Windows8 + Visual Studio 2012 + SQl Server 2008
服务器端:EntityFramework6 + WCFService
客户端:WIndowsPhone8、8.1
框架:MVVM
策划
在笔记本上,手写的,有时间再抄下来!
开发历程
到目前位置已经完成的功能模块:
(按照开发的顺序)
1.整个APP的服务端
2.客户端信息列表展示
3.省市列表
4.发布检举监督信息(可上传图片)
5.登录
6.注册
遇到的问题
起先准备用ashx(一般处理程序)来写服务端的,可一般处理程序就是很一般。
跟朋友交流后,发现问题远远没有我想象的简单,要考虑的问题太多了:比如传输协议用什么,用户信息安全,数据加密,服务端访问权限等等。
考虑再三决定用wcf,因为之前有项目中用过,只会一点点基础用法。
原本以为wcf只是一个类似webservice的很简单的服务,入手后发现仅wcf的配置就够你琢磨一段时间的。
咱们是程序员嘛,不怕,有的是头脑,再三摸索后,发现默认的配置可以供wp使用,唉。
下面就列出遇到的问题:
1.wcf配置问题
在使用wcf的时候一定要为每个操作添加特性,供客户端调用在接口上添加[ServiceContract],行为上添加[OperationContract],如果供web调用,还要加一个特性[WebGet]。
还有wcf的binding,系统提供的绑定以及binding的介绍可以看这里http://msdn.microsoft.com/zh-cn/library/ms730879(v=vs.110).aspx,当时不知道怎么搜关键字,搜了好久才找到。
还有默认binding的属性配置http://msdn.microsoft.com/zh-cn/library/ms731361(v=vs.110).aspx。
还有其他的问题已经记不清了,反正当时是写了很多个demo,有asp.net的,wpf的,Console的,sliverlight的各种测试,查阅了csdn和msdn论坛,才搞定的。
还有wcf exception处理还没搞懂,总之有时间一定要把wcf系统性的看一遍。
2.wcf的寄宿方式和访问
我用的IIS,发布到IIS后,如果端口不是80,会出现经常访问不了情况。这个时候可以在防火墙添加入站规则,将该端口允许外界访问,这个问题也是折腾了好一番。(具体配置有时间会单独写一篇博文记录:IIS网站配置端口允许外部设备访问)
3.wcf返回结果序列化
ef中有个虚拟加载项,一些导航属性不能被序列化,这个时候将延迟加载的对象加上DataContract和DataMember特性就OK了,这里也涉及到了wcf中的契约。(具体情况会单独写一篇博文:wcfservice返回集合对象的序列化)
4.wcf的安全性
一切准备就绪,服务写好了,发布到了IIS了,客户端可以正常引用了。可问题又来了,一旦服务器地址泄漏,那别人就不也可以引用的我的wcf么?
经过一番资料查询后,看到了几种解决方案,有两种我觉得是靠谱的,第一个是安全证书,第二个是自己写验证。
安全证书那玩意好像很高级,我选择了第二中,相比后者而言会简单更好理解,就是在每次请求服务器的时候添加一个Header信息,在头部信息中带一个用户名和密码。
到了wcfservice服务器后在进行判断,不匹配就直接抛出一个您没有权限访问的异常。相比
虽然简单,但是这个比较繁琐,要在没个方法内部都进行一个判断。(以后有时间我会研究一下安全证书,研究完后我会写一篇:关于wcfservice的安全认证的博文)
5.图片上传
wcfservice接收wp8传过来的图片保存的时候要么拒绝访问,要么找不到目录。这样即可:var path = AppDomain.CurrentDomain.BaseDirectory + "Images"; (有时间会单独写一篇博文:WP8通过WCFService上传图片)
未完待续。。。