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

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

 

1.     基本结构图

 

File?id=dgsr497v_207f4qn6cff_b

 

 

 

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#来编写,然后提供一个WCFTCP方式的)的外部接口,以便Web服务器调用。值得重点强调的,无论是利用C++还是C#来编写该程序,都一定要考虑好资源释放问题(JavaC#开发人员更应该注意这一点,千万别想着什么垃圾自动回收,很多资源是回收不了的),包括数据库连接的释放,数据结构(临时数据的储存体)的释放,以及无用线程的释放。

       这次先聊到这里,在后面的BLog中我们会对整个构架中的每一个技术点进行详细说明的。如何大家需要技术支援,请给我发Email:warensoft@foxmail.com

 

转载于:https://www.cnblogs.com/warensoft/archive/2010/03/26/1697293.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人人网 Windows Phone 7 应用开发起步

目前,人人网在国内高校学生中的普及率非常高。前段时间,大概是11月下旬的样子,人人网发布了Windows Phone 7客户端的公测版。我想,Windows Phone 7本地化的优劣,直接关系到其将来在国内的市场份额。而诸如人人等针对学…

XP Sp2下双机通过无线网卡实现Internet共享

两台均有无线网卡、装有XP SP2系统的计算机如何实现共享Internet上网呢,请参考一下步骤: 1、打开两台计算机的无线网络连接属性,并切换至“无线网络配置”页签。2、点中右下角的高级按钮设置,选中最下面的“仅计算机到计算机” 和…

SimpleDateFormat解析的时候字符串过长问题

竟然不会报错; try {SimpleDateFormat dateFormatFrom new SimpleDateFormat("yyyyMMddHHmmss");String dateStr "2015080910400000";Date parse dateFormatFrom.parse(dateStr);System.out.println(parse);} catch (Exception e) {e.printS…

C#面向对象设计模式第九讲:Composite 组合模式(结构型模式)

(根据MSDN Webcast相关课程整理) 由俄罗斯套娃讲起。娃娃里又包含另一个娃娃,最后那个不包含任何娃娃。 组合模式,采用树型结构来实现普遍存在的对象容器,将本原一对多的复杂的关系,转换成一对一的简单关系…

https://enhancer.io

enhancer.io 转载于:https://juejin.im/post/5d4aad7bf265da03bf0f2d01

chmod命令详细用法

指令名称 : chmod 使用权限 : 所有使用者 使用方式 : chmod [-cfvR] [--help] [--version] mode file... 说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。 参数 : mode : 权限设定字串,格式如下…

是用Entity.Save(),还是用DAL.Save(Entity e)

是用Entity.Save(),还是用DAL.Save(Entity e) 自从上一次写关于ORM的文章已经是几个月前的事情了,在这里先贴一下文章的地址,如果大家感兴趣的话可以去看看。 1、支持差异数据保存的数据库实体类设计——处女作 2、支持差异数据保存的数据库实…

Docker for Windows

安装条件:必须是 Win10 Pro 或者 Enterprise version. 转载于:https://www.cnblogs.com/qijiage/p/9261258.html

【Android】 -- 使用UncaughtExceptionHandler捕捉全局异常

在综合统计SDK(欧盟统计局的朋友,百度统计)之后。有一个非常有利的功能测试:错误分析。此功能可以在程序的执行中遇到崩溃(runtimeException)反馈给server,帮助开发者提高产品。多功能适配器机。 然而在公司android开发中不集成这些SDK&#…

《火影忍者:究级风暴》渲染技术究极解析!

http://www.opengpu.org/forum.php?modviewthread&tid6609 与Takara Tomy公司的《火影忍者》系列游戏不同,初次登陆PS3平台的本作是由日本CyberConnect2制作的对战格斗游戏《火影忍者:终极英雄》系列的最新作。虽然游戏的开发商仍然是CyberConnect2…

文本框只能输入数字代码

1.文本框只能输入数字代码(小数点也不能输入)<input οnkeyup".replace(/\D/g,)" onafterpaste".replace(/\D/g,)"> 2.只能输入数字,能输小数点.<input οnkeyup"if(isNaN(value))execCommand(undo)" onafterpaste"if(isNaN(value…

说说大型高并发高负载网站的系统架构(ZT)

我在Cernet做过拨号接入平台的搭建&#xff0c;而后在Yahoo3721负载搜索引擎前端平台开发&#xff0c;又在猫扑处理过大型社区猫扑大杂烩的架构升级等工作&#xff0c;同时自己接触和开发过不少大中型网站的模块&#xff0c;因此在大型网站应对高负载和并发的解决方案上有一些积…

工程中新增Properties

如一开始工程中是没有Properties文件夹的&#xff01; 但工程目录文件夹下却有一个Properties&#xff1a; 现在要向这个Properties文件夹中添资源文件。操作步骤&#xff1a; [添加新项]->[资源文件] 再将Resource.resx文件拉到Properties DONE!!!

取得MS SQL 2000数据库一个表的所有列名

经常做的一个操作&#xff0c;列出数据库中一个表的所有列名。方法如下&#xff1a;先从SYSTEMOBJECT系统表中取得数据表的SYSTEMID,然后再从SYSCOLUMN表中取得该表的所有列名。SQL语句如下&#xff1a;use dbname --dbname改为你要…

ASP六大对象介绍

1、Application对象 Application对象是个应用程序级的对象&#xff0c;用来在所有用户间共享信息&#xff0c;并可以在Web应用程序运行期间持久地保持数据。 Application的属性&#xff1a;   方法如下&#xff1a;   Application对象没有内置的属性&#xff0c;但…

二分模版

详情请见http://blog.csdn.net/int64ago/article/details/7425727 //二分查找&#xff08;找到返回左端&#xff0c;找不到返回右端&#xff09; int bSearch(int x,int y,int g) {int mid,lx,ry;while(l<r){mid(lr)>>1;if(a[mid]>g) rmid-1;else lmid1;}return l;…

Django:序列化的几种方法

前言 关于序列化操作&#xff0c;就是将一个可迭代的数据结构&#xff0c;通过便利的方式进行我们所需要的操作。 今天历来归纳一下&#xff0c;Django中的几种不同得分方法&#xff0c;已经Django-restframework提供的方法 创建一个Django的项目 再新建一个app 创建一个模型&a…

让atmega8可以和飞思卡尔xs128一样对IO引脚进行定义

好吧&#xff0c;不得不承认&#xff0c;我使用飞思卡尔的XS128单片机已经非常之习惯了&#xff0c;结果一上手atmega8&#xff0c;最令我反感的就是atmega8不能对IO引脚进行操作&#xff0c;非要用些繁琐的位操作。我就不&#xff0c;我就要像飞思卡尔那样操作。。。 于是。。…

c#通过app.manifest使程序 右键 以管理员身份运行

c#通过app.manifest使程序以管理员身份运行 时间:2013-06-27 22:47来源:网络收集本站整理 作者:jtydl 点击: 1175 次微软在Windows Vista开始引入了UAC&#xff08;用户帐户控制&#xff09;新技术&#xff08;点击这儿了解什么是UAC&#xff09;。当程序执行时需要权限的话&am…

DataList用法

图片以3列形式显示 <asp:DataList ID"myDataList" runat"server" RepeatColumns"3"> <ItemTemplate> <table width"250px" height"200px" border"0px"> …