摘录网上的“.NET 15周年”信息如下:

微软的 .NET 框架本周迎来了 15 岁生日。.NET 的第一个版本在 2002 年 2 月 13 日作为的 Visual Studio.NET 的一部分首次公开亮相。过去 15 年,.NET 框架从一个流行的闭源软件开发平台,变成了一个开源的跨平台开发工具,微软是在 2014 年 11 月 12 日宣布开源 .NET,支持竞争对手 Linux 和 OS X 的平台。微软称,Visual Studio 2017 将于 2017 年 3 月 7 日发布,而 Visual Studio 也迎来了 20 岁生日,开源的 .NET Core 也将发布 2.0版本。

我梳理了一下目前的.NET技术栈: 业务是基于Unity3D(跨平台游戏开发引擎),开发AR、VR 应用; 绝大部分项目采用单机版,使用的编程语言是C#(Mono.NET),不过最近交流的AR几个业务,明显用户已经不太满足单机版,有更多的需求需要用到联网的服务器功能,故技术选型就势在必行了:也算是未雨绸缪吧。

技术栈选型

我的技术选型有2点原则

  1. 成熟,有助于提高开发效率

  2. 人多,有坑大家一起填

这2点原则是基于第一次创业失败的经验总结。约在3年前吧,刚开始创业的时候,特别排斥C#.NET技术(互联网创业,还用C#,说出去都不好意思啊),虽然用的是Unity3D游戏引擎(C#),但是服务器选择却是非.NET倾向的。 那个时候对比了多种技术栈:

  • PHP游戏服务器

  • Node.js游戏服务器

  • C++游戏服务器

  • JAVA游戏服务器

权衡再三选择是Java,采用的是SmartFoxServer商用服务器框架,JAVA和C#非常类似、学习成本低一些。

种种原因,后来呢,第一次创业失败了,我的反思是“创业成功大部分原因是CEO的引导有方,创业失败大部分原因是CTO的选择失误导致”。

当时我没有考虑到成本意识、对一个5人研发团队,C#、Java并行的沟通风险有多大:

如果当时客户端是C#技术栈、服务器端也是C#技术栈,则可以从5人技术团队裁掉1人,节约20%人力成本,而且减少沟通后可以提高30%的开发效率,进而有效的推动产品快速扑向市场的速度,可惜这个是“事后诸葛亮”。

这个“事后诸葛亮”,我一直如噎在喉.

不过去年在一次微软技术峰会,看到网易案例的演讲,我的眼睛亮了起来:“微软技术大神徐玉涛Tory做的分享—网易《绝代双骄》将游戏后端从Java转为新一代.NET Core,研发效率提升20%,服务器成本节省50%”–在线视频为证。

故对选择一款C#的服务器,以打通AR、VR客户端、服务器端,提高开发效率,生产力加速,我个人非常期待

Photon

商用

成熟

C# (Mono.NET)

ASP.NET Core

开源

2.0还未发布

.NET Core

Unity Network Unity自带 局域网

C# (Mono.NET)

有SmartFoxServer的实践经验,故雷同的商用服务器Photon我本次做了专门的实践.

Photon支持3种类型服务器

  • LoadBalancing: 负载均衡服务器

  • MMO: 大型MMO网游服务器

  • Lite: 大厅、房间类型服务器 (相对简单一些)

Photon授权策略:免费版100个CCU (对于绝大部分AR、VR项目足以了);  商用版3500美金不限制CCU (约2.5万人民币)。

云服务器选型

我的选型原则也就2点:

  1. 速度:国内访问速度快、快、快!

  2. 便宜:方便我们这种初创型公司节约不必要的成本

虽然同样是世纪互联在运营,但是早期的AZure在我心目中,网速那是非常非常的慢、价格也是高高在上(和国内的阿里、百度等云比起来,毫无优势可言),故原来使用过阿里云、七牛云,国际版高大上的AZure和AWS都未曾考虑过。

但是呢,微软MVP内部微信群、邮件组,AZure的讨论还是很多的,尤其是“自2017年2月1日起,Azure虚拟机价格大幅下调,最高降价幅度高达60%!”这则消息讨论了好几天,我也渐渐回头持续关注AZure。

通过信息搜集,我了解的AZure信息碎片如下:

Windows Azure在北京、上海部署有服务器

中国的AZure是个”国内版本”–和国际版AZure采用物理隔离方案

MySQL也是比较符合目前国内接地气的方案;

AZure新的特效,国际版和国内版部署时间约差不多是3个月至半年。

https://www.azure.cn/  是国内版本的网站

在Azure上搭建Photon服务器(C#.NET)

未来AR产品软件框架是这样的,服务器端需要搭建游戏逻辑Photon、以及资源更新AssetBundle–更新资源。MySQL目前是国内很多公司的标配–社区版免费。

Photon运行方式很简单,选择服务器实例,启动应用即可,符合GUI操作习惯。

AZure虚拟机,提供了C盘,直接把需要的软件和数据,通过远程桌面拷贝过去即可,windows Server 2012英文系统,还是挺方便的。

几个有用的小技巧:

  • TT模板:database first–自动生成模型代码

原创文章来源: 使用T4模板生成MySql数据库实体类

注意在VS2015下,需要把.ttinclude后缀修改为.tt才可以。 同时,需要修改 数据库连接为你自己的 9 var connectionString = @"server=127.0.0.1;uid=root;pwd=12345678;charset=utf8;";

AZure开5505 UDP端口

  • 前端、后端C#链接类快捷方式:节约成本的王道

即,直接可以实现前段和后端复用模型实体代码、传递的Code枚举代码,以减少文档重复工作量。

以关键的OperationCode为例,如果前端是C#、后端是Java,则无法做到代码级别复用,即需要写文档来约束。而相同的C#代码后,注释好.cs文件,前端和后端是同样的代码,则沟通起来畅快了很多。

public enum MyOperationCodes : byte 
    { 
        /// <summary> 
        /// LoginOperation 
        /// </summary> 
        LoginOperation = 100,

/// <summary> 
        /// EchoOperation 
        /// </summary> 
        EchoOperation = 101,

/// <summary> 
        /// GameOperation 
        /// </summary> 
        GameOperation = 102,

/// <summary> 
        /// ChatOperation 
        /// </summary> 
        ChatOperation = 103,

/// <summary> 
        /// ChatOperation 
        /// </summary> 
        CCUOperation = 104, 
    }

  • MySQL ORM (Dapper框架):

    我选择了轻量级、火热的Dapper(stackoverflow网站就用它来做ORM),而且开源。 

  • 参考:

  • dapper操作连接mysql开发最完整实例总结
  • 使用SQL部分代码如下:

Db aa = DbInit();

var a3 = aa.Query<device>("select * from device where uuid=@uuid", new { uuid = "aabb636238694579824398" });

device dv = new device 

     UUID = "aabb" + DateTime.Now.Ticks.ToString(), 
     DeviceModel = "IOS", 
     DeviceName = "Iphone 5s", 
     RegisterDate = DateTime.Now.AddDays(-1), 
     UpdateDate = DateTime.Now, 
     TokenID = DateTime.Now.Ticks.ToString() 
}; 
long ret = aa.Devices.InsertOrUpdate(dv);

var a1 = aa.Devices.All();

  • Json序列化工具:newtonsoft

本来Unity5.3已结自带了Json序列化API,但是有bug,Json序列化可能为空,就选择了”老朋友”newtonSoft.dll了。

  • AZure开通端口
  • 应用跑起来后,端口一直不通,需要AZure开通端口–首先在Windows Server里面开通端口(TCP\UDP),然后再AZure里面开通:网络接口–网络安全组–入站安全规则、出站安全规则。

  • APK Demo下载:
  • https://www.pgyer.com/
  • 搭建Photon服务器(C#.NET)

PhotonLab 源码:https://git.oschina.net/xifarm/PhotonLab

参考

  1. 时间飞快–连微软官方都开源了208个源码库

  2. 《岁月在挑灯夜战中走过:亲历的软件框架 》

  3. 《我的微软.net演进路线图》

  4. 《荣获2015微软.NET MVP称号!》

  5. 《写在.NET 15周年之际——致那些仍然爱着.NET的中国程序员们 来自微软MVP Tony Qu微信

  6. 《.NET 十五岁,谈谈我眼中的.NET 来自微软MVP  张善友的博客》

原文地址:http://www.xifarm.com/photononazure/


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET)相关推荐

  1. 如何在微软Azure上搭建个人博客网站

    手动配置服务器对很多读者来说可能并不是一件容易的事.好在在Azure中,微软已经就搭建WordPress个人博客给出了一站式的解决方案,对于零基础读者来说,在Azure上搭建WordPress即意味着 ...

  2. 云计算之路-试用Azure:搭建自己的内网DNS服务器

    之前我们写过一篇博文谈到Azure内置的内网DNS服务器不能跨Cloud Service,而我们的虚拟机部署场景恰恰需要跨多个Cloud Service,所以目前只能选择用Azure虚拟机搭建自己的内 ...

  3. 微软 Build 2019:IE 重生,Azure 成主角;华为拟在英剑桥新建半导体研发基地,与ARM做邻居……...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...

  4. 微软宣布12月15日关闭开源软件托管平台CodePlex

    网易科技讯4月1日消息,据Venturebeat报道,微软今天宣布,将关闭开源软件托管平台CodePlex.微软2006年推出这项服务,并决定在今年12月15日将其关闭. 微软公司副总裁布莱恩·哈里( ...

  5. 反客为主 ,Linux 成为微软 Azure 上最流行的操作系统

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   三年前,微软云计算 Azure 平台 CTO Mark Russinovich 说有四分之一 的 Azure 实例正在使用Linux .到了 ...

  6. 即使在微软 Azure 上,Linux 也大有一统天下之势!

    [CSDN编者按]微软曾一度视Linux之父Linus为眼中钉,Linux从一开始就开源.而微软在开源的大门外徘徊多年,终于叩开开源之门.但是即便如此,微软的Azure相比Linux仍有一定的差距!今 ...

  7. 微软超融合+混合云:源自Azure技术的超融合架构

    ---------------------------------------------------------------------------------------------------- ...

  8. Android连接SQLServer详细教程(数据库+服务器+客户端),并在微软Azure云上搭建云服务

    Android连接SQLServer详细教程(数据库+服务器+客户端),并在微软Azure云上搭建云服务 参考博客:http://blog.csdn.net/zhyl8157121/article/d ...

  9. 四年后看微软第二代超融合系统:Azure Stack HCI

    2020年12月,微软正式发布Azure Stack HCI集成系统:全新的Azure Stack HCI OS+Azure Stack HCI集成系统设备.这是Azure Stack HCI OS微 ...

最新文章

  1. Veeam Backup Replication v7 安装配置手册
  2. 写存储过程与调用存储过程
  3. 使用RESTful Client API进行GET / POST
  4. 中希尔排序例题代码_【数据结构与算法】这或许是东半球分析十大排序算法最好的一篇文章...
  5. php连接mysql学习过程中遇到的各种问题总结
  6. PVE虚拟服务器配置,我与PVE的交往史 篇一:如何使用虚拟机PVE一步一步打造自己想要的ALL IN ONE 主机...
  7. 小程序正式发布后,打开白屏(已解决)
  8. 学习plc编程需要什么基础
  9. v2ex站长专访 - 100offer专访Livid:不仅仅是V站站长
  10. Hive误删除后,如何恢复数据
  11. 也说类别Category
  12. 基于PHP+MySQL的服装购物商城系统#毕业设计
  13. bluetooth开发(五)------蓝牙的功能测试(一)
  14. Office噩梦公式远程代码执行漏洞
  15. 【2023秋招】9月京东校招题目(Js实现)以及满分解析
  16. 系统学习机器学习之SVM(四)--SVM算法总结
  17. mysql qc_qc-mysql
  18. 广域网二层之PPP协议
  19. 用C语言进行公英单位转换方法
  20. C语言 交替符号累加计算

热门文章

  1. 解析super-smack的smack文件
  2. PHP中 对象自动调用的方法:__set()、__get()、__tostring()
  3. mysql服务的启动和停止 net stop mysql net start mysql
  4. 第二十五章补充内容 5 不能为0的变量
  5. CHANGE MASTER TO语法--MySql数据库
  6. XenServer XAPI简介
  7. C# 修改配置文件进行窗体logo切换
  8. 官宣,11月8号,.NET6+64位VS璀璨面世!
  9. WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题
  10. “六级”题公布,觉得WebAPI简单的,勿进!