设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
ASP.NET多频道网站开发架构浅析和实现方法 ...
返回列表
发新帖
ASP.NET多频道网站开发架构浅析和实现方法
[复制链接]
11
|
0
|
2010-11-9 10:49:44
|
显示全部楼层
|
阅读模式
我们打开门户网站时,往往会看到很多排列紧密的频道列表,如“新闻”、“财经”、“娱乐”等。频道为网站提供了方便的导航功能。
知识准备
本文中提到的各架构方案均基于MVC(Model-View-Controller)模式,对该模式中各组成部件作如下简短描述:
◆Model:包含业务逻辑操作以及数据访问操作
◆View:包含UI处理相关操作
◆Controller:控制并协调View与Model的处理过程
各方案比较
方案 架构描述 代码重用性 开发方式 部署方式
方案一 为整个网站建立一个Web Project。每个频道对应于Web Project中的一个目录,有点类似于ASP的处理方式。Model部件既可以包含于Web Project中,也可以封装成Class Library。 将Model部件封装成Class Library后将获得较高的重用性。 模块较为集中,开发较为快捷,但不适合大规模协作开发。 模块较为集中,部署比较方便,但一个小的BUG可能会导致整个网站的瘫痪。
方案二 为每个频道建立一个Web Project。每个频道的Model部件既可以包含于相应的Web Project中,也可以分别封装成Class Library。 每个Model部件都应用于特定的频道,代码分散,重用性较低。 各模块较独立,适合按照功能模块分配任务的开发方式。 各模块独立,部署工作非常繁复,但由于各频道是松耦合的(甚至可以位于不同的服务器),一个频道的故障不会影响到其他频道的正常运行。
方案三 为每个频道建立一个Web Project。所有频道的Model部件封装成一个共用的Class Library。 所有频道共用一个Model部件,代码较为集中,具有很高的重用性。 开发方式较为灵活,既可以按照功能模块分配任务,也可以按照MVC各组成部件分配任务。 各模块独立,部署工作比较繁复,但由于各频道是松耦合的(甚至可以位于不同的服务器),一个频道的故障不会影响到其他频道的正常运行。
总结
根据上文分析,我们大致可以得出以下结论:
方案一:开发快捷,部署方便,适用于业务功能比较简单的小型网站;
方案二:缺陷比较多,不推荐;
方案三:各模块松耦合,代码重用性好,适合大规模协作开发,适用于业务功能比较复杂的大中型网站。
关于Model部件
Model部件封装了所有的业务逻辑操作以及数据访问操作,其中可能包含对象实体类、对象操作类、数据访问类等等。另外,笔者强烈建议对于中小型应用系统可将对象实体类、对象操作类、数据访问类合并为一个业务逻辑类,这样可以极大的提高开发及维护效率。
下面我们将对其中第三种方案的具体实现方法进行分解。首先我们来看下该方案的主体架构。
主体架构
各频道分别位于不同的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。下面为配置内容:
各配置项说明如下:
◆SiteDomainName:站点域名,形如"mysite.com"、"mysite.com.cn"、"mysite.net"等。该配置项的使用方法将在后文介绍。
◆LocalSiteURL:当前频道根路径,也就是Web Project所在网站或虚拟目录的路径,以"/"开头。该配置项主要用于频道内部的引用,比如图片引用、页面链接等。
◆其余配置项:用于频道间的引用,比如频道导航、功能调用等。
2.创建Model部件
在MVC模式组成中,Model部件包括所有的业务逻辑操作,其中也包含数据访问操作。
本方案将Model部件拆分成对象实体、对象操作以及数据访问三部分,封装成三个Class Library。
由于Class Library设计本身就是一个很大的话题,本文就不再祥述了,有兴趣的话可以参考一些相关资料。
经验分享:
上述的Model部件拆分方式适用于业务功能比较复杂的大型项目,要求团队内部有着明确、细化的分工合作。但如果面对的是中小型项目,该方式很有可能成为开发效率的瓶颈。这主要是由项目特点决定的,中小型项目业务功能相比大型项目没有那么复杂,开发人员数量也比较有限,往往一个人要负责整个模块的开发。在这种情况下,架构层次过于繁多,每次修改一个层时,其他相关层也得跟着同步修改,这样反而影响了开发效率。
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等。当然也可以把这些公用资源单独部署于一个频道中,以供其他频道调用,但这样做就破坏了各频道松耦合的特性,如果用于存放公用资源的频道出了问题,那其余频道也将无法正常使用。
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行
1
华为荣耀3好还是p6好?
2
徘徊是什么意思
3
广州大话西语具体地址在哪啊?附近有什么车或者地铁站?
4
为什么说光子刀治疗比人工手术更精确,有什么依据么?
5
燕郊买房 上上城青年社区 二期 位置在哪里?外地本地年底可以贷款吗?首付多少?
6
点痣大概多少天就可以痊愈?
7
美联臣可以去痣吗?
8
北京面部变白的方法都有那些?
9
我没有什么经验,想加盟一家中介公司,哪家中介公司比较好,需要什么手续?
10
丰太阳穴,玻尿酸安全吗 影响上班么
11
冬天能让宝宝游泳吗?我想给宝宝买个婴儿游泳池,有没有好的建议?
12
汽车质押贷款谁能介绍一下哇。。。
13
爸爸有多年的腰椎间盘突出症,有什么看好他?
14
买婴儿游泳池有什么讲究吗?求支招!
15
小型家用制氧机价格是多少?谁知道
16
宠物香波还有什么分别么?看别人说都不能混用的,求教?
17
新任贵宾主人一枚,求教贵宾犬用什么什么宠物香波比较合适?
18
谁 知 道 2 0 1 4 年 元 旦 放 假 怎 么 安 排 ?
19
紫御华府的园林分为哪几个区域?都有什么树种?
20
双色球怎么能中大奖
21
冬天能让宝宝游泳吗?我想给宝宝买个婴儿游泳池,有没有好的建议?
22
紫御华府的会.所怎么样啊?
23
避免商品砼受污染有什么方法?
24
买婴儿游泳池有什么讲究吗?求支招!
25
只有3天时间就要考试了,可是我感觉什么都没懂,我也想考好,我该怎么办呢?
26
香菜在什么时候可以播种,什么时候收获
27
什么牌子的弯管器比较安全?
28
婴儿游泳池一般多少钱?我看网上有几十到几百的,不知道买哪种好!
29
中国的食物怎么说
30
谁对婴儿洗澡盆比较了解的,有没有材质比较安全的洗澡盆,朋友小孩满月,急送人!
31
在哪能买到芙柯祛斑产品?
32
管道定位仪什么品牌的比较好,国产的和进口的有啥区别?
33
给宝宝洗澡,用什么样的婴儿洗澡盆比较好?
34
牙科治疗椅水管里都是气体是什么原因
35
我的显示器有点看不大清楚了,是什么原因?
36
闵行最好去哪家学校学化妆?
37
99999999乘99999999怎么简算?
38
风湿关节炎患者不能吃哪些食物
39
想给宝宝买个婴儿游泳池,不知道什么牌子的比较安全?
40
本月有31号吗?
41
预定会议中心能预定上海的会议场地吗?
42
大S 代言过芙柯祛斑产品吗?大s和芙柯祛斑产品什么关系?
43
肩周炎 可以贴风湿膏吗
44
怎么用方程解4(4x—11)=3(22—2x)
45
物质有哪几种状态?
46
闵行哪里有学化妆的地方啊?
47
198819901314是什么意思啊!
48
风湿关节炎患者吃哪些食物好
49
谁能告诉我中国如何走出美国在中国周边的军事基地制约,如何反制约美国在亚洲的军事基地?
50
晚睡的危害是什么?
51
家用制氧机好用吗?哪个牌子的质量好,求推荐
52
我12岁脖子右侧痛妈妈说是睡觉不好弄的但是有3~4天了得了什么病啊
53
喜马拉雅山脉是怎样形成的?
54
管道非开挖施工设备哪里有卖,网上可以买到吗?
55
我会死吗?
56
9个月的小孩吃些什么饭?
57
求教英语题一道
58
电动液压压接工具那种比较好?
59
不想做了自离有工资吗
60
想学化妆,闵行哪个学校好?
61
哪有卖专业的电动套丝机,哪个牌子的比较好?
62
治头痛的方子有木有,求贡献
63
你们认为在学校学习快乐吗?(家长靠边)
64
网上所说的芙柯祛斑是不是骗人的?
65
沈这个词是怎样演变过来的
66
我12岁脖子右侧痛妈妈说是睡觉不好弄的但是有3~4天了
67
在网上看中了一款A+V的钻饰,非常喜欢,但之前没听说过这个牌子,不知道该不该买?
68
有谁知道什么牌子的管割刀比较专业啊?在线求介绍!
69
乙氧苯柳胺药膏不含激素有效吗
70
天王星上有钻石吗
71
求推荐几款性能比较好的套丝机,在线急求!
72
芙柯祛斑效果怎么样?是真是假?托勿扰
73
浑身冷又痛怎么办
74
在沙发上经常睡觉可以吗?
75
现在国内哪些钻饰的牌子比较好点呢?
76
上海哪里有卖专业套丝机,公司准备买一批套丝机,急求!
77
香菜要怎样播种
78
中国最近一次人口普查是什么时间?
79
在泰州怀孕多长时间检查?
80
七年级上册语文第八课以什么为序?
81
人体内的金属是否可以导电
82
王的反义词是什么
83
婴儿游泳池一般多少钱?我看网上有几十到几百的,不知道买哪种好!
84
车载制氧机哪个牌子的比较好?求推荐!
85
什么牌子的弯管器比较安全?公司想采购一批弯管器,看中安全性,求推荐!
86
1200个高频汉字有哪些
87
眼球上有黄斑是咋回事,怕是眼睛有什么问题了吧?
88
闵行专业化妆学校?
89
电动液压压接工具那种比较好?
90
下面是按一定规律排列的一列数:四分之一,七分之三,十二分之五,十九分之七……那么第N个数是?
91
芙柯祛斑和瓷肌(植玫兰)祛斑哪个祛斑好?
92
上海哪里有卖A+V钻饰的?
93
管道定位仪什么品牌的比较好,国产的和进口的有啥区别?
94
种香菜要注意什么?
95
牙齿坏掉了就得快点治吗?拖久了什么后果?
96
闵行最专业的化妆学校在哪?
97
芙柯祛斑产品真的能去除辐射斑吗?
98
闵行有好一点的化妆学校吗?
99
板栗上火吗?
100
吃什么可以长智商