前言

园子经常在讨论关于.Net发展的问题,我也这些年在工作乃至创业过程中使用.Net碰到的一些问题和看法。
个人擅长的技术面,C/C++/MFC/STL、ASM、JAVA、VB、Javascript/Typescript、C#/WebForm/MVC、Android/MonoDroid,Linux/Windows,还有没有可以吹的,还有从286一直到i7,从ms-dos到win 10,可以算是一条道跟从微软走到黑。

使用.Net的职业发展问题

每次提出这个问题,大家都会说.Net在国内也有高薪工作。事实上,我个人的感觉这些年明显感觉.Net的工作机会少;以及以前同事,朋友的发展情况来看,也是如此。当然你非要说我没有他们勤奋努力,我也没有办法。在国内Java或者PHP等等,相同的努力,背景,智力条件,获得更高收入的机会更多。所以,有一个概率,使用JAVA技术获得发展机会跟多一些,就如同在清华北大,你更容易找到技术牛人,而到三本院校比率就会变小一样。不要说也有成功的,我同学同样学历不高,现在是百度的研究员;也有在阿里巴巴任职项目经理的。

其实我不想这样来说,目前我个人推荐新同学以Java为主,如果又需要再来搞.Net。同样搞.Net的同学也可以看看Java。基础掌握的好,语言不过是工具。

碰到的问题

谈这些问题的时候,我强调一下我们从事产品的开发,可能与完全的互联网产品视角稍微不同。产品是给经销商、客户、实施人员来安装。所以最好,简易的安装,一键完成配置,需要技术支援的程度越少越好。

1、以易用性为傲的软件系统越来不易用
VS、SQLServer的安装依赖,对系统的依赖。经常是系统缺少了这个安装,缺少那个安装包。特别是SQL Server的安装,经常出现问题。我们公司的实施人员,应该对计算机是非常熟悉的,他们经常连SQL Server的安装搞不好。
我已经彻底切换到使用mysql、sqlite的方案,mysql 的安装比 sql server 好很多,而且free。

2、产品延续性与稳定性的问题
七八年前开发一个产品的时候,有一个类似于图形设计的东西。我们采用了Silverlight,当时Silverlight升级也比较快。我们觉得这样开发起来比Flash要快,当时浏览器H5技术还不如现在成熟,所以也没有考虑。Silverlight技术细节的东西不说了。测试环境都OK,最后发现在客户那里出现了很多种状况。比如页面崩溃,微软推送了新的更新无法运行…我们人少,实在没有太多的精力去分析,我选择你就是求个稳定。
微软大概自己废弃的技术还有很多。

3、产品安装与IIS
B/S系统,你没法绕开IIS,如果是一个产品直接给到客户安装,客户经常是搞不定的。甚至于有些客户直接拿XP。有些人要说客户傻逼,客户就是爷,何况竞争对手用java写的产品可以,解压,然后批处理运行()。客户说你产品没有运行起来,可以走了…..那一刻,真心蛋疼啊。

据说下一代的.net会有很好的解决办法,可以脱离IIS。为了解决这个问题,我把IIS Express 封装了一下,做了一个绿色版。

4、生态系统
Java在各方面的开源系统,组件,框架可选择的余地比较多,重要的是成功的方案也比较多。有很多组件,库都是从Java改写过来。

5、成本
我们公司基本都是购买的正版软件,从操作系统到开发工具。这个相对于选择其他的软件来说,这个也是一笔不小的费用。其实VS并不是最贵的软件,贵的是那些电路的设计工具,三维CAD之类。
如果将软件迁移到云端,Windows的虚拟机要贵一些。

6、人力资源
招聘.Net的人员比较困难,找到好的开发人员更加困难。我招聘的时候,感觉找到好的.Net开发很难。其实啊,找Java的也不容易。

坚守与实践

曾经有一段时间,我也特别困惑,打算转换到其他的平台与语言,后来觉得目前至于我来说,依然是一个比较好的选择。

1、使用Java并不能给带来跟多的效益
如果不是从个人薪酬来说,使用Java的产品,与使用 .Net ,并不能让客户多掏钱。微软体系的工具开发效率还是要一些,我们团队在.Net上的投资更多。

2、跨平台,覆盖面广
.Net相对Java,有些特性类似于C++,比如条件编译。现在很多库,编译支持多个平台的版本,比如支持mono,MonoDroid,甚至于Portable直接多平台公用。
.Net可以开发Linux,Windows、Mac上运行的程序,包括UI。支持树莓派等一些IoT设备的开发。
下一步我们会逐步把Web的部分迁移到linux,有些使用C++开发的第三方库依赖是一个难点。

3、.Net访问原生库更方便
如果使用.Net调用系统的DLL、so,通过PInvoke更加的方便。

3、移动平台
xamarin是一个非常不错的解决方案,我们将PC端开发的很多软件功能移植到了Android,同时我们继续维护Windows的版本。它能够让你实现算法,数据结构,通讯协议等很多功能的共享,降低很多的成本。能够很好的保护现有的投资。
使用xamarin不代表着你对移动平台的了解的技术要少,我认为要求更高。

4、搭配选择微软将以外的技术
比如数据库,我们现在基本选择mysql,功能足够,费用低。比如有些功能服务,考虑使用nodejs等等。

总结

所以如何选择,完全是看客官自己。但是我相信.Net最近在跨平台,移动端的发力,以后会更加的有优势,这一切来的太晚。来的太晚,总是好过没有吧。

原文地址:http://www.cnblogs.com/kodong/p/5344721.html


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

从业十余年谈谈对dotnet看法与坚持相关推荐

  1. 敏捷开发的根本矛盾是什么?从业十余年的工程师在思考

    阿里妹导读:敏捷开发不仅靠流程和技巧,更需要企业文化的支撑.今天借"敏捷开发"的话题,与大家探讨一个更深层的问题:工程师如何在控制性和创造性中找到平衡点?生产的严谨和创造的不严谨性 ...

  2. 从业十余年的阿里工程师告诉你,敏捷开发的核心是什么?

    [数据猿导读] 工程师如何在控制性和创造性中找到平衡点?生产的严谨和创造的不严谨性怎么解决?来自阿里IoT事业部,具有超过10年无线通信行业从事技术研发工作的陶震,为您解答 作者 | 陶震 官网 | ...

  3. 阿里资深专家杭特:十余年目睹国内安全之“怪现状 ”

    云栖君导读:随着网络空间成为第五空间.社会基础产业全面互联网化,网络安全(或称广义的信息安全)面临的威胁越来越大,对网络安全的人才需求也呈现出井喷趋势.即使目前很多人可以自学成才,"网络空间 ...

  4. 一个 SAP 开发工程师十余年的技术写作之路回顾

    这是 Jerry 2021 年的第 31 篇文章,也是汪子熙公众号总共第 307 篇原创文章. 本文目录 汪子熙公众号的风格定位 为什么我会开始在微信公众号上书写技术文章 我的写作素材从哪里来 坚持了 ...

  5. 来自一位十余年工作经验的老电子工程师的心里话:该出手时便出手!

    来自一位十余年工作经验的老电子工程师的心里话:该出手时便出手! 这篇文章在网上流传很广,里面的观点尽管不全部正确,但无疑给人极大的深思...特抄录与此,努力反思与反醒... 诸位,咱当电子工程师也是十 ...

  6. OceanBase 创始人阳振坤 | 十余年打磨 国产数据库之路砥砺前行

    10月23-24日,OceanBase 数据库创始人.首席科学家阳振坤受邀参加了 CSDN 主办的第二届"长沙·中国1024程序员节"活动. 在备受瞩目的"岳麓对话&qu ...

  7. 软件工程方法论对我们开发软件有多大用处?谈谈你的看法。

    软件工程方法论对我们开发软件有多大用处?谈谈你的看法. 软件工程是指导计算机软件开发和维护的一门工程学科.从软件工程的定义我们可以知道:软件工程方法论就是教给人们软件开发更科学更系统的方法.软件工程方 ...

  8. 软件工程方法论为我们经软件开发有多大用处?谈谈你的看法。

    软件工程方法论为我们经软件开发有多大用处?谈谈你的看法. 软件工程的各个阶段对软件开发与维护有指导作用和实际意义, 软件工程生命周期的各个阶段相互关联, 对软件的开发和维护均有重要作用. 为了摆脱软件 ...

  9. 数学之美 十四 谈谈数学模型的重要性

    数学之美 十四 谈谈数学模型的重要性 [注:一直关注数学之美系列的读者可能已经发现,我们对任何问题总是在找相应的准确的数学模型.为了说明模型的重要性,今年七月份我在 Google 中国内部讲课时用了整 ...

最新文章

  1. Flatten Nested Arrays(展平嵌套数组)
  2. 【C 语言】动态库封装与设计 ( Windows 动态库简介 | Visual Studio 调用动态库 )
  3. Fast Walsh-Hadamard Transform——快速沃尔什变换
  4. OpenCASCADE:使用扩展数据交换 XDE之几何尺寸和公差 (GDT)
  5. 线性表【项目 - 求集合并集C语言】
  6. 用训练好的paddlepaddle模型继续训练模型和验证数据ckpt
  7. c语言密码程序返回,想程序高手求助--用C语言来编辑一个输入密码的程序
  8. Jmeter读取Excel,BeanShell取样器调用rt.jar和jxl.jar
  9. redis的zset类型(有序集合)
  10. 使用Ajax以一种形式上传数据和文件吗?
  11. 制造业Google Glass 焕发巨大活力
  12. linux安装python3环境_linux安装python3环境并配置虚拟环境
  13. 真鱼游来游去动态壁纸_超级漂亮的鱼池动态壁纸(Fish Pond)1.54中文完整版
  14. Git下载与安装 Windows
  15. AE、PR视频压缩导出mp4、mov格式插件:AfterCodecs1.6.1汉化破解版
  16. java实现手机开关机_Android自动开关机实现
  17. 100~200以内素数
  18. 3.23期货品种每日早盘建议
  19. input·触发回车事件
  20. 显著性检测—学习笔记

热门文章

  1. Java程序员应该知道的10个Eclipse调试技巧
  2. 嵌入式-C语言面试题【转】
  3. 不吃不喝,两周业余时间研究(cisco SCE CM )
  4. VPC2007差分硬盘让小硬盘也能跑多个虚拟机
  5. .NET Core TLS 协议指定被我钻了空子~~~
  6. Github CodeSpaces 使用及定制化
  7. Blazor 组件库开发指南
  8. 这难道不是.NET5的bug? 在线求锤?
  9. 对精致码农大佬的 [理解 volatile 关键字] 文章结论的思考和寻找真相
  10. .NET Core使用FluentEmail发送邮件