求C#写的2017最新手指游戏大全服务器

.net下有什么高性能的http的server么?想试着用c#做h5游戏服务器
[问题点数:40分]
本版专家分:643
结帖率 96.97%
CSDN今日推荐
本版专家分:3603
本版专家分:643
本版专家分:451668
2017年 总版技术专家分年内排行榜第十2013年 总版技术专家分年内排行榜第八
2017年2月 总版技术专家分月排行榜第三
2018年7月 .NET技术大版内专家分月排行榜第一2018年6月 .NET技术大版内专家分月排行榜第一2018年1月 .NET技术大版内专家分月排行榜第一2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2018年4月 .NET技术大版内专家分月排行榜第二2018年3月 .NET技术大版内专家分月排行榜第二2017年12月 .NET技术大版内专家分月排行榜第二2017年9月 .NET技术大版内专家分月排行榜第二2017年7月 .NET技术大版内专家分月排行榜第二2017年6月 .NET技术大版内专家分月排行榜第二2016年12月 .NET技术大版内专家分月排行榜第二2016年9月 .NET技术大版内专家分月排行榜第二2016年6月 .NET技术大版内专家分月排行榜第二2016年3月 .NET技术大版内专家分月排行榜第二2016年1月 .NET技术大版内专家分月排行榜第二2015年12月 .NET技术大版内专家分月排行榜第二2015年2月 .NET技术大版内专家分月排行榜第二2015年1月 .NET技术大版内专家分月排行榜第二2014年11月 .NET技术大版内专家分月排行榜第二2014年5月 .NET技术大版内专家分月排行榜第二2014年4月 .NET技术大版内专家分月排行榜第二2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
本版专家分:451668
2017年 总版技术专家分年内排行榜第十2013年 总版技术专家分年内排行榜第八
2017年2月 总版技术专家分月排行榜第三
2018年7月 .NET技术大版内专家分月排行榜第一2018年6月 .NET技术大版内专家分月排行榜第一2018年1月 .NET技术大版内专家分月排行榜第一2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2018年4月 .NET技术大版内专家分月排行榜第二2018年3月 .NET技术大版内专家分月排行榜第二2017年12月 .NET技术大版内专家分月排行榜第二2017年9月 .NET技术大版内专家分月排行榜第二2017年7月 .NET技术大版内专家分月排行榜第二2017年6月 .NET技术大版内专家分月排行榜第二2016年12月 .NET技术大版内专家分月排行榜第二2016年9月 .NET技术大版内专家分月排行榜第二2016年6月 .NET技术大版内专家分月排行榜第二2016年3月 .NET技术大版内专家分月排行榜第二2016年1月 .NET技术大版内专家分月排行榜第二2015年12月 .NET技术大版内专家分月排行榜第二2015年2月 .NET技术大版内专家分月排行榜第二2015年1月 .NET技术大版内专家分月排行榜第二2014年11月 .NET技术大版内专家分月排行榜第二2014年5月 .NET技术大版内专家分月排行榜第二2014年4月 .NET技术大版内专家分月排行榜第二2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
本版专家分:29824
本版专家分:643
本版专家分:8935
2017年4月 .NET技术大版内专家分月排行榜第二
本版专家分:63277
匿名用户不能发表回复!
其他相关推荐15:25 提问
C#服务端代码就是必须在服务器上写吗?
我这里有个别人的程序,可以上传下载文件,我看了好像上传下载功能是在服务端上
我想实现删除服务器的文件,就是必须在服务器上写服务端代码吗?
按赞数排序
当然不是,你可以在你的计算机上写程序。但是服务器端代码必须在服务器上运行(这里说的服务器,不一定需要服务器计算机,也可以是pc,但是在系统中充当的角色是服务器)
服务器端的程序,不是一定要在服务器上开发,一般的 PC 就可以。
开发成功后,部署到服务器上就可以的。
当然,你开发用的 PC 最好能模拟服务器,如网络环境。
楼主你要是简单的 本地测试代码 不需要部署在服务器上 毕竟生产环境是为了 对外访问使用的
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐&&&&& 本人80后程序猿一枚,原来搞过C++/Java/C#,因为工作原因最后选择一直从事C#开发,因为读书时候对游戏一直比较感兴趣,机缘巧合公司做一个手游的项目,我就开始游戏服务器的折腾之旅。
&&&&& 游戏的构架是前端unity3d,服务端C#,数据库用SqlService。基础工作做完,就开始动工,因为前期考虑不周,所以暂定使用Http短链接进行,这也是导致后面服务器失败的根本原因之一,下面就说说前期最基础的构架:
&&&&& 就是最基础的构架,但是接下来由于游戏的细化,一些列的问题就出现了:
&&&&& 1.账号登陆的顶号问题如何处理,我们采用的每个用户登录之后生成sessionID,然后在客户端心跳包(轮训)请求服务器,匹配用户ID和SessionID的匹配进行用户时候重复登录;
&&&&& 2.在游戏战斗过程中,会涉及服务器对客户进行广播数据,因为采用HTTP请求,所以就只有使用心跳包进行处理;
&&&&& 3.服务器很多配置文件都采用cspbuf进行配置使用,因为担心每次加载数据过多,所以采用的依赖缓存进行加载和处理;
&&&&& 貌似所以的问题都处理好了,接下来就是测试了,开始进行小数量的测试,游戏还可以勉强的运行,但是随后随着游戏玩家数量的增加,服务器慢慢的支撑不住,出现CUP和内存消耗过高,导致游戏经常卡段的情况,最后经过分析,导致的原因可能如下:
&&&&& 1.客户端采用过多的轮训服务器,导致IIS压力过大,CUP和内存增加;
&&&&& 2.配置缓存文件过多,导致服务器内存消耗;
&&&&& 3.游戏过程中很多数据都直接读取数据库操作,导致了IO过多,所以CUP和内存消耗过大;
&&&&& 4.传输过程中大部分数据使用正常的JSON数据没有进过压缩和处理,也导致传输通道消息资源的浪费;
&&&&& 5.程序中的部分优化没有做到;
&&&& 反正等等原因导致了第一次游戏服务器的开发,出现各种问题,现在表面解决了问题,能够在小数量范围运行,但是数据大就出现问题,所以就开始考虑下一个版本的重构;
阅读(...) 评论()Unity3d&C#分布式游戏服务器ET框架介绍-组件式设计
前几天写了《开源分享 Unity3d客户端与C#分布式服务端游戏框架》,受到很多人关注,QQ群几天就加了80多个人。开源这个框架的主要目的也是分享自己设计ET的一些想法,所以我准备写一系列的文章,介绍下自己的思路跟设计,每篇一个主题,这次介绍的是组件设计。
在代码复用和组织数据方面,面向对象可能是大家第一反应。面向对象三大特性继承,封装,多态,在一定程度上能解决不少代码复用,数据复用的问题。不过面向对象不是万能的,它也有极大的缺陷:
1. 数据结构耦合性极强 一旦父类中增加或删除某个字段,可能要影响到所有子类,影响到所有子类相关的逻辑。这显得非常不灵活,在一套复杂的继承体系中,往父类中改变字段会变得越来越麻烦,比方说ABC是D的子类,某天发现需要增加一个AB都有的数据,但是C没有,那么这个数据肯定不好放到父类中,只能将AB抽象出来一个父类E,E继承于D,AB共有的字段加到E中,一旦继承结构发生了变化,可能接口也要改变,比方说之前有个接口传入参数类型是E,当AB不再需要共用的那个字段,那么需要调整继承关系,让AB重新继承D,那么这个接口的传入参数类型需要改成D,其中的逻辑代码很可能也要发生调整。更可怕的是游戏逻辑变化非常复杂,非常频繁,可能今天加了个字段,明天又删掉了,假如每次都要去调整继承结构,这简直就是噩梦。继承结构面对频繁的数据结构调整感觉很无力。 2. 难以热插拔 继承结构无法运行时增加删除字段,比如玩家Player平常是走路,使用坐骑后就骑马。问题是坐骑的相关信息就需要一直挂在Player对象上面。这就显得很不灵活,我不骑马的时候内存中为啥要有马的数据?接口也有同样的问题,一个类实现了一个接口,那么这个接口就永远粘在了这个类身上,你想甩掉她都不行,还是以骑马为例,玩家Player可以进行骑行,那么可能继承一个骑行的接口,问题是,当我这个Player从坐骑上下来时,玩家Player身上还是有骑行的接口,根本没法动态删掉这个接口!可能例子举得不是很对,但是道理表述的应该很清楚了。
使用面向对象可能导致灾难性后果,游戏开发中有新人有老人,有技术好的,有技术差的。人都是喜欢偷懒的,当你发现调整继承关系麻烦的时候,有可能AB中增加一个字段为了省事直接就放到父类D中去了。导致C莫名奇妙的多了一个无用的字段。关键还没法发现,最后导致父类D越来越大,到最后有可能干脆就不用ABC了,直接让所有对象都变成D,方便嘛!是的,很多游戏就是这么干的,开发到最后根本就不管继承关系了,因为想管也管不了了。
面向对象在面对复杂的游戏逻辑时很无力,所以很多游戏开发者又倒退了回去,使用面向过程进行开发游戏,面向过程,简单粗暴,不考虑复杂的继承,不考虑抽象,不考虑多态,是开发届的freestyle,挽起袖子就开撸,但同时,代码逻辑的复用性,数据的复用性也大大降低。面向过程也不是一种好的游戏开发模式。
组件模式很好的解决了面向对象以及面向过程的种种缺陷,在游戏客户端中使用非常广泛,Unity3d,虚幻4,等等都使用了组件模式。组件模式的特点:
1.高度模块化,一个组件就是一份数据加一段逻辑
2.组件可热插拔,需要就加上,不需要就删除
3.类型之间依赖极少,任何类型增加或删除组件不会影响到其它类型。
但是目前只有极少有服务端使用了组件的设计,守望先锋服务端应该是使用了组件的设计,守望先锋的开发人员称之为ECS架构,其实就是组件模式的一个变种,E就是Entity,C就是Component,S是System,其实就是将组件Component的逻辑与数据剥离,逻辑部分叫System,话题扯远了,还是回到ET框架来把。
ET框架使用了组件的设计。一切都是Entity和Component,任何类继承于Entity都可以挂载组件,例如玩家类:
publicsealedclassPlayer: Entity{
publicstringAccount { get; privateset; }
publiclongUnitId { get; set; }
publicvoidAwake(stringaccount) {
this.Account = }
publicoverridevoidDispose() {
if( this.Id == 0) { return; } base.Dispose(); }}
给玩家对象挂载个移动组件MoveComponent,这样玩家就可以移动了,给玩家挂上一个背包组件,玩家就可以管理物品了,给玩家挂上技能组件,那么玩家就可以施放技能了,加上Buff组件就可以管理buff了。
player.AddComponent& MoveComponent&();
player.AddComponent& ItemsComponent&();
player.AddComponent& SpellComponent&();
player.AddComponent& BuffComponent&();
组件是高度可以复用的,比如一个NPC,他也可以移动,给NPC也挂上MoveComponent就行了,有的NPC也可以施放技能,那么给它挂上SpellComponent,NPC不需要背包,那么就不用挂ItemsComponent了
ET框架模块全部做成了组件的形式,一个进程也是由不同的组件拼接而成。比方说Loginserver需要对外连接也需要与服务器内部进行连接,那么login server挂上
// 内网网络组件NetInnerComponent,处理对内网连接Game.Scene.AddComponent&NetInnerComponent, string, int&(innerConfig.Host, innerConfig.Port); // 外网网络组件NetOuterComponent,处理与客户端连接Game.Scene.AddComponent&NetOuterComponent, string, int&(outerConfig.Host, outerConfig.Port);
比如battle server就不需要对外网连接(外网消息由gateserver转发),那么很自然的只需要挂载一个内网组件即可。
类似Unity3d的组件,ET框架也提供了组件事件,例如Awake,Start,Update等。要给一个Component或者Entity加上这些事件,必须写一个辅助类。比如NetInnerComponent组件需要Awake跟Update方法,那么添加一个这样的类即可:
[ObjectEvent] publicclassNetInnerComponentEvent : ObjectEvent&NetInnerComponent&, IAwake, IUpdate{
publicvoidAwake(){
this.Get().Awake(); }
publicvoidUpdate(){
this.Get().Update(); }}
这样,NetInnerComponent在AddComponent之后会调用其Awake方法,并且每帧调用Update方法。
ET没有像Unity使用反射去实现这种功能,因为反射性能比较差,而且这样实现的好处是这个类可以放到热更dll中,这样组件的Awake Start,Update方法以及其它方法都可以放到热更层中。将Entity和Component做成没有方法的类,方法都放到热更层,方便热更修复逻辑bug。
组件式开发最大的好处就是不管菜鸟还是高手,开发一个功能都能很快的知道怎么组织数据怎么组织逻辑。可以完全放弃面向对象。使用面向对象开发最头疼的就是我该继承哪个类呢?之前做过最恐怖的就是虚幻三,虚幻三的继承结构非常多层,完全不知道自己需要从哪里开始继承。最后可能导致一个非常小的功能,继承了一个及其巨大的类,这在虚幻三开发中屡见不鲜。所以虚幻4改用了组件模式。组件模式的模块隔离性非常好,技术菜鸟某个组件写得非常差,也不会影响到其它模块,大不了重写这个组件就好了。
正是因为ET使用了可拆卸的组件模式,ET可以将所有服务器组件都装到同一个进程上,那么这一个进程就可以当作一组分布式服务器使用。从此用vs调试分布式服务器成为了可能。正因为这样,平常开发只使用一个进程,发布的时候发布成多个进程就行了。说实在的,不是吹牛,这是一个伟大的发明,这一发明解决了分布式游戏服务器开发中的大大大难题,极大的提高了开发效率。
代码地址:https://github.com/egametang/Egametang
原文地址:http://www.cnblogs.com/egametang/p/7511589.html
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点求 C#编写的OPC服务器和客户端源码 - 『悬赏问答区』
- 吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn
后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
查看: 401|回复: 2
求 C#编写的OPC服务器和客户端源码
阅读权限10
求 C#编写的OPC服务器和客户端源码 简单的就不用了
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
插件好像有,源码一般不会分享吧
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
楼主可分享一下:C#编写的OPC服务器和客户端源码;谢谢
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
免责声明:吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
( 京ICP备号 | 京公网安备 87号 )
Powered by Discuz!
Comsenz Inc.

我要回帖

更多关于 2017最新手指游戏大全 的文章

 

随机推荐