当前位置: 首页 > 编程日记 > 正文

大型企业门户网站设计开发一般性原则和建议

[适用范围]
本文所述的原则、建议适用于大型企业信息门户网站的设计和开发,注意不是小型企业网站、一般企业电子商务网站、企业级Web应用系统。

[一般性原则]

一、网站设计原则

第一原则:内容丰富、明确
网站主要是为浏览着提供信息服务的,作为大型企业信息门户网站,必须首先提供种类繁多内容丰富的资讯,使不同的访问者都能够访问到自己想要的信息。但是信息多了自然繁杂,因此有针对性地为浏览者提供明确的内容是很重要的。

第二原则:界面设计良好
内容需要良好的界面设计来展现,良好的界面设计能够让浏览者赏心悦目,能够感受到明确的网站风格和主题,甚至感受到企业的文化底蕴,从而留下深刻的记忆,并为他进一步探索发现和使用网站提供的功能提供感官和心理上的意愿。

[题外话:]作为Web应用程序的开发人员,往往不注意这个特点而专注于“功能设计”。

第三原则:功能适用、易用
网站提供的一切功能都是为浏览者服务的,提供强大的而富于特色的功能可以使浏览者更方便的获取他需要的信息和服务。比如提供网上产品订购的服务,提供一个强大的产品检索功能是很必要的。功能也不是越多越好,有可能让浏览者无从选择,就好像现在的手机,可能绝大多数人还是打电话和收发短信,其他一些比如无线上网等功能并不适用。同时,功能如果不易使用,操作繁琐,甚至容易令人误解,那么再强大的功能都是没用的。作为企业信息门户的浏览者可能并不是都能熟练的使用计算机,不能要求他们像企业级Web用户那样去完成复杂的操作,解决一些使用中可能出现的问题,要求任何一个功能都要容易使用,好用。

上诉三原则,为著名的“Web设计三原则”,同时由于三原则的优先级和重要性,像一个金字塔般,因此也叫作“Web设计金字塔”。

  
二、网站结构设计原则
  
合理的导航设计:
在门户的首页需要一个合理的导航设计,比如栏目导航,内容导航,用户功能导航等,具体怎么使用根据网站的功能定位和设计定位决定。页面导航的层次不能太深,一般来说最多让用户点击三次鼠标就能够找到他想要的页面。

良好的目录结构:
一般来说按照网站功能/栏目划分一级目录,子功能/二级栏目划分二级目录,图片可以放在专门的目录等。目录层次不宜过深。搜索引擎一般都是对目录结构的深度来评判网页的价值的,这对于企业网站来说很重要。

网站内容索引:
如果信息量太大,需要对每一个栏目/频道做内容索引,不同于导航设计,内容索引记录了内容摘要、关键词、相关信息等,方便内容检索。比如有的网站的“网站地图”。同时该功能也是搜索引擎最爱访问的地方。


三、网页设计原则:
速度第一
没有人有耐心去打开一个很久才能浏览的网页,故有一个“三秒原则”,如果一个网页在三秒种内都打不开,那么访问者就会失去耐心放弃当前页面的浏览。

页面尽可能小
页面的大小跟访问速度是成正比的,根据速度第一的原则,那么就要做到每一个浏览的页面都要尽可能的小,少占网络带宽,访问速度才可能快。这里的小不仅仅指HTML代码少,也包括图片数量少,单个图片占用磁盘空间少。

使用CSS  
尽管可以直接设置页面元素的表现样式,但网页统一使用CSS可以更容易的统一网站风格,同时减少网页代码大小。

少用Flash和大型图片
别的不说,就是因为他们可能会占用大量带宽。

慎用框架
不能说所有人都在使用最新版本的浏览器,而且不同的浏览器对框架的支持也可能不同,另外不是所有的搜索引擎都能够很好的访问框架页面。

链接清晰
不能让浏览着不知道他在那里,也不能让浏览着找不到回去的路,每一个链接都要明确浏览着想要去的地方和想要访问的功能,更不能有死链接。


四、系统架构原则:
提供快速的系统访问
包括客户端的浏览和服务器端的通讯/数据访问,都只有一个原则,就是“快”。可以采取集群技术,缓存技术,负载均衡技术等 。

稳定的运行
不能出现时不时无法访问或者访问数据很慢。这需要采用上面的技术确保在大容量并发访问的时候系统仍然能够稳定的运行。

安全可靠
确保数据不会丢失、泄密、损坏。如采用多层服务器访问,数据加密技术,安全信道等方式。

  
[开发设计建议]
根据上面的“一般性原则”,可以采用本文下面的一些建议。注意这些建议都是一般性的,不是特定的,需要根据实际情况具体运用。

限于篇幅,本文主要说一下在采用.NET开发企业信息门户网站所要注意的问题。

一、网页设计相关:

1,做好页面布局和内容规划,只放置合适的内容,并尽可能使页面设计的最小。

2,使用好的网页编辑器,如DW,FP,不要用VS自带的编辑器,因为它会产生很多无用的沉余代码,而且设计的界面也不是很好看。

3,小图片采用GIF格式,下载速度最快,大一点的采用jpg,占用磁盘空间小。

4,尽可能使用CSS,这既是原则也是方法,可以使整个网站浏览速度提高3%以上,有的甚至能够提高30% 。

5,尽量不要使用框架,在需要的地方也要有替代措施。

6,不要只针对IE写客户端脚本。

7,客户端的事情尽量在客户端处理。现在客户端设备已经很强了,许多原来在服务器端才能做的事情现在都能在客户端做,而服务器端反而成了访问的瓶颈。

8,少用Flash。Flash一般都会占较大的网络带宽,在需要的时候也要注意不要做得太大用的太多。

9,  避免使用弹出式对话框,因为现在好多浏览器都被装上了“弹出窗口拦截”插件。说服用户解决这个问题有时是很恼火的,因为他们不是都能熟练的使用计算机。

二、.NET设计相关
  

1,能用Label的地方不用TextBox,因为Label比起TextBox来说是轻量级的控件。

2,尽量使用Repeater 控件绑定列表数据,有两个原因,一是可以保留美工原始的界面设计效果,二是比起DataGrid控件,性能可以提升70%(有专门的测试案例)。

3,如果页面仅仅是浏览不用回送服务器端继续处理,那么不要使用页面视图ViewState。如果一个界面上有很多控件那么视图将会占去一半的页面大小。其他情况也要尽量少用页面视图。

4,采用缓存技术。从缓存位置可以分为客户端缓存、代理缓存、服务器端缓存;从具体页面来说可以分为整页缓存、局部缓存、数据缓存。缓存技术可以极大地提高Web服务器的处理能力,是最经济有效的提高访问速度的措施。

5,静态页面生成技术。如果采用缓存不能起到很好的作用那么可以将经常访问的页面生成静态页面。像三大门户网站都采用了这个技术,很多CMS也都采用了该技术。

6,服务器处理数据,客户端负责展现。把客户端的事件放到服务器端去处理在互联网上不是好注意,不能想象这是一个企业内部的Web应用程序。

7,少用Session。如果要在页面之间传递参数,可以采用URL方式或者页面视图方式,如果是跨页面的数据传递,那么也最好使用Cookie 。Web访问的特点决定了这个多用户并发访问环境,Session会占用很多服务器资源,如果访问量很大这个资源占用是很高的。

8,合理使用Application 。不同于缓存对象,它能够提供更好的全局数据访问,适合于需要长时间缓存频繁的公共数据。

9,注意Cookie 问题,有的浏览器可能不支持使用Cookie 访问你的站点,在使用Cookie 之前一定要检测客户端是否支持并采用相应的策略。

10,            只访问需要的数据,现在Ajax技术可以很好的处理这类问题,它让页面处理速度更快表现力更丰富。


三、数据访问相关
  

1,优化数据库结构设计。这是数据访问效率和编程复杂程度的关键。没有良好的数据库结构设计其它都谈不上。包括字段类型的选择,表的结构,索引的使用,表的关系等。

2,优化数据库物理设计。这里关注的是数据库容量,日志,磁盘使用,数据备份机制,数据访问机制,安全等数据库物理结构相关的问题。

3,合理设计“主键”:在不同的场合需要采用不同的主键设计策略,在互联网大容量并发访问的环境中,建议主键采用整形自增字段。主键使用还应该遵循“无意义”原则。

4,采用最佳的数据访问接口,如专门针对SQL Server的数据访问对象。

5,“只要需要的数据”:如果一行有大容量字段,那么读取一整行效率是非常低的(数据瓶颈)。

6,最迟打开,最早关闭的原则。使用数据库后一定要及时关闭连接,它们是系统昂贵的资源。

7,采用“数据缓存”技术,将经常使用数据集缓存在磁盘或者内存中,尽量减少对数据库的直接访问。

8,使用存储过程。可能在一般的应用系统中存储过程可以被简单的查询替代,因而更“通用”,但是我们现在讨论的是大型企业信息门户网站的问题。作为一个互联网应用系统,处理速度和网络带宽无疑是最重要的。系统的瓶颈往往是磁盘IO和网络IO,合理使用存储过程使得分布式系统结构效率大大提升。但也要注意合理使用,比如避免一般的分页过程,由于查询会有很多,使得这样的存储过程太多而管理混乱。

9,慎用游标。数据库的游标执行效率一般都比较低,一般都可以使用复杂的查询语句代替,合理的数据库结构设计也可以避免这个问题。

10,            合理使用触发器。大部分人觉得触发器使得数据关系不明确,即屏蔽了数据的关系,但是当一个系统非常复杂的时候,数据关系更是复杂,这时候使用触发器来维护数据的一致性和数据同步的功能,可以有效地屏蔽数据关系的复杂性,减少程序代码。

11,            合理使用事务:如果不是需要连续处理的或者需要特别安全的数据处理,不要使用事务,因为事务的使用会影响数据库的并发性能。单纯的查询过程也使用事务更不可取。

12,            安全的数据访问:目前十分常见SQL注入式攻击,需要注意数据库系统安全设置和Web程序编码问题引起的安全漏洞。

总结:数据访问的性能决定性的影响了系统的整体性能,数据库结构的设计也会极大地影响到程序代码的复杂性。现在有的人认为在网络速度和磁盘容量大大提高的情况下还来考虑数据访问的问题有点不切实际,但是他们忘了我们现在面对的是成千上万的用户。

  
四、系统架构相关
这个比较复杂,这里只是简单的说说需要注意的问题,具体请参考相关资料。

软件架构:
采用ASP.NET+IIS+SQLSERVER 三层结构,或者说表现层+业务逻辑层+数据访问层 的三层结构,其中业务逻辑层又可以在拆分处多个层次,从而整个系统成为一个“多层结构”模式。在业务层和数据访问层又可以采用缓存技术等。

硬件架构:
l         多Web服务器负载均衡

l         多DNS解析

l         服务器集群  

l         多层防火墙

  

一般的企业网站出于自身资金的原因很难用到上面的全部技术/结构,但是处于一般的性能和安全考虑,至少采用下面的硬件架构:

一台Web服务器+ 一台数据库服务器+一个硬件防火墙,其中数据库服务器最好能有第二层防火墙并且不用TCP/IP和Web服务器直接连接。Web服务器内存至少1G以上,数据库服务器内存2G以上,每个服务器最好能够有2个以上的CPU。

文章来自: 懒人图库

转载于:https://www.cnblogs.com/yamajia/archive/2007/12/17/1003055.html

相关文章:

8月第3周回顾:四巨头发三大新闻 一报告引多家争议

8月15日是51CTO.com成立两周年的日子,网站举办了多种活动进行了庆祝;凑巧的是,IT界在本周也热闹非凡:微软、甲骨文、IBM和Sun联手送上三份重要新闻;国内一份个人安全的报告引起一场小小的风波——这些都足以让关注IT技…

车辆匹配和平均车速计算

数据测试内容以及详情见 https://github.com/xueyeyu/avgsp /* 作者:雪夜羽 平均车速计算(sqlserver)基于电警 QQ:1412900482 */ import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement…

为何 Map接口不继承Collection接口

1.首先Map提供的是键值对映射(即Key和value的映射),而collection提供的是一组数据(并不是键值对映射)。 如果map继承了collection接口,那么所有实现了map接口的类到底是用map的键值对映射数据还是用collec…

Linux 开机网络无法自动连接配置、网络开机自动连接

第一步:查看开机后网络是否正常连接? 1、图形界面开机后直接看右上角的网络是否连接正常(如图一)。 图一(表示未正常连接↑↑↑↑↑↑↑↑↑) 2、如果是命令页面的,可以使用命令查看网络连接情况…

sql中将分隔字符串转为临时表的方法

问题: 要求将 一字符串 0,1,2,3,4,5 ;将,分隔后的每一内容转为一行记录到数据库表中declare table_串转数组 table( adapt_object int default 0) declare tmp_str varchar(100) declare tmp_index int select tmp_index 1 select tmp_str 0,1,12,03,4,5,a,…

每天学一点flash(15) xml的一些常见写法

今天下了大雨来了&#xff0c;什么地方去不了&#xff0c;只好将想写的东西都记载下来。 一些常见的一些xml写法&#xff0c;收集目的就是为了代码调试方便&#xff1a; 一&#xff0e;简单数组单值形 <?xml version"1.0" encoding"UTF-8"?> <i…

spark为什么比hive速度快?

spark是什么&#xff1f; spark是针对于大规模数据处理的统一分析引擎&#xff0c;通俗点说就是基于内存计算的框架 spark和hive的区别&#xff1f; spark的job输出结果可保存在内存中&#xff0c;而MapReduce的job输出结果只能保存在磁盘中&#xff0c;io读取速度要比内存中…

kotlin 练习

kotlin基础语法 samychen 关注 2017.05.28 17:07* 字数 1224 阅读 2434评论 0喜欢 6每种编程语言都有一定的语法、语义和执行顺序(同步)&#xff0c;学习一种新语言也都是从这三者出发&#xff0c;下面我们就只针对kotlin的语法来做简单的介绍。 Kotlin有自己的特性不该被Java的…

软件设计之 数据库设计

[按语&#xff1a;在软件设计或是动态网站开发中&#xff0c;数据库设计时很重要&#xff0c;我觉得可以说是开发工作的核心部分&#xff0c;所以学好数据库设计&#xff0c;是很重要的&#xff0c;也是大有前途的。。。]◆&#xff0e;概念首先要搞清楚容易混淆的两个概念&…

css结构思维导图

以下的图是根据css基础&#xff0c;样式&#xff0c;框模型&#xff0c;定位以及选择器这几个方面总结出来的思维导图&#xff0c;方便记忆以及查询。 转载于:https://www.cnblogs.com/yuexiuyi/p/7352516.html

C#类的修饰符

访问修饰符:public&#xff1a;访问不受限制。protected&#xff1a;访问仅限于包含类或从包含类派生的类型。只有包含该成员的类以及继承的类可以存取.Internal&#xff1a;访问仅限于当前程序集。只有当前工程可以存取.protected internal&#xff1a;访问仅限于当前程序集或…

Appium+Python 自动化测试一之:环境安装(Android篇)

目前网上有大量AppiumPython的APP自动化测试的资料&#xff0c;这里我只是记录一下自己安装的过程&#xff0c;好让自己以后忘记的时候再翻起来看看&#xff0c;快速上手&#xff0c;不想再像之前那样踩坑。 注&#xff1a;因为之前玩过Robot FrameworkSelenium2&#xff0c;所…

sql server 2005 T-SQL @@TOTAL_READ (Transact-SQL)

返回 SQL Server 自上次启动后由 SQL Server 读取&#xff08;非缓存读取&#xff09;的磁盘的数目。 Transact-SQL 语法约定 语法 TOTAL_READ 返回类型 integer 备注 若要显示包含多项 SQL Server 统计信息&#xff08;包括读写活动&#xff09;的报表&#xff0c;请运行 sp_m…

存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储

存储结构分四类&#xff1a;顺序存储、链接存储、索引存储 和 散列存储。 顺序结构和链接结构适用在内存结构中。 顺序表每个单元都是按物理顺序排列的&#xff0c;如果你想访问那个单元你可以根据提供的指针等直接访问到需要的东西&#xff0c;但是链表是逻辑连续不是物理连续…

[luoguP2618] 数字工程(DP)

传送门 离线处理。。。 先线性筛一遍。 直接预处理出所有答案。 注意要用push&#xff0c;用乘法&#xff0c;常数小。 #include <cstdio> #include <cstring> #define N 1000001 #define min(x, y) ((x) < (y) ? (x) : (y))int n, cnt; int f[N], prime[N]; b…

QOS的qmtoken 1

在有拥塞的时候高层协议如TCP可能自己可以控制下拥塞&#xff0c;因此你的队列效果可能不明显了&#xff0c;这个时候TCP就是&#xff0c;网络拥塞丢包增加&#xff0c;重传增加。此时可以定义波特率修改接口带宽&#xff0c;从而从底层截掉带宽制作拥塞或使用LR&#xff0c;LR…

关于SQL的基础知识点

文章目录一 了解SQL二 检索数据三 排序检索数据四 过滤数据五 高级数据过滤六 用通配符进行过滤七 创建计算字段八 使用数据处理函数九 汇总数据十 分组数据十一、 子查询十二、 联结表十三、 创建高级联结十四 组合查询十五 插入数据十六 更新和删除数据十七 创建和操纵表十八…

DB-MySQL:MySQL 事务

ylbtech-DB-MySQL&#xff1a;MySQL 事务1.返回顶部 1、MySQL 事务 MySQL 事务主要用于处理操作量大&#xff0c;复杂度高的数据。比如说&#xff0c;在人员管理系统中&#xff0c;你删除一个人员&#xff0c;你即需要删除人员的基本资料&#xff0c;也要删除和该人员相关的信息…

asp.net程序性能优化的七个方面

asp.net程序性能优化的七个方面 一、数据库操作 1、用完马上关闭数据库连接 访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证&#xff0c;比较耗费服务器资 源。ASP.NET中提供了连接池&#xff08;Connection Pool&a…

如何在Windows Server 2008 Core里面添加Role~~~

SERVER CORE 中添加服务器添加AD&#xff1a;在SERVER CORE 下安装AD必须使用UNATTEND文件来进行安装以下是一个UNATTED文件的实例; DCPROMO unattend file (automatically generated by dcpromo); Usage:; dcpromo.exe /unattend:F:\LONGHORN.txt;[DCInstall]; New forest p…

关于MySQL的四种事务隔离级别!

本文实验的测试环境&#xff1a;Windows 10cmdMySQL5.6.36InnoDB 一、事务的基本要素&#xff08;ACID&#xff09; 原子性&#xff08;Atomicity&#xff09;&#xff1a;事务开始后所有操作&#xff0c;要么全部做完&#xff0c;要么全部不做&#xff0c;不可能停滞在中间环…

[PKUWC2018]随机算法

题意&#xff1a;https://loj.ac/problem/2540 给定一个图(n<20)&#xff0c;定义一个求最大独立集的随机化算法 产生一个排列&#xff0c;依次加入&#xff0c;能加入就加入 求得到最大独立集的概率 loj2540 「PKUWC 2018」随机算法 本质就是计数题 每个点有三种状态&#…

angular4 note

纪录作为新手&#xff0c;用新版angular遇到的一些细节点 1. .angular-cli.json文件 一开始没注意这个文件干啥的&#xff0c;直到我发现有个第三方js&#xff0c;我既没有在index.html里看到引用&#xff0c;也没看到在js代码里有import&#xff0c;找了好久&#xff0c;在这…

初学 Delphi 嵌入汇编[3] - 第一个 Delphi 与汇编的例子

前面知道了一个汇编的赋值指令(MOV), 再了解一个加法指令(ADD), 就可以做个例子了.譬如: ADD AX,BX; 这相当于 Delphi 中的 AX : AX BX;另外提前来个列表 - Delphi 可以用汇编管理以下寄存器:32 位寄存器: EAX EBX ECX EDX ESP EBP ESI EDI16 位寄存器: AX BX CX DX SP BP SI …

通过应用程序域AppDomain加载和卸载程序集之后,如何再返回原来的主程序域

实现目的&#xff1a;动态加载dll&#xff0c;执行完毕之后可以随时卸载掉&#xff0c;并可以替换这些dll&#xff0c;以在运行中更新dll中的类。 其实就是通过应用程序域AppDomain加载和卸载程序集。 在这方面微软有篇文章http://www.microsoft.com/china/msdn/archives/libra…

Sql语法---DDL

1.SQL的定义 结构化查询语言(Structured Query Language)简称SQL,SQL语句就是对数据库进行操作的一种语言。 2.SQL的作用 通过SQL语句我们可以方便的操作数据库中的数据、表、数据库等。 3.SQL的分类 1. DDL(Data Definition Language)数据定义语言用来定义数据库对象&#xff…

Java程序员三年的工作经验,却不如一个新人的工资高???

文章目录一、关于程序员的几个阶段第一阶段&#xff1a;三年第二阶段&#xff1a;五年第三阶段&#xff1a;十年二、关于项目经验三、关于专业技能1、基本语法2、集合3、设计模式4、多线程5、JDK源码6、框架7、数据库8、数据结构和算法分析9、Java虚拟机10、Web方面的一些问题四…

视觉稿与H5页面之间的终端适配

移动端页面开发备注&#xff1a;该篇文章使用宽为750px&#xff08;iPhone6的设备像素&#xff09;的视觉稿编写html代码&#xff1a;<!DOCTYPE html><html><head> <title></title> <meta charset"utf-8" /></head><bo…

欢迎大家批评:CSDN Blog用户体验调查

CSDN Blog自2004年7月上线以来&#xff0c;得到了各位用户的大力支持&#xff0c;已经成为大家发表专业技术文章和进行技术交流的园地。为了给各位作者和读者提供更好的服务&#xff0c;我们组织了这次用户问卷调查&#xff0c;希望大家能够将意见反馈给我们。 CSDN Blog团…

几个我收藏的经典网站

壁纸酷:[url]http://www.bizhiku.net[/url],XP壁纸,vista壁纸,汽车壁纸,风景壁纸,游戏壁纸,美女桌面壁纸,3d壁纸,日历月历壁纸等等,精美桌面壁纸下载.WAP中国:[url]http://www.wapcn.net[/url],专业的手机资源网站下载,手机铃声,手机游戏,手机壁纸,手机电影,手机软件,手机主题下…