牡丹江商城网站开发设计,网站静态和动态,网页设计师在哪里工作,海尔网站建设目标摘录网上的“.NET 15周年”信息如下#xff1a; 微软的 .NET 框架本周迎来了 15 岁生日。.NET 的第一个版本在 2002 年 2 月 13 日作为的 Visual Studio.NET 的一部分首次公开亮相。过去 15 年#xff0c;.NET 框架从一个流行的闭源软件开发平台#xff0c;变成了一个开源的… 摘录网上的“.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点原则 成熟有助于提高开发效率人多有坑大家一起填 这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 CoreUnity NetworkUnity自带局域网C# (Mono.NET) 有SmartFoxServer的实践经验故雷同的商用服务器Photon我本次做了专门的实践. Photon支持3种类型服务器 LoadBalancing: 负载均衡服务器MMO: 大型MMO网游服务器Lite: 大厅、房间类型服务器 (相对简单一些) Photon授权策略免费版100个CCU (对于绝大部分AR、VR项目足以了) 商用版3500美金不限制CCU (约2.5万人民币)。 云服务器选型 我的选型原则也就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 server127.0.0.1;uidroot;pwd12345678;charsetutf8;; 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.Querydevice(select * from device where uuiduuid, 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但是有bugJson序列化可能为空就选择了”老朋友”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 参考 时间飞快–连微软官方都开源了208个源码库《岁月在挑灯夜战中走过亲历的软件框架 》《我的微软.net演进路线图》《荣获2015微软.NET MVP称号》《写在.NET 15周年之际——致那些仍然爱着.NET的中国程序员们 来自微软MVP Tony Qu微信》《.NET 十五岁谈谈我眼中的.NET 来自微软MVP 张善友的博客》 原文地址http://www.xifarm.com/photononazure/ .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注