从业十余年谈谈对dotnet看法与坚持

前言

园子经常在讨论关于.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最近在跨平台,移动端的发力,以后会更加的有优势,这一切来的太晚。来的太晚,总是好过没有吧。可能有一个合适的机会,我也会在项目中使用Java来替代.Net。

要做的事情比较多,匆匆随便,欢迎雅正。

本来使用Markdown写好的,不知道为什么解析的格式不对。下班以后再来调整格式吧。

时间: 2024-11-08 02:11:44

从业十余年谈谈对dotnet看法与坚持的相关文章

5.你所在的学校有计算机科学专业和软件工程专业么?相关专业的教学计划和毕业出路有什么不同?阅读有关软件工程和计算机科学的区别的文章,谈谈你的看法。

问题1:你所在的学校有计算机科学专业和软件工程专业么? 答:我所在的学校有计算机学院和软件学院,所以分别有计算机科学与技术专业和软件工程专业. 问题2:相关专业的教学计划有什么不同? 答:这两个专业的教学计划如下: 软件工程课程设置: 公共必修课:思想政治理论.英语.计算机基础.文化素质课程.体育等课程. 学科基础课:数据结构.C++面向对象高级程序设计.计算机组成原理.数字逻辑.软件人员英语沟通方法1(英).数据库原理1(双语).算法设计与分析(双语).操作系统原理1.软件工程概论(双语).计

中国运维服务市场的春天?一位从业十四年运维服务专家的一席话

    文章摘自pigoss 官网 http://www.netistate.com  如需转载,请标明出处! 导读: 如果你是一位IT 运维工作者,如果你想在未来的IT运维市场中占据一席之地,如果你对IT运维市场的未来毫无预见,如果你已经错过了<PIGOSS IT运维发展趋势交流会>这样一个与业内同行们交流学习的机会,那么请不要再错过IT运维专家王卫平在此次会议上的精彩发言了,也许因为这短短的几分钟, 你就可以规划出未来几年.十几年的人生道路,坚定一生追求的IT 运维服务理念. 发言人介绍:

关于快速开发,大家可以来谈谈自己的看法

大家都知道,现在和以前比起来,互联网行业.软件行业已经天差地别了.现在处处都在搞信息化建设,人人都知道互联网思维.这样的信息化时代,对于软件开发者.对于软件开发公司来说,是一个巨大的机遇. 在门外汉看来,软件开发是机遇大.成本低,只要叫几个程序员,就能搞出个软件公司来.但是,事实情况是这个样子吗?本人在国内软件行业发展较好的二线城市发展,几年也亲眼看到了不少软件公司的衰落.有刚起步的创业公司,只坚持了一年的.也有从业好几年的外包软件公司忽然没落的.只要在这个圈子里的人都知道,这一行业,也并不是这

《windows核心编程系列》十八谈谈windows钩子

windows应用程序是基于消息驱动的.各种应用程序对各种消息作出响应从而实现各种功能. windows钩子是windows消息处理机制的一个监视点,通过安装钩子能够达到监视指定窗体某种类型的消息的功能.所谓的指定窗体并不局限于当前进程的窗体,也能够是其它进程的窗体.当监视的某一消息到达指定的窗体时,在指定的窗体处理消息之前,钩子函数将截获此消息,钩子函数既能够加工处理该消息,也能够不作不论什么处理继续传递该消息.使用钩子是实现dll注入的方法之中的一个.其它经常使用的方法有:注冊表注入,远程线

软件行业从业十年的产品经理的得失杂谈

所谓时间飞逝.日月如梭,暮然回首,猛然发现自己出道伊始也将近十年了.回顾此前自己曾经担任过的角色,不可谓不繁杂.曾经做过翻译员.测试.开发.测试主管.项目经理.产品经理,甚至还做过销售,徒步的大街小巷的去拜访潜在客户.此间我觉得最让自己慨叹的是当年做产品经理的时候的一些得失.所以这里就打算写下来,与同行们共勉. 其实之前所做的"产品经理"这个角色,我认为是应该打个引号的.因为真正去跑市场.去全世界到处飞.去挖掘需求的是德国那边的一个同事,只是开发团队在珠海这边,而我刚好英语沟通能力还算

从业十年分享:你应该知道的一些测试职业事实!

很多初入行的同学, 都喜欢讨论一些话题:薪资.加班.技术方向.工具.资料.视频 等等:   今天老徐告诉大家几个关于测试职业的事实: - 1 - 看到从事了多年了从业者就觉得是大牛?想抱大腿? 很多从业了N年的测试同学,依然什么都不懂,只是会功能测试而已,最多比你熟练点: 不用太羡慕,也无须崇拜- - 2 - 对于新人,实践学到的理论知识,提升实战经验很重要: 但是,从业3年以上,重要还是能力- 其他都是浮云- - 3 - 新人找第一份工作,跟哪些因素有关系? 基础.态度.潜力.坚持.运气!太多

代码写了十余年,真心话儿聊不完

不知道你平时是否喜欢喝鸡汤文? 作为程序员,鸡汤文若喝多了,会虚胖甚至会产生油腻感. 不过没关系,今日特意为你沏一壶清热解毒的苦茶(放心,这次不是技术文章),以解鸡汤之油腻. 老码农谈心声,沏一壶苦茶. 我的很多朋友,多数已征战「码」场十余载,都是大家常说的骨灰级的程序员,也可以称作是入土半身的码农. 昨天,跟我最要好的朋友,交流了一下心声,而且产生了不少共鸣. 我这位朋友,麾下有几十杆枪,是名副其实的高级经理,做人.做事那绝对没话说,在多数程序员眼中已经很牛 X 啦. 与朋友谈笑之中,他把大多

阅读有关软件工程与计算机科学区别的文章谈谈你的看法

软件工程是一门研究用工程化方法构建和维护有效的.实用的和高质量的软件的学科.它涉及程序设计语言.数据库.软件开发工具.系统平台.标准.设计模式等方面.它就是使用适当的资源(包括人员,软硬件资源,时间等),为开发软件进行的一组开发活动,在活动结束时输入(即用户的需求)转化为输出(最终符合用户需求的软件产品). 计算机科学,研究计算机及其周围各种现象和规律的科学,亦即研究计算机系统结构.程序系统(即软件).人工智能以及计算本身的性质和问题的学科.计算机科学是一门包含各种各样与计算和信息处理相关主题的

阅读有关软件工程与计算机科学区别的文章,谈谈你的看法

软件工程是一门研究用工程化方法构建和维护有效的.实用的和高质量的软件的学科.它涉及程序设计语言.数据库.软件开发工具.系统平台.标准.设计模式等方面.它就是使用适当的资源(包括人员,软硬件资源,时间等),为开发软件进行的一组开发活动,在活动结束时输入(即用户的需求)转化为输出(最终符合用户需求的软件产品). 软件工程领域的主要研究热点是软件复用和软件构件技术,它们被视为是解决“软件危机”的一条现实可行的途径,是软件工业化生产的必由之路.而且软件工程会朝着开放性计算的方向发展,朝着可以确定行业基础