ASP.NET Web Game架构设计1--服务器基本结构

1.基本结构图

2.系统组成与角色

整个系统大体上分为三个部分:1.网页客户端。2.IIS Web服务器。3.数据库 及逻辑服务器。其中Web服务器不处理任何逻辑,它的作用只有两点:1.承载用户 。2.中转数据,利用ADO.NET Data Service以及调用其他的WCF,使得Web服务器 成为一个数据代理服务器。

经过失败经验的论证,让IIS承载过多的逻辑,绝对是一个烂想法,应用系统 应该在一开始设计的时候就彻底屏蔽这种方案,从上面图中也不难看出来,逻辑 的处理应该是一部分放在网页中使用JS来实现,另外一部分放在应用系统的逻辑 服务器上实现的。

另外,如果简单的将网页部署到IIS上,性能指标总上不去,典型的体现在要 么内存占用很高,CPU上不去,要么是CPU上去了,内存又占用的太小,这样很难 将服务器的能力发挥到极致。为了应对这个问题,一个非常理想的方案是使用IIS 中的WebGarden技术,可以启动多个w3wp.exe,即多个IIS服务进程。这样作的好处 是将CPU资源以及内存资源均匀的分配到多个服务进程上去,以提升服务器资源的 利用效率。但是,这同样也带来了一些问题,因为要将同一个网站的资源分配到 多个进程,这样内存就无法共享,再加上HTTP协议本身就是短连接,所以每次客 户端发出请求的时候,都有可能被不同的服务进程所接收,这样就是导致Session 无法使用,很头疼吧。为了应对这个问题,我们又需要去配置应用程序的状态服 务器,说白了,就是将Session统一存储到一个服务器上,通常是将其以二进制方 式存储到SQL Server中。当然,这时要求存储在Session中的数据必须是可以串行 化的。

上面说的,可以提高服务器的利用效率以外,在IIS上配置WebGarden还有什么 优点呢?从上面的说明中不难看出,因为状态是存储在统一的SQL Server中的, 所以用户状态是与网站配置到哪一台Web服务器是无关的。因此,我们可以大量添 加Web服务器,同时,位于不同Web服务器上的用户可以共享相同的SQL Server状 态管理,这样可以大大提高在同服、同世界的用户数量。

Web服务器,我们再来看一下应用程序的逻辑服务器和数据库服务器。这两个 服务器通常在运营成本有限的情况下,是放在同一台服务器上的(当然,能分开 是最好的)。应用程序服务器一般会在某一个时间间隔下出现一个CPU使用的高峰 ,内存占用一般都很小,而对于SQL Server来讲,因为要提供大量的缓存,所以 对于内存的消耗是比较大的。

辑服务程序,是整个系统最容易出现性能瓶颈的地方,可以使用C++或者C#来 编写,然后提供一个WCF(TCP方式的)的外部接口,以便Web服务器调用。值得重 点强调的,无论是利用C++还是C#来编写该程序,都一定要考虑好资源释放问题( Java,C#开发人员更应该注意这一点,千万别想着什么垃圾自动回收,很多资源 是回收不了的),包括数据库连接的释放,数据结构(临时数据的储存体)的释 放,以及无用线程的释放。

这次先聊到这里,在后面的BLog中我们会对整个构架中的每一个技术点进行详 细说明的。

时间: 2024-11-18 10:15:01

ASP.NET Web Game架构设计1--服务器基本结构的相关文章

Web基础架构设计原则经典论文《架构风格与基于网络的软件架构设计》导读

1. 概述 Roy Fielding博士(见个人主页)是IETF发布的HTTP和URI协议的主要设计者.HTTP和URI是两个最为重要的Web基础技术架构协议,因此Fielding博士可谓是Web架构的奠基者之一. 除了学术上的卓越成就之外,Fielding博士还参与过很多开源软件的设计和开发工作.他是libwww-perl(世界上最早的HTTP开发库之一)的开发者,曾经负责Apache HTTP服务器中与HTTP.URI协议相关部分代码的开发.Fielding博士还指导过很多其他团队在HTTP

Web表单设计:表单结构

你是否曾为表单设计感到过沮丧或不知所措呢?接下来三篇文章,希望能彻底改变你的看法,真正爱上Web表单设计.首先感谢Luke Wroblewski的帮助,让我有机会细心品味设计表单的乐趣.总体来说,Web表单主宰着结算.注册和数据输入.每天eBay.Taobao上的大量物品主要通过出售物品(Sell Your Item)表单售出:MySpace.Facebook等超过几亿的用户都是通过Web表单加入网站社区的:YouTube.Youku通过上传视频(Upload Your Video)表单收集了大

ASP.NET Web Game构架设计2--数据库设计

首先来看一下数据库设计. 游戏的数据库设计是项目基础设计中很重要的一个环节,下面将说明以下几个 要点: u 为什么选用SqlServer u 基本原则 u 表关系的设置 u 数据的冗余设计 u 什么时候使用存储过程 u 什么时候使用EntityFramework什么时候使用ADO.NET 1.为什么先用SQL Server 首先,不要对SQL Server的性能表示怀疑.作为WebGame应用来讲,它的吞吐 能力,承载能力完全够用. 第二,如果服务代码是使用C#来编写的,那么SQL Server

走向ASP.NET“.NET研究”架构设计——第六章:服务层设计(中篇)

Façade设计模式 在SOA客户端的设计中,最常用的模式就是Façade模式了.Façade模式简化了复杂子系统的调用接口,也就说,Façade隐藏了子系统之间的复杂关系,给客户端一个简单的调用接口.   Façade模式的好处如下: 1. 它可以使得第三方的类库经过包装之后,通过一个简单的接口就可以调用,如下图所示. 2. 它可以通过抽象等方式来解耦其他系统之间的依赖. 3. 它可以使得各个子系统之间的调用复杂度隐藏,通过一个简单的接口就可以调用,如下图所示 在上面的图中: 1. 客户端调用

ASP.NET Web Game构架设计3--业务逻辑服务器之计时器

业务逻辑服务器里主要包括以下四个模块 u 计时服务器 u 资源服务器 u 其他逻辑服务 u 对外的WCF接口模块/Socket接口模块 1.计时服务器 计时服务器的作用是给需要长耗时的功能提供一个延时管理模块,比较典型的 应用如"种菜"的计时,武将升级的计时,科技升级的计时,建筑升级的计时等 .计时服务器主要由四个元素组成: u 用于保存计时队列的数据表 u 添加计时的函数接口 u 删除计时的函数接口 u 用于加速的函数接口 u 定时机制 u 可以动态扩展的计时过期处理程序 用于保存计

整合微信小程序的Web API接口层的架构设计

在我前面有很多篇随笔介绍了Web API 接口层的架构设计,以及对微信公众号.企业号.小程序等模块的分类划分.例如在<C#开发微信门户及应用(43)--微信各个项目模块的定义和相互关系>介绍了相关模块的划分,在<基于微信小程序的系统开发准备工作>介绍了Web API的架构设计思路.本篇随笔对之前介绍的架构内容进行统一的调整更新,以便更加方便实际项目的应用开发,以期达到统一.重用.清晰的目的. 1.公众号.企业号.小程序模块的划分 我们知道,目前微信企业应用,分为公众号.企业号(企业

.NET架构设计、框架设计系列文章总结

从事.NET开发到现在已经有七个年头了.慢慢的可能会很少写.NET文章了.不知不觉竟然走了这么多年,热爱.NET热爱c#.突然想对这一路的经历进行一个总结. 是时候开始下一阶段的旅途,希望这些文章可以在发挥点价值作用.     架构设计: ElasticSearch大数据分布式弹性搜索引擎使用 (推荐) DDD实施经验分享-价值导向.从上往下进行(圈内第一个吃螃蟹DDD实施方案)(推荐) 软件工程-思考项目开发那些事(一)(推荐) SOA架构设计经验分享-架构.职责.数据一致性(推荐) .NET

使用 C# 编写简易 ASP.NET Web 服务器

原文 http://www.cnblogs.com/lcomplete/p/use-csharp-write-aspnet-web-server.html 如果你想获得更好的阅读体验,可以前往我在 github 上的博客进行阅读,http://lcomplete.github.io/blog/2013/07/16/use-csharp-write-aspnet-web-server/.   你是否有过这样的需求--想运行 ASP.NET 程序,又不想安装 IIS 或者 Visual Studio

基于asp.net的Web开发架构探索

最近在研究适合团队开发的web架构解决方案,该架构即要适合分工协作又要有一定扩展性,适合不同的数据库需要,因此我查阅了一些资料,初步构想出了一套架构,请各位多多指教. 问题由来 最近在研究适合团队开发的web架构解决方案,该架构即要适合分工协作又要有一定扩展性,适合不同的数据库需要,因此我查阅了一些资料,初步构想出了一套架构,请各位多多指教. 探索 web开发架构最经典莫过于三层架构,表示层.逻辑层.数据处理层. 数据访问层:其功能主要是负责数据库的访问. 业务逻辑层:是整个系统的核心,它与这个