基于ASP.NET的微信开发心得体会(二)

项目框架:

        说白了,之前一直没有接触过什么框架,对框架这个概念,更是一无所知,举个例子。。。在本科的时候,写的一些最基本的大作业(如XXX管理系统什么的),对于数据访问层的功能实现,都是用ASP.net中自带的sqlcommand类实现,写起来很繁琐,而且数据库中的每一张表,都必须人工手动地将其映射到应用程序中,然后进行相关增删改查的操作。

        在斟酌一番后,采取WinForm框架(没有做很深的了解),该框架能够自动将表映射成为一个实体类,其增删改查方法均是这个实体类中的类方法,因此,省去了大量时间去研究增删改查的代码实现(好吧,其实现在我才知道,这是框架最基本的功能之一)


数据库设计:

       在数据库设计阶段,所有的表,都是根据业务逻辑来考虑与设计,而前期的需求做的完整与否,直接影响了数据库设计的全面性,因此,在设计的时候,发现了很多问题:

        比如,当第一个版本的数据库设计出来之后,并在项目开发中加以利用之时,会发现很多功能的实现,需要中间的连接表,如用户表与课程表,多对多的映射关系,就必须要通过连接表来实现多对多的映射。

        再有,数据库字段的设计,这一点感触比较深刻,在后台管理中,课程上传(主要是上传图片,涉及到路径的保存),由于课程图片命名是按照“课程名+时间戳+随机序号”的命名规则(确保图片名的唯一性),而且在上传时,数据库中图片路径(一次上传多张图片)保存是采取字符串拼接的方式保存(这样前台获取这个路径只需要用split方法解析一下字符串就能获取每一张图片的路径),图片的路径字段(PicUrl)当初设计的时候,字段长度没有考虑得十分详细,仅仅只设置了varchar(50),结果在后台管理系统中上传多张图片的时候,就发生了比较尴尬的问题:发现图片已经上传到了服务器,结果发现数据库中的字段却是空的。。。。让人郁闷了比较长的时间。

      心得:

          在这个项目中,数据库的设计,其实也有点类似于增量模型,首先对核心功能分析后,设计相应的表,而且必须保证这个功能模块所涉及的表,必须正确而且不妨碍后期因为其他功能需要而添加的表的设计。最好还是在一开始就尽最大可能保证数据库的设计完整而全面。。。。不过这个过程最需要的是经验的积累。


业务逻辑:

    一、线上课程教学:

     这个项目,核心功能是“课程教学”,即采用图片轮播+独立音频的方式来实现,这里当初最开始,甲方的想法是采用视频,结果等我把功能都实现了之后,又说采取视频的形式占用的带宽较大,影响性能,最好改用ppt的展现方式,当时我一听,彻底懵逼了,卧槽,这尼玛也能行?

    PS:当时脑子里的想法,受他影响,是一副这样的画面:在HTML页面中加载ppt,效果各种绚丽,各种XXXXX,而且还要再移动端进行展示,我尼玛,可以选择狗带了。。。。。后来找了一下相关的文档,发现也不是不可以(毕竟是采用ASP.NET+PPT的开发思路,都是微软的东西,应该会有相关API文档可以查阅,但无奈的是,实现起来比较复杂)。后来还是采用了图片轮播的方式来代替ppt(类似于相册浏览一样),这样一来,实现思路就简单了许多。

    无非主要解决的问题就是如下几个:

   1、如何实现图片动态加载,因为用户在浏览图片(或者说课程),我们不可能将全部的图片(一门课通常最少也得有五六十张图片)都加载出来,然后再给用户展示,这样做的性能太差,而且,那流量走的。。肉疼。。(土豪就随意啦)。

   2、如何实现图片的轮播,因为这个项目是在移动端上进行展示,用户在浏览图片的时候,从习惯上来说,都是采取左右滑动的操作习惯来观看上一张或者下一张图片。

   3、图片针对不同移动端的自适应问题,因为手机有不同型号,不同的操纵系统,带来的影响就是屏幕的大小与分辨率的差异,因此,必须要处理好图片的自适应问题。使其充满整个屏幕而不变形。

   4、移动端横竖屏的问题,因为在开发的时候,发现,针对屏幕较小的手机,若是采用竖屏的模式来浏览图片时,图片往往显得很小,看的很费力,因此最好是能够实现一种效果,让用户在点开课程的时候,就将屏幕横置。

   5、针对横竖屏的问题,必须要考虑手指滑动事件的差异,当手机处于竖屏的时候,手指滑动事件是左右滑动,而当手机变为横屏的时候,则手指的滑动事件就变成了上下,因此,针对不同的情况需要采取不动的事件。

  

二、我负责的其他功能模块:

       线上课程功能模块,主要展现的信息,必须包括线上课程列表的展示,线上课程购买(涉及到微信支付),线上课程试听(在购买之前,用户能够试听,而且仅仅是让他听音频),线上课程教学(购买线上课程之后,进入学习页面进行学习。)以及后台管理系统对线上课程增删改查实现(其中添加线上课程与修改线上课程实现起来主要是对图片和音频上传的处理比较恶心)。

       线下课程功能模块:这个模块实现起来就容易多了,线下课程采取的是线下报名的方式,类似于讲座一样,用户能够自行发布线下课程的信息,只不过需要通过后台管理员的审核。包括展示列表、详情、以及后台管理系统对其增删改查的整个完整的功能模块。

       好文功能模块、活动功能模块、招工招聘功能模块。。。。。。这些功能模块大体上都是与线下课程功能模块比较类似。。。然后都由我来负责完善。


三、微信接口知识的扩展。

      以上是针对项目的基本业务逻辑,但是这里还需要提到的一点就是,微信的接口,

     因为我们需要弄一个个人中心(类似淘宝中我的淘宝一样,用户可以看到自己的订单啊,购买的课程啊,或者成为哪些学堂的VIP啊什么的,还有用户的昵称、头像、性别等等等等等等等等等等)。

       以及实现支付的功能(你丫都是说基于微信的项目了,基本上就是用微信支付)

      通过代码的方式实现公众号里菜单的自定义。

      用户关注之后,消息的自动回复。

     这些。。。。我还是继续偷个懒,在下一篇博客里进行详细说明好了,毕竟想要在一篇博客里全部说完。。。。嗯,其实就是我不想敲了,回头再说=。=

     



               




你可能感兴趣的:(微信项目开发)