电子商务黄龙林.docx
- 文档编号:24730684
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:9
- 大小:19.90KB
电子商务黄龙林.docx
《电子商务黄龙林.docx》由会员分享,可在线阅读,更多相关《电子商务黄龙林.docx(9页珍藏版)》请在冰豆网上搜索。
电子商务黄龙林
电子商务系统课程设计
题目:
×××企业电子商务系统开发与设计
目标:
利用自己掌握的行业信息、公司业务运行情况结合所学的电子商务系统开发知识实现一个明确的电子商务系统。
要求:
系统功能明确,符合企业战略目标,能有效结合企业运营现状成为企业的辅助或者主要的宣传、管理、销售的商务平台。
根据企业特点自行选择B2B/B2C/C2C的商务系统类型。
举例:
(汽车行业电子商务系统的分析设计)
功能要求:
信息公告、报价、广告、汽车搜索(快速找车)、经销商报价、二手车市、广告位招商、论坛(按照品牌划分、发帖权限、会员管理、IP管理)、客户信息提交、车友博客、IP锁定
网站参考:
汽车之家、济南汽车网、易车网、爱卡汽车网
1总体设计
1.1平台及开发要求
平台:
NET2.0
语言:
C#
开发平台:
VS2005或VS2008
数据库:
MSSQL2005
1.2编码规范
详见《C#编码规范》。
1.3程序相关性能方面
程序是代码编写出来,代码编写的好坏直接影响着程序运行,下面介绍一些通过编写代码提高性能的常用方法。
1.3.1.1关于页面处理
服务器最终发送到客户端的是页面的内容,减少页面生成时间和过程,可以提高性能。
建议方法如下:
✍应尽量减少页面文件的大小,一般将CSS和脚本存为单独的文件;不要将多个任务放在一个页面中;不要指定服务器控件的ID为比较长的字符串。
✍禁止使用Debug=“true”,减少页面生成过程中生成额外的调试信息。
✍使用Server.Transfer而不使用Reponse.Redirect,减少服务器和客户端之间的往返。
✍尽量使用客户端验证,减少服务器和客户端之间的往返。
✍在适当场合使用服务器控件,如果不需要在回发是保持状态,如果显示数据是静态数据,如果不需要在服务器端用代码访问控件,如果不需要回发处理,如果显示的是只读数据,就可以考虑不使用服务器控件。
✍尽量少用DataBand方法和DataBinder.Eval。
1.3.1.2Application对象和Session对象
✍使用静态属性存储数据而不使用Application对象,在Application对象里存储只读类型的数据将会提高性能。
✍尽量使用InProc模式的Session。
✍在Session里存储基本类型的数据减少系列化所消耗的资源。
✍如果不使用Session变量,使用EnableViewState=“false”禁用它。
✍如果不修改Session变量的值,将使用ReadOnly属性设置。
1.3.1.3关于数据访问
✍尽量使用存储过程返回数据,不要直接在代码中进行查询。
✍在数据库中只返回有用的数据结果,不要选择不使用的数据字段。
✍尽量使用DataReader进行数据绑定,DataReader是单向只读的。
✍尽量一次返回多个记录集,而不是每个记录集分别打开一次数据库连接进行查询。
✍尽量晚地打开数据库连接,尽早地关闭数据库连接。
✍使用连接池提高性能,不变动连接字符串。
✍使用ExecuteNonQuery方法执行不返回数据的操作;使用ExecuteScalar方法返回单个结果的操作。
✍如果多次使用相同的查询,使用CommandPrepare。
1.3.1.4关于代码优化
常用代码优化方法如下:
(1)字符串操作,不要使用strVar==””来判断字符串是否为””,使用strVar==String.Empty代替6它或者使用strVar.Length==0来判断。
另外多字符串连接使用String.Concat()方法或者StringBulider对象。
(2)不要使用而下方法进行循环:
string[]arr=newstring[]{“1”,”3”,”3”};
for(inti=;i //执行代码 } 最好先定义intarrLength=arr.Length,然后循环for(inti=;i (3)避免在循环里创建对象。 例如: for(inti=;i<100;i++){ SqlConnectioncn=newSqlConnection(); //执行代码 } 建议使用如下代码 SqlConnectioncn=newSqlConnection(); for(inti=;i<100;i++){ //执行代码 } (4)不要使用异常控制程序流程,如: voidUserExists(stringuserId){ //执行代码 if(! dr.Read()){ throw(newException(“用户不存在”)) } } 建议采用如下方式代码: BoolUserExists(stringuserId){ //执行代码 returndr.HasRows; } (5)使用for循环代替foreach循环遍历集合内容。 (6)数组是所有集合中最快的,如果没有特殊需要,尽量使用数组代替结合。 ✍ 2系统体系结构设计 系统架构采用基于Microsoft.NETFramework的N-层体系结构。 N-层体系结构的核心目的是为了适应系统未来业务的发展,满足多专业、多形式等复杂性要求,通过软件分层高内聚、低耦合原则,实现易于扩展、维护和重用的系统要求。 系统体系架构分为表示层、业务逻辑层、资源访问层和信息资源层。 2.1设计说明 如上体系架构图,系统表示层、业务逻辑层和数据访问层的架构全部建立在Microsoft.NETFramework2.0基础上,实现三个层次之间数据访问。 业务日志和异常日志记录采用开源框架Log4NET。 2.2表示层 表示层一般由UI(UserInterface)和UI控制逻辑组成。 ✍UI(UserInterface): UI是客户端的用户界面,负责从用户方接收命令,请求,数据,传递给业务层处理,然后将结果呈现出来。 共享数据库系统表示层是利用ASP.NETForms(包括HTMLControls、WebControls等等)、母版页(Master)、主题/皮肤(Theme/Skins)、Ajax.NET、ValidateControls和自定义控件予以呈现。 ✍UI控制逻辑: UI控制逻辑负责处理UI和业务层之间的数据交互,UI之间状态流程的控制,同时负责简单的数据验证和格式化等功能。 在.NET事件驱动的编程模型下,UI控制逻辑被实现在事件方法中,例如PageLoad事件方法,ButtonClick事件方法。 2.3业务逻辑层 业务逻辑层封装了实际业务逻辑,包含数据验证(如Excel数据导入),事物处理(部门强制删除),权限处理等业务相关操作,是整个应用系统的核心。 业务数据又是业务逻辑的核心,最终业务数据将以一种固定的格式表现于内存中,在系统的各个层次间传输,充当DTO角色。 表达业务数据的方式采取TableModel ✍TableModel: TableModel是将数据库中的表直接映射成为业务数据对象,ADO.NET直接提供了该表的业务数据操作(如Dataset),Dataset支持序列化,数据副本保存,支持数据集合,对控件绑定支持效果非常友好。 但是对于复杂数据表现不直观,庞大数据在各层传输,因此在本系统中对于业务需求与数据表对应很直接的业务,并且未来很少变化的业务将采用该TableModel方式,例如部门管理、用户管理等等,以提高开发效率。 2.4数据访问层 数据访问层为业务逻辑层提供与数据源交互的最小操作方式,仅仅是业务逻辑层需要的数据访问接口,业务逻辑层完全依赖业务数据访问层所提供的服务,并向业务逻辑层屏蔽资源的来源。 3数据库设计 3.1设计说明 本系统采用的数据库为Sqlserver2005,本系统数据库的设计中,命名要遵行以下几点: ✍表(table): 字母全部小写,如果名称有多个单词以上,用下划线“_”隔开。 为了便于识别表格,将系统中的所有表格进行了分类,同一类别表都以该类别名单词开头,后面单词表示该表在该应用中作用,如果类别名由多个单词组成,第一个单词为小写,后面的单词第一个字母大写。 ✍字段名(field): 字母全部小写,如果字段为两个单词以上,本期新建的表,第一个单词为小写,后面的单词第一个字母大写,例如realName。 3.2物理结构设计 说明: ✍以下表中int(8)表示8位的整数,Varchar(4)代表长度为4的Varchar类型。 ✍主键: 如无特别说明,数据库中表的主键都为系统自动产生的32位整数的id字段。 ✍业务主键: 除了主键,在业务上可以唯一确定一条记录的字段组合。 4异常设计 4.1系统级异常 系统级异常作为比较严重且难以恢复的异常情况,将统一转到错误页面处理。 .系统级异常又可以分为.net框架级异常的和web模块的http错误两种。 4.1.1.NET框架级异常 .net框架级异常包括各种未经处理的非业务类异常。 它可能是代码的缺陷造成,也可能由某些特殊情况的出现引发(如网络中断、数据库连接中断等)。 常见的框架级异常包括Null引用异常、数组越界异常、未经处理的数据库异常等。 对于框架级异常,使用Globa.aspx中的方法统一进行处理。 示例如下: protectedvoidApplication_Error(Objectsender,EventArgse) { Session["CurrentError"]="Global: "+ Server.GetLastError().Message; Server.Transfer("lasterr.aspx"); } 上边的代码将出现的异常捕获,并将其放到session中供程序使用,并将请求转向错误页面。 4.1.2HTTP错误 http错误是指一个http请求的返回状态码不为200的情况。 一般的出现系统较严重的错误,或者客户端发送了错误的请求时可能导致情况的出现。 对于http错误,使用web.config中的配置统一转到error.aspx处理。 配置示例如下: mode="RemoteOnly"> redirect="InternalError.htm"/> 其中customErrors节点可以指定是否将异常堆栈的信息输出,默认的情况下(RemoteOnly),将只向本地的请求发送,远程的请求将直接转向错误页面。 系统处理的HTTP错误包括如下几种(以错误代码区分): ✍500: 系统错误; ✍404: 未找到该HTTP资源; ✍403: 没有相应的HTTP权限; 4.2业务级异常 业务级异常是系统自定义的业务异常,一般的,业务级异常可以被程序捕获处理,或者展现给用户后由用户决定如何处理。 在系统中,业务异常将继承自BusinessException基类。 BusinessException定义类似: classBusinessException: Exception { conststringdefaultErrorCode="default"; publicBusinessException(stringerrorCode) { } publicstringMessage{…} } BusinessException可以根据构造函数中的ErrorCode从配置文件中找到错误的自定义信息,并通过Message方法返回该信息。 不同的业务可以根据需要自定义更多的Exception,只要其继承自BussinessException即可。 在业务层中,如果某个调用可能引发某种业务上的异常(如没有权限),或者捕获到有意义的数据库异常(如主键重复),即可将此异常包装为BussinessException后抛出。 对于业务异常,一般的在其对应的aspx页面中捕捉并处理。 系统中aspx对应的cs文件将统一继承BasePage类以获取错误处理的方法。 该方法捕获到异常后,将请求转向它的上一个页面,并将错误信息在url中传递过去。 示例代码如下: protectedvoidPage_Error(objectsender,System.EventArgse) { Exceptionerr=Server.GetLastError().GetBaseException(); Server.ClearError(); Response.Redirect(Request.FilePath+"? ErrorStr="+err.Message); } 注: Page_Error方法是中aspx处理错误的方法。 在每一个可能需要展示错误的页面中,都可以包括一个id为Errors的HTMLDIV,已确定错误信息的显示位置。 也可以根据需要使用JavaScript制定更灵活显示错误信息的方式。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子商务 黄龙