游戏大厅从基础开始(4)-通过L2X用配置文件反射组装程序(VB only)

很久没更新了。前一阵工作比较充实(就是比较劳累拉~),加上向老赵学习努力瘦身,精神愈发痛 苦,难免就懒惰下来。通用倒了,项目突然死亡,On bench了一个月,越发的无力。

好消息也是 有的,在m$ msdn论坛努力回答问题,总算当上了个版主。虽然7月申请mvp失败 但是鄙人生性好显摆,好听一点就是爱分享,所以一个咕噜爬起来,又是条好汉。

-----------------------闲话到此 为止-----------------------

通过配置来制定程序

说起通过配置来制定程序,不得不 提及asp.net

还记得asp.net membership 在web.config中的声明么?

<membership defaultProvider="Main_SqlMemberShipProvider" userIsOnlineTimeWindow="20">

<providers>

<add connectionStringName="GTSCOM_DATABASE_DATAConnectionString1" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" passwordFormat="Clear" applicationName="GTSCOM_Customer" name="Main_SqlMemberShipProvider" type="System.Web.Security.SqlMembershipProvider"/>

</providers>

</membership>

实现不同工厂产生了相同接口的实体类型 MembershipUser

Web.config 就是这么神奇,动不动什么东西就加入进来了~ 编译器往往是根据web.config生成 临时cs/vb代码,将其编译结果作为网站的基础 。

编译config提升的性能我可是非常羡慕阿,但 是改配置就重新编译这样的事情也经常被诟病。改一个连接字符串整个网站编译5分钟的抱怨,偶尔也会 听到。

咱们的游戏大厅,无论是做web game 还是做联众,都不适合

另一种办法就是反射 了。

l 大厅组装要求

n 动态加载需要的类库(多种游戏逻辑、房间逻辑、副本类型的 工厂载入)

n 策略配置 (策略模式的策略类的载入)

n 通过reload config 修改工厂 类和策略类 实现无重启的“下一场游戏生效”配置更新。

n 性能不能受到过多影 响

Okay,反射都能胜任。

如果反射得到的都是实现主程序引用中IFactory接口的工厂,返 回的都是符合IProductClass 接口的对象,访问成员都通过访问接口进行,初始化以外性能上也不会受 影响。看起来十分可行!

另一方面:

l 配置文件要求

n 让我这个懒蛋比较容易 读(架构清晰)

n 让我这个懒蛋比较方便写 (编写智能提示)

n 写程序的时候比较舒 坦 (编程智能提示)

恩,眼睛里冒贼光了。

时间: 2024-08-03 22:51:04

游戏大厅从基础开始(4)-通过L2X用配置文件反射组装程序(VB only)的相关文章

游戏大厅从基础开始(3.5)——客户端与服务器的连接

可能要犯大忌讳 本次只有代码 所以补充两句 正在实现策略模式的constructor 所以最 近没有时间整理注释 大家凑合看 随后补说明 Code Namespace Communicate.TCP Class TCPLinkListener Inherits Global.WayneGameSolution.Communicate.LinkListener Public Shared ReadOnly propertyKeys As String() = {"Port", "

游戏大厅从基础开始(2)——最基础的交流:聊天

从前有个国王叫做混沌 他没有七窍 没办法与外界交流 两个朋友希望他开心 就给他凿了七窍 于是他就死了. 所以我们这一章来给用户添加七窍,让用户和房间具有最 基本的聊天功能. 什么?我前面的故事什么意思? 我也不知道. 其实,网络游戏 交流的最基础,就是聊天室. 如果我们把任何一个网络游戏高度抽象化,把所有的非共性的部分 全部去掉,我们会得到这样一个抽象的流程. 客户端发包 给服务器. 服务器处理包. 客户端收取广播数据. 刚刚好 聊天室恰恰实现了这样一个最简化的流程. 用户 说话. 服务器作简单

游戏大厅从基础开始(1)——最简单的关系,用户与房间

做游戏 就好像写一篇简单的记叙文 作为小学语文大纲要求 记叙文需要完整地叙述: 时间,地点,人物,事件 也就是 WHEN,WHERE,WHO,WHAT HAPPENED 猜猜哪个最重 要? 我选WHO WHO 没有WHO,没有了某个意识的主观活动影响客观环境,故事就是 静止的.那就不叫故事,叫速写. 在一个网络游戏服务模型中,最基础的概念就是 WHO 有了WHO游戏才不是电影电视剧那样的直接灌输. 有了WHO电脑屏幕前的个体才能与别的个体有所 区分 有了个体的区分 网络游戏才可以"互动"

游戏大厅从基础开始(8)--绕回来细说聊天室(下)垃圾列表

前情回顾 我们的最初的需求是建立一个拉模式下用户暂存的顺序信息池 列表-e话通聊天室大厅">还是这张工作模式图 我们可以把这个需求设计为 Clear:清除所有内容 GetEnumerator :实现枚举器,新向旧方向的顺序枚举,这样一旦到达上次读取的时间就可以中断 枚举. RecycleFromButtom:从旧向前进行搜索 把满足条件的扔到GC StackOn :把一个新 信息放在堆栈的顶部 这就好像是一个旧报纸回收传送带,一群人在焚烧之前看看还有没有什么值 得保存的信息 排个照,存个档

游戏大厅从基础开始(5)--绕回来细说聊天室(上)

Wiki定义的聊天室 网络聊天室通常直称聊天室,是一种人们可以在线交谈的的网络论坛,在 同一聊天室的人们通过广播消息进行实时交谈. 聊天室可以建立在即时通讯软件(如MSN Messenger.QQ).P2P软件.万维网(如 Halapo, Meebo ) 等基础上,万维网方式更为普通和种类繁多 ,交谈的手段不局限于文本,更包括语音.视频.通常聊天室是按照房间或频道为单位的,在同一房间 或频道的网人可以实时地广播和阅读公开消息.一般情况下,与其它网络论坛.即时通讯不同的是,聊 天室不保存聊天记录.

游戏大厅从基础开始(3)——客户端与服务器的连接

本文配套源码 看了上篇随笔的回复 发现大家都很关心如何实现连接. 但是本节可能不会涉及到数据连接的 具体实现. 盲目的实现连接 而不试图从更高的位置来考虑连接的作用,只能徒增耦合. 而网络传输的实现各有特点,耦合过高的话 ,稍不注意业务逻辑就会成为通讯协议的牺牲品. 这种状况 往往让我们产生"只能针对xxx传输协议"的架构 . 其实只要多加思考,我 们便能跳出协议的樊篱,毕竟"遵循某个接口实现一个基于xx通讯协议的类" 属于那种可以几 百块钱外包到"老少边

游戏大厅从基础开始(7)--绕回来细说聊天室(中间偏下)之女仆编年史2

老少爷们儿反击战 上一篇中 我们的女仆终于可以做一些像阳光下其他人一样的事情了,少爷 们可以和女仆酱一起参加下午茶~ 难得的上流社会啊 这是永远1v1被人私有的女奴 和 喝茶时被 人共有的女仆酱最明显的差异~ 明媚的午后阳光下,庭院里白色长餐桌两旁,英俊的少爷们彼此 交换着最近的趣闻轶事,一面欣赏女仆酱以1/3几率打翻茶水,可爱而笨笨地努力侍奉着,闪闪发光的样 子. 人间极乐喵~~~~~~~~~~ :3 但距离真正的自由~~无Lock还是很远,很远. 因为, 老爷和少爷的调教仍然是一如既往的频繁

游戏大厅从基础开始(6)--绕回来细说聊天室(中)之女仆编年史1

上一篇我们大致的了解了几种聊天室的行为模式 最简单明了的推模式 几乎不需要任何多余的 语言来描述它的实现 这一篇我们看看如何实现拉模式更有效. 本图清晰的表现了 "拉"模式聊天室的行为. 并发多用户向数据池写数据 并发多用户从数据池读 书据 数据最好以时间为顺序储存在集合中 某时间向后的枚举查找将是最大的消耗. 聊天室进化 -女仆编年史神秘的原始社会 仍然参考我们神奇朴素的Asp3聊天室 53 Application.lock 54 Application("show5&qu

类似QQ游戏大厅导航的树型控件

在最近的项目中,需要实现一个类似QQ游戏大厅导航树型控件.参考了网络上的部分资料,自己动手制作了一个类CTreeCtrlBT.其界面如下: 实现步骤 第一步:新建一个基于对话框的MFC工程,拖动一棵标准树型控件放于界面之上.添加一个新类CTreeCtrlBT派生自CTreeCtrl. 第二步:为该类添加一些消息响应以及虚函数.其详细作用如下: void PreSubclassWindow(); //用于添加初始化控件的相关信息 WM_SIZE //控件区域发生变化时候的处理 WM_PAINT /