ASP.NET多频道网站架构实现方法

各频道分别位于不同的Web Project(具有独立的二级域名),并将所有的业务逻辑以及数据访问功能封装成Class Library,所有频道共用这个Class Library。

下面详细介绍实现方法。

假设网站有三个频道,新闻、论坛以及博客,对应的二级域名为"news"、"forum"、"blog"。除此之外,还需要另外定义两个域名,分别用于网站首页以及用户注册、登陆功能(基于Passport机制,本文后面将作详细介绍),对应域名为"homepage"、"passport"。

1、配置各频道URL

a、配置hosts文件

用文本编辑器打开hosts文件(位于c:\windows或winnt\system32\drivers\etc\),该文件中存放初始的域名解析信息。当我们在浏览器中请求某个URL时,系统首先在hosts文件中查找相应域名,如果找到则跳转至指定IP,如果没找到,则进一步提交DNS进行域名解析。

配置很简单,格式形如"[IP][空格][域名]",每条数据对应一行。下面为配置内容:

192.168.1.2 www.mysite.com

192.168.1.2 passport.mysite.com

192.168.1.3 news.mysite.com

192.168.1.5 forum.mysite.com

192.168.1.9 blog.mysite.com

你可能已经注意到了,各频道对应于不同的IP,这正是该架构的开发灵活性所在。各频道(Web Project)可以创建于不同的开发者电脑。通过将配置内容同步到各台电脑,可以方便的在各频道间进行页面浏览,就像这些频道位于你自己的电脑一样!采用这种方式可以极大降低开发耦合性,每个频道都是一个独立的模块,一个频道中的Bug不会影响到另一个频道。

b、配置Web.Config

考虑到各频道二级域名有可能进行调整,将相应配置信息存放于Web.Config文件是一个好办法。同样的,该配置信息必须同步到各Web Project。下面为配置内容:

<add key="SiteDomainName" value="mysite.com"/>
<add key="HomepageSiteURL" value="http://www.mysite.com/homepage/"/>
<add key="PassportSiteURL" value="http://passport.mysite.com/passport/"/>
<add key="NewsSiteURL" value="http://news.mysite.com/news/"/>
<add key="ForumSiteURL" value="http://forum.mysite.com/forum/"/>
<add key="BlogSiteURL" value="http://blog.mysite.com/blog/"/>
<add key="LocalSiteURL" value="/blog/"/>

各配置项说明如下

SiteDomainName:站点域名,形如"mysite.com"、"mysite.com.cn"、"mysite.net"等。该配置项的使用方法将在后文介绍。

LocalSiteURL:当前频道根路径,也就是Web Project所在网站或虚拟目录的路径,以"/"开头。该配置项主要用于频道内部的引用,比如图片引用、页面链接等。

其余配置项:用于频道间的引用,比如频道导航、功能调用等。

2、创建Model部件

在MVC模式组成中,Model部件包括所有的业务逻辑操作,其中也包含数据访问操作。

本方案将Model部件拆分成对象实体、对象操作以及数据访问三部分,封装成三个Class Library。

由于Class Library设计本身就是一个很大的话题,本文就不再祥述了,有兴趣的话可以参考一些相关资料。

经验分享:

上述的Model部件拆分方式适用于业务功能比较复杂的大型项目,要求团队内部有着明确、细化的分工合作。但如?????? ?o?果面对的是中小型项目,该方式很有可能成为开发效率的瓶颈。这主要是由项目特点决定的,中小型项目业务功能相比大型项目没有那么复杂,开发人员数量也比较有限,往往一个人要负责整个模块的开发。在这种情况下,架构层次过于繁多,每次修改一个层时,其他相关层也得跟着同步修改,这样反而影响了开发效率。

3、实现Passport机制

很多网站都采用Session来存放个人信息,比如登录信息,并以次作为用户登录与否的判断依据。但Session有一个缺陷,就是无法在多个Web应用中共享,一个Web应用生成的Session只能由他自己使用。哪种方法可以在多个Web应用中实现数据共享呢?答案是Cookie。Cookie将信息存放于客户端, 并在需要时发送回服务器端。

Passport,即通行证,是目前普遍采用的一种用户身份认证机制,简单来说就是一次登录,全站通行。这也正是我们的要求。

这里讨论的通行证机制基于Cookie,实现也比较方便。其中的关键点是Cookie的Domain属性设置,Domain属性表示Cookie信息回发的目标域,也就是接收Cookie的域,接收Cookie的域必须与发送Cookie的域一致,否则无效。比如:发送域为"blog.mysite.com",则接收域可以设为"blog.mysite.com"或"mysite.com",而"news.mysite.com"和"blog.yoursite.com"为无效接收域。要想让所有频道都能接收到Cookie,必须将Domain属性设置为不带二级域名前缀的形式,如"mysite.com"、"mysite.com.cn"、"mysite.net"等。

登录成功后向客户端发送相应Cookie,其中可以包括一些全局信息,比如用户编号、用户名等。用户退出时删除相应Cookie,特别要注意的是,删除Cookie时也要设置正确的Domain属性。

关于该Passport机制,还有两个问题值得讨论:

a、Cookie的过期时间

有两种方案可以采用,一种是默认方式,即不设置Cookie的Expires属性,采用这种方案时,Cookie存放于内存中,在浏览器关闭前Cookie将一直存在,也就是一直处于登录状态。这种方式主要用于对信息安全要求不是很高的网站,比如娱乐休闲类网站;另一种是指定明确的过期时间,一般情况下会将用户最后一次访问网站的时间加上一个超时时间段作为过期时间,有点类似于asp中的session超时机制,这种方式主要用于对安全性要求比较高的网站,比如网上银行、电子邮箱等。

b、Cookie的信息安全

由于Cookie是以明文方式传递数据,不可避免的存在安全隐患,因此对重要数据的加密是非常有必要的。加密可以采用可逆算法,比如DES。

4、创建Web Project

前文已提过,Web Project的创建比较灵活,既可以创建于不同的开发者电脑,也可以创建于同一台电脑。这主要取决于开发团队规模。

5、部署

分别部署各频道,设置二级域名,将Web.Config中的相关配置改为生产环境的实际数据。

其中比较繁复的工作就是各频道中相同部分的部署,比如说网站头部(Logo、导航栏等),网站底部(版权声明、联系方式等),图片,CSS,JavaScript等。当然也可以把这些公用资源单独部署于一个频道中,以供其他频道调用,但这样做就破坏了各频道松耦合的特性,如果用于存放公用资源的频道出了问题,那其余频道也将无法正常使用。

结束

本文讨论了asp.net中多频道网站架构的一种实现方法,由于涉及到的内容较多,无法一一展开,但对其中的重点部分还是多加了点笔墨,希望对你有用。

时间: 2024-08-24 13:09:00

ASP.NET多频道网站架构实现方法的相关文章

ASP.NET多频道网站开发架构浅析和实现方法

我们打开门户网站时,往往会看到很多排列紧密的频道列表,如"新闻"."财经"."娱乐"等.频道为网站提供了方便的导航功能. 知识准备 本文中提到的各架构方案均基于MVC(Model-View-Controller)模式,对该模式中各组成部件作如下简短描述: ◆Model:包含业务逻辑操作以及数据访问操作 ◆View:包含UI处理相关操作 ◆Controller:控制并协调View与Model的处理过程 各方案比较 方案 架构描述 代码重用性 开发方

ASP.net中网站访问量统计方法代码_实用技巧

一.建立一个数据表IPStat用于存放用户信息 我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Src)和登录时间(IP_DateTime),些表的信息本人只保存一天的信息,如果要统计每个月的信息则要保存一个月.因为我不太懂对数据日志的操作,所以创建此表,所以说我笨吧,哈哈. 二.在Global.asax中获取用户信息 在Global.asax的Session_Start即新会话启用时获取有关的信息,同时在这里实现在线人数.访问总人数的增量统计,代

ASP.NET编程获取网站根目录方法小结_实用技巧

本文实例讲述了ASP.NET编程获取网站根目录方法.分享给大家供大家参考,具体如下: 获取网站根目录的方法有几种如: Server.MapPath(Request.ServerVariables["PATH_INFO"]) Server.MapPath("/") Server.MapPath("")//当前代码文件所在的目录路劲 Server.MapPath(".") Server.MapPath("../"

浅析地方门户网站频道内页优化方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 地方房产信息门户网站各大频道是网站核心,每个频道都可以给网站带来搜索流量,不同的频道需要优化的方法也是不同的.虽然网站的首页权重高,但是门户信息不可能所有的信息都放置在首页,频道内页也应该要合理利用,频道内页要如何优化呢?笔者给大家分享几点频道内页优化方法. 房产楼盘频道 房产门户信息网站,楼盘信息频道是网站引流最多的.楼盘频道标题写法原则:

实战ASP.NET大规模网站架构:Web加速器

大规模网站瓶颈之一就是性能问题,如何让你的网站飞速运转起来,一直是架构师和开发人员苦于思考的问题.文章将针对基于ASP.NET开发的网站交互性非实时部分进行讨论. 一.WEB加速通常有如下方案: 1.基于ASP.NET技术的页面缓存 基于ASP.NET技术的页面缓存,通常有如下两种应用方式: 一.基于数据库触发(设置缓存依赖策略,当数据库中数据发生变化时,触发缓存失效;但微软提供的解决方案目前仅支持SQL Server,如果是ORACLE需要自己实现触发接口). 二.基于文件依赖的策略(可以设置

一起谈.NET技术,实战ASP.NET大规模网站架构:Web加速器

大规模网站瓶颈之一就是性能问题,如何让你的网站飞速运转起来,一直是架构师和开发人员苦于思考的问题.文章将针对基于ASP.NET开发的网站交互性非实时部分进行讨论. 一.WEB加速通常有如下方案: 1.基于ASP.NET技术的页面缓存 基于ASP.NET技术的页面缓存,通常有如下两种应用方式: 一.基于数据库触发(设置缓存依赖策略,当数据库中数据发生变化时,触发缓存失效;但微软提供的解决方案目前仅支持SQL Server,如果是ORACLE需要自己实现触发接口). 二.基于文件依赖的策略(可以设置

从网站架构看淘鞋网布局seo的方式(二)

写过一篇"从网站架构看淘鞋网布局seo的方式(1)",是应该再写第二篇,那么我们继续关注淘鞋网的网站结构和seo之间的关系,淘鞋网让我们学习的seo细节以及设置方面还是很让我们学习的,以下就是下午的思考了. 4)淘鞋网"锚文本"特色 现在在鞋类电子商务市场中,有淘鞋网,拍鞋网,乐淘,好乐买,等等的电子商务平台,可见竞争之大,那么这一点呢,淘鞋网也为了和他们的同类竞争对手比较排名,甚至品牌的关键字排名,用对方的品牌词链接回到自己的首页,如图所示就是笔者在首页中发现的友

LAMP网站架构方案分析

LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl.PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE架构相比,LAMP具有Web资源丰富.轻量.快速开发等特点,微软的.NET架构相比,LAMP具有通用.跨平台.高性能.低价格的优势,因此LAMP无论是性能.质量还是价格都是企业搭建网站的

ASP.NET2.0实现网站的自动升级

asp.net 网站的自动升级主要是要实现从一台服务器上下载某些文件到本服务器上,然后对下载下来的文件进行更新等操作. 比如,现在有服务器A,服务器B和客户端C. 作为COM公司开发的产品DIV网站系统被安装到服务器B上,而它的更新设置及更新文件则在服务器A上.当客户C访问服务器B的网站时,B从A上下载更新文件,然后进行更新操作. 其中虽然第四步最重要,是逻辑的核心,但是下载什么文件,怎么下载也捆饶着我们. 这里介绍的ASP.NET2.0是VB.NET.VB.NET 引入了一个新的命名空间 --