<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>凉风集 &#187; 架构</title>
	<atom:link href="http://www.lifangjin.com/archives/tag/%e6%9e%b6%e6%9e%84/feed" rel="self" type="application/rss+xml" />
	<link>http://www.lifangjin.com</link>
	<description>李方进的个人BLOG</description>
	<lastBuildDate>Sun, 05 Feb 2012 15:36:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>大中型网站web程序开发架构思考</title>
		<link>http://www.lifangjin.com/archives/716</link>
		<comments>http://www.lifangjin.com/archives/716#comments</comments>
		<pubDate>Wed, 09 Sep 2009 10:12:12 +0000</pubDate>
		<dc:creator>李 方进</dc:creator>
				<category><![CDATA[开发编程]]></category>
		<category><![CDATA[接口]]></category>
		<category><![CDATA[架构]]></category>

		<guid isPermaLink="false">http://www.lifangjin.com/?p=716</guid>
		<description><![CDATA[这几天一直在琢磨这个问题，今天一次会上在白板上粗略了画了一下我的想法，会后抽了点时间自己整理了一下。 基本上这个架构也是按照标准的三层结构来设计的，如下图（点击看大图）： 传统web程序的开发模式基本只有2层：应用层和数据层，有理无理就直接到数据库里去操作（大部分web编程书籍都是这么教的）。 而引入接口层以后，只有对数据的添加、删除和修改是通过接口去数据库里操作，select操作则增加了一个数据缓存，可以大大减轻数据库的压力，而对于一般的大中型网站而言，恐怕更多的访问压力是来自select，而不是对数据的添加、删除和修改的交互性操作。原本，html静态化是解决办法之一，但这个解决办法面临的问题是一旦页面有所变更，则需要全部重新静态化，对于数据量较大的大中型网站，无异是一场噩梦——动静结合，反而能恰到好处。 接口身份验证：采用OAuth，可以做成通用的平台 接口规则：负责将接口方法函数按照select、update、insert、delete进行分类 接口数据缓存：设想是生成数据的XML静态文件，应用层只需要解析这些XML静态文件即可，而接口操作则是输出XML的字符串，可以做成通用平台。引入缓存数据周期，则可以保证不同的应用对于数据本身的实时性的要求得以满足。 接口操作：即实现接口方法函数，根据方法函数到数据库里进行操作，要么输出字符串为XML的结果集，要么输出字符串为XML的操作状态码以告知应用层update、insert、delete操作状态，譬如操作成功、无权限操作等等 应用层：根据业务逻辑的需要调用合适的接口去实现业务逻辑 原则上这样的设计，一方面能平衡网站访问量大带来的程序压力，一方面也能做到应用层与数据层无关。应用层可以采用任何一种开发语言(.net、PHP、java等)，而数据库也可以采用任何一种数据库(MS SQL SERVER、MYSQL、ORACLE)，对服务器操作系统而言，也能做到WINDOWS+LINUX的混合架构，发挥两种操作系统各自的优势。 时间有限，此图还有待完善，譬如可以结合网站的硬件架构。]]></description>
			<content:encoded><![CDATA[<p>这几天一直在琢磨这个问题，今天一次会上在白板上粗略了画了一下我的想法，会后抽了点时间自己整理了一下。</p>
<p>基本上这个架构也是按照标准的三层结构来设计的，如下图（点击看大图）：</p>
<p><a href="http://www.lifangjin.com/wp-content/uploads/2009/09/Snap1.gif" rel="lightbox[716]"><img class="alignnone size-medium wp-image-717" title="Snap1" src="http://www.lifangjin.com/wp-content/uploads/2009/09/Snap1-300x123.gif" alt="Snap1" width="300" height="123" /></a></p>
<p>传统web程序的开发模式基本只有2层：应用层和数据层，有理无理就直接到数据库里去操作（大部分web编程书籍都是这么教的）。</p>
<p>而引入接口层以后，只有对数据的添加、删除和修改是通过接口去数据库里操作，select操作则增加了一个数据缓存，可以大大减轻数据库的压力，而对于一般的大中型网站而言，恐怕更多的访问压力是来自select，而不是对数据的添加、删除和修改的交互性操作。原本，html静态化是解决办法之一，但这个解决办法面临的问题是一旦页面有所变更，则需要全部重新静态化，对于数据量较大的大中型网站，无异是一场噩梦——动静结合，反而能恰到好处。</p>
<p>接口身份验证：采用OAuth，可以做成通用的平台</p>
<p>接口规则：负责将接口方法函数按照select、update、insert、delete进行分类</p>
<p>接口数据缓存：设想是生成数据的XML静态文件，应用层只需要解析这些XML静态文件即可，而接口操作则是输出XML的字符串，可以做成通用平台。引入缓存数据周期，则可以保证不同的应用对于数据本身的实时性的要求得以满足。</p>
<p>接口操作：即实现接口方法函数，根据方法函数到数据库里进行操作，要么输出字符串为XML的结果集，要么输出字符串为XML的操作状态码以告知应用层update、insert、delete操作状态，譬如操作成功、无权限操作等等</p>
<p>应用层：根据业务逻辑的需要调用合适的接口去实现业务逻辑</p>
<p>原则上这样的设计，一方面能平衡网站访问量大带来的程序压力，一方面也能做到应用层与数据层无关。应用层可以采用任何一种开发语言(.net、PHP、java等)，而数据库也可以采用任何一种数据库(MS SQL SERVER、MYSQL、ORACLE)，对服务器操作系统而言，也能做到WINDOWS+LINUX的混合架构，发挥两种操作系统各自的优势。</p>
<p>时间有限，此图还有待完善，譬如可以结合网站的硬件架构。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lifangjin.com/archives/716/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

