网上书城总结笔记-阿里云开发者社区

开发者社区> xiaohei.info> 正文

网上书城总结笔记

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/37523821 这次项目的开发,在写需求分析和详细概要设计说明书的时候,是严格按照软件工程规定的软件生命周期开发的 原本的用意是根据文档指导开发程序,但是因为自己经验不足,需求分析不到位,设计说明书编写的内容也是不完整的 以至于到最后,还是变成了程序指导文档的情况。
+关注继续查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/37523821

这次项目的开发,在写需求分析和详细概要设计说明书的时候,是严格按照软件工程规定的软件生命周期开发的

原本的用意是根据文档指导开发程序,但是因为自己经验不足,需求分析不到位,设计说明书编写的内容也是不完整的

以至于到最后,还是变成了程序指导文档的情况。

在绝大部分情况下,不管是说明文档的编写还是程序代码的实现,都是一个团队共同完成的事情

所以在这个时候,一个人势单力薄的形式就很明显了。。。

so~得出结论->写开发文档的时候一定要考虑全面->一个神一样的团队是必不可少的

然后就是开发过程中遇到的问题了

说起来很尴尬

原本是用动软的代码生成器直接生成的三层,实在懒得自己写

然后生成的项目有些命名空间有问题,而且全完没有用的类一大堆

遂通通删掉之

然后看了看清楚了不少的项目

竟然还自己点了点头,表示很满意

之后

开始着手修改项目为抽象工厂模式

然后嫌弃IDAL中每一个数据库的表都要对应一个接口

遂抽象出一个IDalBase<T>的泛型接口

只要一个接口,所有的dal类都继承于它,要添加新的功能时就在添加相应的接口,再让对应的dal类继承并实现

遂删掉生成的IDAL接口

然后又用CodeSmith生成dal层类的代码(中间还有一段自己写生成模板的时间。。。)

刚开始想法是好的,实现了代码重用和抽象,也根据单一职责原则将各个功能都分到不同的接口(除了基本的功能)

然后随着项目的开发,问题就出现了

在IDalBase接口中的基本的方法定义的太草率,很多到开发结束用都没用到

而在中间的时候已经发现了这个问题,遂想修改IDalBase,但是突然发现

只要动了一个,dal中的所有类都要跟着改变

真正的牵一发而动全身啊。。。

而且必须保证表的属性数据类型必须是一样的,如:

根据id查找一条记录

Model.model GetById(int id)

这就要求所有的dal类都要通过int类型的id来查数据库,要是有一个表id数据类型不是int呢?

由于发现的时候项目已经完成一半了,想要重新修改工作量很大。。

只能通过添加功能接口来避免这个问题

这就造成了

IDalBase中的方法很多都没用到

功能接口越来越多(可能有选择恐惧症=。=   太多的接口都不知道怎么命名啊!到最后看起来都是好长好长的名字。。。。)

so~又得出结论->项目的构架刚开始设计的时候一定要想好,不然要么更改(更改工作量很大),要么继续错下去(导致项目结构很糟糕)

在项目开发之始,原本的设想是给管理员设计一个配置页面

在这个页面中可以把整个网站一站静态化

但是后来在实现的时候发现

由于每个页面都嵌套了母版页

而在母版页中有一个地方是每时每刻需要跟新数据并展示出来的

所以又导致了此功能没办法实现~

so~结论是->经常被访问,而不经常改变的页面才是适合做静态页的

在附上为什么要使用静态页的原因:降低服务器和数据库压力,也有利于SEO优化

还有就是一个url重写的问题

在项目开发快要完成之后,才想要进行url重写

但为时已晚

项目中的每个页面的url都已经固定好了

要在更改的话还是那句话,工作量太大不适合我。。。(你是有多懒。。)

so~总结->还是要用什么技术在项目设计的时候一样要考虑清楚!

还是附上已经准备好的url重写的流程吧:

为啥要进行url重写?

简单来说

1.有利于SEO

2.避免在更改网站结构的时候使得用户收藏夹的连接变成死链接

实现的方法:

这里使用UrlRewriter实现

下载地址:UrlRewriter

将dll文件下载下来之后添加到项目引用

在web.config文件中进行配置

1.configSections必须放在configuration节点下的第一项,否则会报错

  <configSections>
    <section name="rewriter"
             requirePermission="false"
             type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" />
  </configSections>
2.接下来将下面的代码添加到配置文件,rewriter节点中,最后一个是根据正则表达式来匹配重写的(推荐)

其他都是写死的,要写很多

<system.web>
    <httpModules>
      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
    </httpModules>

    <httpRuntime executionTimeout="3600" maxRequestLength="1048576" requestPathInvalidCharacters="" requestValidationMode="2.0"/>
    <compilation debug="true" targetFramework="4.0"/>
    <customErrors mode="Off"/>
  </system.web>

  <rewriter>
    <rewrite url="~/Index" to="~/Index.aspx" />
    <rewrite url="~/BookDetail/(.+)" to="~/BookDetail.aspx?id=$1" />
    <rewrite url="~/BooksView/(.+)" to="~/BooksView.aspx?categoryId=$1" />
    <rewrite url="~/DiscountBooks" to="~/DiscountBooks.aspx" />
    <rewrite url="~/GoodBooks" to="~/GoodBooks.aspx" />
    <rewrite url="~/News" to="~/News.aspx" />
    <rewrite url="~/Register" to="~/Register.aspx" />
    <rewrite url="~/RSS" to="~/RSS.aspx" />
    <rewrite url="~/SearchBooks" to="~/SearchBooks.aspx" />
    <rewrite url="~/products/(.+)" to="~/products.aspx?category=$1" />
  </rewriter>
完成了这些配置之后url重写就管用了

例如:用户请求Index,重写之后会请求Index.aspx

最后是项目中用到的一些流程和技术

1.找回密码可以使用的流程:
用户填写用户名和邮箱,点击找回密码
发送重置的密码到用户邮箱
用户可以通过重置的密码登陆并修改密码


2.将网站的配置信息设计一个配置页面提供管理员使用

原来的配置信息是存放在web.config文件中的

好处:不需要改源代码重新编译,直接修改配置文件的xml,保存就可以了
坏处:如果网站已经投入使用,修改配置文件会造成网站重启,会丢失正在操作的用户的状态等信息

最好的方法:在网站的后台管理中,专门写一个配置信息的页面,在这里提供了友好的界面以修改相关的配置信息(配置信息在数据库中存取而不放在配置文件中了)
这时会出现一个问题,当用户的数量很大的时候,如果每个用户请求都要读取数据库中的配置信息,服务器压力很大,这时候可以使用缓存,用户请求配置信息时直接从缓存中拿出,当管理员修改数据库中的配置信息时缓存失效(移除相关的HttpRuntime.Cache)


3.权限控制方式

详情请看

asp.net权限控制的方式

4.网上购买支付功能

asp.net购物车,订单以及模拟支付宝支付(一)---购物车表及添加购物车流程

asp.net购物车,订单以及模拟支付宝支付(二)---订单表

asp.net购物车,订单以及模拟支付宝支付(三)---提交订单

asp.net购物车,订单以及模拟支付宝支付(四)---模拟支付宝支付

5.CKeditor+SWFUpload

CKEditor+SWFUpload实现功能较为强大的编辑器(一)---CKEditor配置

CKEditor+SWFUpload实现功能较为强大的编辑器(二)---SWFUpload配置

CKEditor+SWFUpload实现功能较为强大的编辑器(三)---后台接收图片流程

6.限制用户登录错误次数

7.显示评论的时候为几天前的格式

8.用三层实现多条件检索

9.RSS订阅功能

10.敏感词过滤

最后就是项目开发的时候需要注意的一些小问题:

1.接收Get请求的参数的时候一定要先判断一下是否为我们需要的值,因为用户可以随意修改url中的参数
2.sql语句如select 不要直接写* 写具体需要的字段  
3.考虑很多细枝末节
4.模板页中已经引用的文件在子页面中不需要在引用了,否则可能会报错
5.考虑每个页面是否能静态化和进行url重写
6.使用ajax进行异步请求的时候,要注意对页面的改变
7.客户端服务端双向校验
8.页面静态化和整页缓冲的场景使用
9.记录用户名和id的静态类要放在ui中,因为各个表现层(如:asp.net,手机ui层等)用来储存这些信息的方式都不一样,如Session,Cookie等

10.ui向bll传参数的时候不要使用TreeNode等这些只能在winform中用的有限制的参数,只能传int,string,model这些通用的数据类型

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
[转帖]ASP.NET 2.0中CSS失效的问题总结
ASP.NET 2.0中CSS失效的问题总结 经常有人遇到ASP.NET 2.0(ASP.NET 1.x中可能是有效的)中CSS失效的问题,现将主要原因和解决方法罗列如下: 1,CSS文件路径不正确 这个问题属于Web开发中的基础问题,一般采用相对路径会出现这样的问题,或者样式文件写在了母版页里面,在内容页与母版页不在同一级目录下时会出现这样的问题。
637 0
【OSS 排查方案-7】ossimport 大数据量迁移方案总结
背景: 面临客户不断的将友商的存储数量迁移到阿里云上。ossimport 工具越来越多的暴露在用户端,但是合理的利用 ossimport 工具以及良好的迁移架构数据能否帮助用户高效的快速迁移。但是如果对 ossimport 不熟知,而且迁移架构没有经过测试,反而会降低我们的迁移效率,影响客户的全面战略上云计划安排。
13433 0
Class 1 打造专属云笔记
Class 1 打造专属云笔记
86 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
12072 0
css使用笔记
最近写一个前台页面,因为不用考虑太多兼容性问题,尝试了很多css3的东西,记录下。 1、渐变和边框阴影 最初的视觉稿,上面有很多地方颜色使用了渐变,为了不使用图片,用了很挫的方式来实现:从图片渐变开始、中间、结束部分,用gimp的吸管获取颜色,然后转换成css的渐变。不过因为渐变每个浏览器支持方
1324 0
+关注
163
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载