欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

开发BtoC电子商务系统(ASP.NET)

程序员文章站 2024-01-26 07:58:34
原文还有两个图在对asp.net web表单的模型有了基本的认识后,通过应用于现实的开发案例来提高对asp.net web表单内在运作机制的了解,以及由此带来的对架构的掌控是很有必要的。我们没有为编...
原文还有两个图
在对asp.net web表单的模型有了基本的认识后,通过应用于现实的开发案例来提高对asp.net web表单内在运作机制的了解,以及由此带来的对架构的掌控是很有必要的。我们没有为编程而编程的高贵姿态,我们深深懂得能够开发出高效,健壮,强大的应用程序始终是编程的终极。我们下面通过一个完整的btoc电子商务系统的开发流程来展示asp.net web表单是怎样具体搭建面向下一代网络平台的。
这是一个典型的基于b/s(/服务器) 三层架构的食品,饮料电子商务零售系统——“玉米地零食店”。前端为产品浏览器,为消费者提供浏览/选购商品,下订单购物等各个环节的功能;中间层为销售商的税率,优惠等商务逻辑;后端为与整个零售系统相关的产品,顾客,订单等。我们采用asp.net+iis 5来构建前端和中间层,sql server(windows平台上强大的数据库平台) 2000来管理后端数据库,整个系统运行于windows xp。相关硬件配置只要满足上述软件的基本配置,系统性能便可保证。下面为该网上零售系统的前端界面图示:

在编制web 表单商业前端和中间层之前,我们有必要对后端数据库做一个简单的介绍。后端数据库 cornfieldgrocer 由4个表组成:产品类别表categories ,产品细节表 details ,产品表 products ,客户信息表customers。考虑到演示系统的的简洁性,我们没有添加相关的存储过程,视图,规则等,这些在实际的系统的开发中对提高系统的性能是很有必要,尤其是在大数据量的情况下。下面为4个表的字段的图示介绍:

各个表的字段的表义已经相当清楚,我们不在这里赘述。我们下面向大家展示一下整个电子商务零售系统——“玉米地零食店”的物理文件组成及其结构,下图为示意图:

所有的文件位于asp.net站点目录cornfieldgrocer下,其中还有web表单页面用到的图片子目录images下的文件就不再在这里列出了。
下面我们开始编写前端和中间层代码,为了更清楚地展示web form asp.net的底层代码构造,我们采用记事本来完成整个代码的编写过程。需要说明的是在真正的工程项目开发实践中,如能借助visual studio.net等可视集成开发工具,开发效率会大大提高。但在asp.net代码的底层机制没有谙熟的情况下,笔者强烈建议初期的开发学习不妨放在windows系统自带的“记事本”这一简单却能够把代码暴露得相当清晰的工具里。
由于篇幅有限,我们不可能将所有的代码都在这里展示给大家。如前所述,web.config为每个站点级的基于xml(标准化越来越近了)的配置文件,负责一些asp.net的安全认证,编码选择,诊断测试等asp.net的配置工作,为浏览器请求asp.net web表单时通过 iis处理后的第一站。下面为其内容:

<configuration>
<system.web>
<globalization requestencoding="utf-8" responseencoding="utf-8" />
</system.web>
</configuration>


容易看到这里的配置内容相当简单,仅指定请求/发送的编码为“utf-8”。我们对此不再赘述。
global.asax文件及其由后端代码文件global.asax.cs编译成的bincornfieldgrocer.dll共同组成该网上零售系统的asp.net应用程序定义。我们先来看文件global.asax:

<%@ application inherits="cornfieldgrocer.global" %>

该文件只有一行指示符,它表示asp.net应用程序的定义继承自global类,而global类正是在global.asax.cs文件中定义:

using system;
using system.collections;
using system.componentmodel;
using system.web;
using system.web.sessionstate;

namespace cornfieldgrocer
{
public class global : system.web.httpapplication
{
protected void session_start(object sender, eventargs e)
{
if (session["shoppingcart"] == null)
{
session["shoppingcart"] = new cornfieldgrocer.orderlist();
}
}
}
}

在global类里,我们定义了区段(session)意义下的购物卡(shoppingcart)——这里采用了c#中的索引器。购物卡的类型为cornfieldgrocer命名空间中的orderlist类,在cornfieldgrocer.cs文件中有定义。我们当然也可以在global.asax文件中用脚本语言的形式将上面两个文件的内容合并起来,但那不是asp.net推荐的做法,因为脚本语言的第一次执行还要进行动态编译,这回损失一部分性能,而将cs文件提前编译成dll文件则会降低这种代价——当然这里的编译的意思还是指将cs的源代码文件编译成微软中间语言的过程。其次,页面与后端代码分离的原则易于项目管理,是visual studio.net推荐的工程性的做法。