Web项目开发小结
经过近4个多月的历程,该系统的第一阶段也算是完成了,总算是能挂到测试环境让人去测试,现在只等待系统上线,以及下一阶段的开发进行,相信也不会很久了,不过能够在年前将这个东西弄完,也是算为2015年做了一个稍微好点的开端吧。
说起这个系统,也算是泪牛满面了。从项目的需求分析阶段开始说吧,其实这只是风控部门的一个构想,他们将这个诉求提到公司高层那里,得到上面的批复和肯定,但是需求并不清晰,只是大概知道这个东西做好以后,可以更加的方便风控部门进行数据分析,不过也会方便自己部门进行工作量化,同时规范自身的主体业务,明确细分工作要点...大概可以这样理解吧。虽总裁关注首肯,可是这个系统毕竟由外部门主导力推,对己方来说,这些关键性数据是并不愿意共享到其他部门去的,所以刚开始打打太极,经理的说法是,先把本部门的工作做好,一定要保证现有的系统稳定无误的运行,配合好各区域的工作是最重要的,这个东西呢以后还不知道做不做呢,让我工作重心放到现有工作上(说说自己的工作:一个人在战斗,并不是专业的IT Team,属于一个公司的部门的系统工程师,全心全意为本部门服务,负责项目开发,系统维护,数据查询,各类权限管理,外部沟通。端茶送水,捶脚按摩,陪吃陪聊,拍拍马屁等等这些都不是我工作的内容....),因为承担这样一个角色,就注定了后来的路并不好走。
刚开始进度那叫一个慢,因为己方不太愿意做这个东西,因此一个礼拜顶多就一两次两部门会面讨论该需求,每次不超过1个半小时,如此下来,讨论的结果,2015年7月份完成,按上面的意思,不用急,先处理好自己的事情,每天花2个小时开发就好...
然后就开始着手做了,手中拥有的资料就是,每次讨论后的笔记,若干个Excel表格,还有断续的记忆,只知道把一些数据录入系统,好吧真的只是录入数据到系统而已....可是问题来了,风控部门是那么的“贴心”,担心我一个人忙不过来,开发过程有难度,表示该需求的所有数据表他们请IT部门的老外主管设计,我只想说你们闹够了没有,他都没来参加过任何讨论,参加完讨论的我都觉得这些数据之间的关联并不清晰,做开发的又不是他,让他去设计这些表结构,我是不是得按照他的建表思维进行开发呢,这个时候让一个外来人横插一脚,难道外来的和尚真的会念经??当时就是很排斥,不过反抗无效。又经过了多少天,数据表的栏位以Excel发给我了,我只想说,除了用Excel来传达这种很关键的信息,就不能用别的吗,没有文字说明,每个字段都不知道是啥,开发个毛线,一大堆表,就只是给了这些表的关系图,看图很容易理解啊,各种主外键相关,但是具体到每个表里面是什么,Excel中无文字说明,接下来的事情就开始画蛇添足了,我只能花时间去理解这些表,遇到不懂的电话咨询对方,总之越看越觉得怪怪的,在这期间不断的有栏位添加,删除,修改,因为根本就是不合逻辑的。但是咱们有困难也要上,要知道自己是专业的,勉强的理解了这些数据表的结构,当我在数据库中按照他们的提供的方案建好了表以后,她们又提供了Excel,注意又是Excel 啊,里面是她们想要的数据,以及她们立案时候能提供给我们的东西,坑爹啊,完全就与这些表关系不大。向经理反馈之后,得到支持,放手去做吧,按照你的想法,能把该项目需求实现就行,不按照她们的数据表进行开发了。那么就开始吧!
这个纠结的过程用10000字也说不明白,还是我想原因在于,这里核心业务不是软件开发,并且项目是做着内部通用,所以才会显得杂乱无章,不过也让我有了以下的认识:1.跨部门的沟通的重要性以及技巧性,要想让双方达成某一个共识,并且为之向前走,一定要不断地去推,不断跟进。2.同时要不断地提出在这个过程中所发现的问题,看法,以及意见,有问题当场解决,不能解决的记录下来。3.开会必须做笔记,不要过分自信自己的记忆力和理解能力,因为转身你可能就会忘或者记错。4.不要轻易的做承诺,也不要轻易地答应外部门或者客户的一些要求,因为在你看来或许是合理的,用技术手段是可以实现的,但是要知道有些东西,你的老大他同不同意,尤其是部门数据这一块,以及设计到自身业务的这一块,很多管理者都有这样的想法。他们想的是,一个新的东西提出来,最好不要影响到现有的工作流程和业务。所以当外部门的人员与开发人员联系,表示要修改下需求或者新增某一个功能,凡是涉及业务的,不可以私底下答应,一定要请示,或者放到每次的会谈中间来讨论,或者邮件批示等等。5.信息要及时互通,其实就犹如开发过程中,实现了一部分功能,真的需要拿出来给用户去看看,可以不用测试,让他们只看UI,或者看一些模拟填充值,这样对于以后的开发顺利进行是很有作用,因为可以及时发现问题,同可以得到反馈,不是很清楚专业的项目组中,是一个什么样的流程。。。
开发工具:vs2008,sqlserver2008,that‘s all,使用ASP.Net + js + Jquery + html + css,基于Web Form的系统。整个的过程还是比较顺利的,不过还是遇到了一些很奇怪的问题,不过最终都是得到了解决。
问题1.http://q.cnblogs.com/q/69513/,已经提问了,当时纠结了很久,不过回答者给了一个思路,问题得到很好地解决
问题2.$.ajax方法请求的数据默认是带有缓存的,更新数据库中的基本资料表,它获取的数据还是旧的数据,因此要加上cache:false.如果两个$.ajax方法想让其顺序执行,就需要加上async: false
问题3.上传附件。如果用asp.net自带的UpdatePanel去实现上传附件时的局部刷新,这是不能实现的,后台是无法获取文件信息的(Request.Files.Count = 0),因此每次点击上传,都会在客户端和服务器端建立一次请求链接,此时肯定页面会刷新,而页面上不仅仅只有这个上传附件的模块,一旦刷新,那么表单中的其他已经填写的数据就会被重置,或者更改,这个时候想到的解决办法是:点击上传附件按钮,使用window.open方法,打开一个单独上传附件的页面,在其中进行附件上传的操作,但是把母页面的GridView放到UpdatePanel中,然后添加一个Timer,Timer事件中进行绑定附件信息的操作,那么当我们在Open出来的窗口上传附件时候,就可以看到母页面的GridView局部刷新,并且并不影响到页面中其他的元素,只是这样设计有个问题就是,因为有timer,所以当页面打开的时候,就会一直不停地访问数据库,进行附件数据绑定,无形中增加了服务器的压力。
问题4.将Excel中的数据导入到数据表中的时候发现,有的单元格的值会奇怪的miss,看看单元格中值的长度,并没有超过数据表字段的最大长度,但是后面发现该Excel的数据中,除去表头的第一行数据是起到关键性作用的,如果第一行的数据中某一个单元格是以2014-02-02 开头,不论后面接了什么数据,该单元格所对应的列就成为了datetime类型,以后该列的其他单元格就根本没法转变成datetime就导致了数据丢失,为了避免这种情况,让所有列都是以文本格式处理,需要加上IMEX=1 ,详细代码:
strConn = "Provider=Microsoft.ACE." + "OLEDB.12.0;Extended Properties=\"Excel 12.0;IMEX=1;HDR=yes;\";Data Source=" + fileName;
这样就不会出现那样的问题了。
总而言之,所用技术并不复杂,只是业务转的比较繁琐,需求也在不断更新,页面的UI都随着不断变动才是我的痛。不过第一阶段暂告一个段落,准备回家过年了,心情大好呀,这段时间有GF映红的陪伴,跟她在一起真的很幸福,明年继续努力,创造属于我们的未来,好好工作,好好生活,nice~