随着互联网的兴起,web应用程序服务器的使用越来越广泛,目前流行的构建web应用程序和动态网页的设计技术主要有JSP、PHP、ASP.NET三种,有一个公司将建设自己的web提供一个业务应用的平台。作为一名编程人员,我将阐述现主流Web开发语JSP、PHP、ASP.NET语言的比较,并且根据需求选择基于PHP技术的web建设方案,能满足我国中小企业的一般的办公自动化的工作需求,参考这个方案做本公司的web设计与建设。 第1章 主流技术分析 现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项! §1.1 主流技术介绍 §1.1.1 ASP.NET技术 ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是 Active Server Page (ASP) 的下一个版本;它还提供了一个统一的 Web 开发模型,其中包括开发人员生成企业级 Web 应用程序所需的各种服务。ASP.NET 的语法在很大程度上与 ASP 兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。可以通过在现有 ASP 应用程序中逐渐添加 ASP.NET 功能,随时增强 ASP 应用程序的功能。ASP.NET 是一个已编译的、基于 .NET 的环境,可以用任何与 .NET 兼容的语言(包括 Visual Basic .NET、C# 和 JScript .NET.)创作应用程序。另外,任何 ASP.NET 应用程序都可以使用整个 .NET Framework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。ASP.NET 可以无缝地与 WYSIWYG HTML 编辑器和其他编程工具(包括 Microsoft Visual Studio .NET)一起工作。这不仅使得 Web 开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到 Web 页的 GUI 和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。 §1.1.2 PHP技术 PHP 的全名非常有趣,它是一个巢状的缩写名称——“PHP: Hypertext Preprocessor”,打开缩写还是缩写。PHP是一种HTML 内嵌式的语言 (就像上面讲的ASP那样)。而 PHP 独特的语法混合了C,Java,Perl以及 PHP 式的新语法。它可以比 CGI 或者 Perl 更快速地执行动态网页。 PHP的源代码完全公开,在 Open Source 意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得 PHP 无论在 UNIX 或是 Win32 的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为5.0 ,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统 CGI 或者 ASP 等技术有了更好的表现。 平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用 ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。 §1.1.3 JSP技术 JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java 2 platform Enterprise Edition)应用体系中的一部分。 Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process),而Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(Parent Thread)来实现资源共享,这样就减轻了服务器的负担,所以,Java Servlet可以用来做大规模的应用服务。 虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSP Parser)转换成Servlet代码,然后Servlet代码被Java编译器编译成 .class 字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(Script Language)版。 由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA – Write Once, Run Anywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。因此,JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。 在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数,而是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错),逐步缩小出错代码段的范围,最终确定错误代码的位置。 §1.2 主流技术开发组合 §1.2.1 IIS环境 ASP+ACCESS ASP+SQL SERVER ASP.NET+ACCESS ASP.NET+SQL SERVER §1.2.2 APACHE环境下
jsp+Oracale JSP+MYSQL PHP+MYSQL §1.2.3 技术分析 PHP是当前兴起备受推崇的一种WEB编程语言,开源且跨平台,在欧美都比较的流行,最近在国内也很受许多网站开发者的欢迎.开发效率高,成本低! JSP是了SUN公司推出的一种网络编程语言,比较难学(是网上公认的),跨平台运行.安全性比较高,运行效率也比较的快.备受企业级的公司及银行金融机构使用. 主流网站开发语言之ASP.NET从某种意义上说应该是ASP版本的升级,但是它又不完全是从ASP上升级来的,ASP.NET的推出是微软为了与 SUN公司的JSP在网络上的迅猛发展抵抗的,.NET架构现在有许多人都在学习,主要是开发的效率比较的高.但是还是基于WIN平台运行,不能跨平台.说java好主要是因为java的j2ee部分做企业级开发很强大,而且跨平台 。c#是.net平台上最好用的语言,现在只能运行在windows系统。 web开发方面.net和j2ee的竞争很激烈,难说以后鹿死谁手。 现在做网站大部分都是asp.net或jsp的,asp.net容易上手,比较普及,但是平台单一,jsp虽然上手难,但是跨平台,安全性高。大型网站很少有用windows系统的。 §1.3 优缺点比较 ASP.NET优点: 1. 简洁的设计和实施。 2. 语言灵活,并支持复杂的面向对象特性。 3. 开发环境。 缺点: 1.数据库的连接复杂。 JSP优点: 1、一处编写随处运行。 2、系统的多台平支持。 3、强大的的可伸缩性。 4、多样化和功能强大的开发工具支持。 缺点: 1、与ASP一样,Java的一些优势正是它致命的问题所在。 2、缺少系统性的资料。 3、速度超慢 PHP优点: 1、一种能快速学习、跨平台、有良好数据库交互能力的开发语言。 2、简单轻便,易学易用。 3、与Apache及其它扩展库结合紧密。 4、良好的安全性。 缺点: 1、数据库支持的极大变化。 2、不适合应用于大型电子商务站点 3、安装复杂。 4、缺少正规的商业支持。 5、无法实现商品化应用的开发。 根据图示来进行更为直观的比较 第二章 系统需求分析 根据第一章的技术比较,PHP比较适合中小企业。无论是以后的移植或者开发成本和效率综合因素考虑,PHP为首选开发技术。且天利公司对PHP开源项目很感兴趣。所以,决定使用PHP + MySQL数据库进行项目开发,足矣满足公司日常工作需求。 §2.1现行业务描述§2.1.1公司组织结构介绍管理层下设财务部、仓储部、采购部、销售部。组织结构图见2.1.1 表2.1.1 组织结构职责表 部门 | 职责 | 董事会 | 公司投资与运行战略的部署和决策 | 总经理 | 管理公司运营事物,实现运营目标 | 财务部 | 管理公司资金来源与运用,支持各部门的工作 | 仓储部 | 从事公司生产与服务所需物资的入库、储存、发放 | 采购部 | 制定采购计划,进行供应商的协调和管理,进行市场的调研 | 销售部 | 管理和处理公司具体的销售业务工作 | 行政部 | 管理公司人员的招聘和职务调动 | 仓管员 | 发放管理公司物资 |
|
|
§2.1.2 业务流程分析本系统进行业务流程分析采用的工具是业务流程图,这是一种能够较准确表明系统内各单位、人员之间业务关系、作业顺序和管理信息流动的流程图,它能够帮助分析人员找出业务流程中不合理的地方。现在分别分析采购与库存管理业务流程和商品进销存管理业务流程。 1. 采购与库存业务流程分析: 本公司采购与库存业务流程重点管理商品周转,主要包括以下几步: (1) 库存管理员根据商品实存不足的情况,向采购部发出订货申请。 (2) 采购部根据申请组织供货,库存管理员验货入库,采购部根据实际入库的货品情况填制进货单,库存管理员登记进货单进账。 (3) 销售部门填制销售单,库存管理员登记销售单进账,并发货给销售部门。 (4) 定期编制商品进销存报表上报经理。 采购与库存管理业务流程图见2.1.3 2. 商品进销存业务管理流程分析: 目前,本公司保管业务流程重点管理保管资金流程,对商品的保管主要包括以下几步: (1) 保管人员负责保管物品。 (2) 员工向保管人员提出销售请求。 (3) 保管人员为员工或客户填写发票。 (4) 保管人员将发票清单递交负责人核查。 (5) 员工核查发票清单无异议签字递交库存管理员。 (6) 库存管理员提供员工所请求物品。 §2.2现行系统存在的主要问题现行系统是手工运作的系统,可以向员工提供商品服务功能。但是,存在以下薄弱节: (1) 现行系统收工操作,人员工作量大,数据递交不及时。在数据进行统计和计算过程中难免出现差错,工作效率极低。 (2) 业务流程不够严密。 (3) 向员工提供的发票清单手工书写,常发生字迹不清且格式也不能够保证统一。 (4) 历史账务查询不方便 (5) 数据存储在纸张,不容易长时间保管且不够安全。 现行系统的上述问题,反映了公司工作中对信息的产生、传输、加工、安全与挖掘分析利用方面存在不足,不能满足企业管理与业务发展的需求,也会对企业形象带来不利的影响。这也是开发新系统的直接原因。 §2.3 解决方案公司规模不算太大,但是也有异地分公司。使用B/S架构系统较为合适。开发成本低且使用方便简单,一般人员不用培训即可上手使用。 §2.4 可行性分析与决策1. 技术可行性 最近十几年来,信息管理系统从以前的桌面应用程序已经逐渐被网页所代替。并且通过分析选用PHP + MySQL + Apache + UbuntuServer因为所用技术和系统全为开源技术。所以,基本上可以免费使用。这样,不仅开发成本低廉开发也比较简单并且能够保障系统稳定运行。 2. 经济可行性 本人参与本系统的开发工作,主要是为了综合运用所学知识,通过理论与实践相结合,提高本人的专业技术知识和应用能力。所以,主动免费承担本系统的研发工作。 3. 营运可行性 运用本系统的员工,需要具备Linux平台上的基本操作知识,并不需要特别的技术能力。因为本系统操作简单方便。在该公司与本项目运营的相关直接人员(包括管理层、仓储部、销售部)中已经具备。并且,在该项目投入使用前,还会针对操作系统的人员进行必要的培训。 第3章 系统逻辑方案 §3.1 数据流图描述数据流图是对组织中信息运动的抽象,是信息管理系统逻辑模型的主要表现形式。它不涉及具体的开发,如硬件、软件、数据结构与文件组织,是用图形语言以及相关注释来表示系统的逻辑功能,及所开发的系统在管理信息处理方面需要做什么。 §3.1.1 系统关联图首先,根据对信息管理建设的总体要求,确定系统的外部项,即系统数据的来源和去处。通过分析,掌握本系统的数据流向,绘制本系统的关联图 采购部向本系统提供进货单信息F2,并可以通过从本系统获得订货需求报告F1、查询进货入库信息F3; 销售部部等部门对商品的领用F4信息提交本系统进行管理,也可以通过本系统查询商品销售信息F5; 客户通过出库单,获得商品F6。 最后可以生成分析报表F7,支持公司日常营运管理。 另外,本系统支持经理对营运数据的统计分析功能F8。 §3.1.2 系统顶层数据流程图说明本系统的顶层数据流图 在顶层数据流图3.1.2中,一共有四个主要的加工:“P1商品进货管理”,“P2商品销售管理”,“P3库存管理”、“P4统计报表”。 P1商品进货管理:处理各种商品入库操作。 P2商品销售管理:处理客户信息,处理商品销售操作生成“分析报表”上报公司经理。 P3库存管理:基于各项数据表的数据根据进货和保管生成库存记录。 P4综合统计:基于各项数据表的数据进行信息管理统计分析。 第4章 系统结构设计 §4.1 软件模块结构设计由于系统流程图的不完善,在70年代中期出现了HIPO技术,在软件工程当中经常使用,它通过图形方法表达了一个系统的输入和输出功能,以及模块的层次。HIPO技术包含两个方面的内容: HIPO分层图。用这样的表示自顶向下分解所得系统的模块层次结构。 IPO图(输入→处理→输出图)。此图描述系统功能模块输入输出处理的内容。 HIPO分层图用一个方块表达一个模块,方块内可表示出此模块的处理能力和模块名。模块之间的调用关系用连接两模块的直线表示。采用自顶向下扩展的方法表达整个系统模块之间的关系。根据需求分析绘制的HIPO分层图 §4.2 数据库设计概念模型是数据库系统的核心和基础。在系统的数据库设计中,首先要对系统分析得到的数据字典中的数据结构、数据流和数据存储进行分析,并参照DFD,把数据抽取出来,确定实体的属性以及实体间的关系,这样才能得出系统的关系模式。 实体联系图(E-R图)是一种用于静态数据结构的概念模型。本系统采用E-R图的方法进行数据分析,通过E-R图来描述现实世界信息结构的数据库设计方法。 §4.2.1 数据库需求设计分析需求分析的目的在于识别用户的数据需求,非形式地描述有关数据对象及其联系的要作为记录的信息,取得如下信息的非形式描述: 库存存储的商品 需要记录没种商品的编号、单位、余量、成本、零售价格。 客户的信息 需要记录客户信息 员工信息 需要记录当前员工编号、姓名、职务等信息 E-R图 E-R图可以来描述静态数据结构:实体、联系、实体和联系的属性。符号示例如下: 根据以上分析结果,绘制出本系统的E-R图,见图4.2.2。图中的实体和联系属性在本文中进行了文字说明。 §4.2.2 E-R模型转化为关系模式1. 转换规则 实体集的转化 每个实体集用—关系模式表示,其中实体集的属性被转换诚关系的属性,实体集的主键(用下划线表示,下同),在满足唯一标识和无冗余等性质的条件下,将作为对应关系的主键。 二元联系转换 强制成员类:若实体集E2与实体集E1是N:1联系,E2的关系模式应包含E1的主属性; 可选成员类:若实体集E2是它同实体集E1的N:1联系中的一个可选成员。那么,这个联系往往由包括E1和E2主属性以及该联系中每个属性的各个关系模式表示;为了避免空值问题,我们也可以引入另一个表示联系的关系。 N:N二元联系:一般由另一个关系模式表示。这个关系模式由每个参加的实体集的主属性以及这个联系的任何属性一起组成。 2. 关系模式 根据所属的转化规则,在从E-R图向关系模式转换时,我们可以做下述调整: 将E-R如中“仓库”由于只有一个仓库,所以将“仓库”和“仓库管理员”省略。 本系统在进行操作时客户关系有表存在但是不应用在本系统。所以,“客户”,“销售”省略 经过上述分析,确定本系统的关系模式如下: 进货(进货编号,库存号,数量)外键:库存号 销售(销售编号,库存号,单价,数量)外键:库存号 库存(库存号,名称,单价,数量) §4.3 LAMP安装与配置。 本系统采用PHP和MySQL技术实现。操作系统为UbuntuServer所用Web服务器为Apache这是在中小型企业比较流行的LAMP §4.3.1 单独安装LAMP 1. 首先安装SSH sudo apt-get install ssh 2. 安装MySQL sudo apt-get install mysql-server-5.1 3. 安装Apache sudo apt-get install apache2 4.安装PHP sudo apt-get install php5 libapache2-mod-php5 5.重启Apache sudo /etc/init.d/apache2 restart 6.安装phpMyAdmin sudo apt-get install phpmyadmin §4.3.2 配置Apache 在/etc/apache2/这个目录下找到conf.d文件用vim编辑找到 # Read the documentation before enabling AddDefaultCharset. # In general, it is only a good idea if you know that all your files # have this encoding. It will override any encoding given in the files # in meta http-equiv or xml encoding tags. #AddDefaultCharset GB2312 把AddDefaultCharset GB2312改为#AddDefaultCharset UTF-8 在 /etc/apache2/sites-available/default 默认情况下将要发布的网页文件应该置于/var/www目录下,这一默认值可以同过主配置文件中的DocumNETRoot 选项修改. 文件内容为: <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /CGI-bin/ /usr/lib/CGI-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost> 如果我要将web目录移动到/web/web1,则新建此文件夹,将权限改为755, 同时编辑/etc/apache2/sites-available/default,将/var/www替换为/web/web1即可根据需求替换为/tianli然后把IP地址设置为服务器所在IP即可。 §4.3.3 配置MySQL 第一次运行MySQL默认root用户为空,更改root密码为123456,则 # mysqladmin -u root password 123456 修改管理员密码 以后想修改密码为abc则: # mysqladmin -u root -p password abc Enter password: 输入原来的密码:123456即可 第5章 系统详细设置 §5.1 页面设计 根据需求分析,网页主要提供进销存管理系统。网页根据具体编写而变化。 §5.2 数据库设计 根据需求,总共有4个表,根据开发进度按需增加或删改表。 表5.2.1 addStock 序号 | 数据项名 | 类型 | 长度 | 主键 | 外键 | 1 | ID | nvarchar | 20 | Y |
| 2 | goodsID | nvarchar | 20 |
|
| 3 | number | int |
|
|
|
|
|
|
|
|
|
表5.2.2 market 序号 | 数据项名 | 类型 | 长度 | 主键 | 外键 | 1 | ID | int |
| Y |
| 2 | goodsID | nvarchar | 20 |
|
| 3 | price | smallmoney |
|
|
| 4 | number | int |
|
|
|
|
|
|
|
|
|
表5.2.3 stocks 序号 | 数据项名 | 类型 | 长度 | 主键 | 外键 | 1 | goodsID | nvarchar | 20 | Y |
| 2 | name | nvarchar | 20 |
|
| 3 | price | smallmoney |
|
|
| 4 | number | int |
|
|
|
|
|
|
|
|
|
表5.2.4 userLogin 序号 | 数据项名 | 类型 | 长度 | 主键 | 外键 | 1 | username | nvarchar | 50 | Y |
| 2 | pwd | nvarchar | 30 |
|
|
|
|
|
|
|
|
§5.3 系统类设计 因为使用PHP进行编写。所以,采用简单MVC模式编写。新版本的php支持面向对象,就采用类的方式进行数据的处理,提交页面控制。 第6章 实施概况 §6.1 编译环境 虽然选用的技术为LAMP组合,但是,php具有良好的移植性,能够在可视化具有很大优势的Winodws平台底下开发,最后在Ubuntu系统下运行。所以,采用的开发工具为EclipsePHP Studio . §6.3 系统测试概况 系统测试的目的,是以最少的测试资源去发现尽可能多的BUG。软件测试通常采用黑盒测试和白盒测试,用黑盒测试主要是再在考虑程序内部结构和特性的情况下,按照用户的软件需求说明来验证软件的外部特性是否符合要求。白盒测试是按照程序的内部结构处理逻辑来设计测试用例,检查程序的内部处理是否符合要求。根据测试,在WIndows下开发的PHP可以直接用在Ubuntu底下,成功运行且没有错误。 第7章 不足和观望 由于本系统的研发工作在本人业余时间完成,开发进度和计划相比存在差距,前期系统分析工作进度较慢,后期开发时间比较紧凑。在研发过程中,与用户交流不够充分,这也是前期工作进度较慢的原因。并且,因为本人能力局限这里使用简单的MVC模式,没有使用任何基于PHP的框架,这一点比较遗憾。希望在以后的本项目改进中,引用优秀的开发框架进行开发。
信息发布:广州名易软件有限公司 http://www.myidp.net
|