`
fantaxy025025
  • 浏览: 1309150 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

.NET十年回顾

 
阅读更多

=

https://www.cnblogs.com/evilcat/p/7628041.html

 

总结:

那么,这个技术栈最适合的领域是哪些呢我认为就是运行在Windows系统上的各种程序

在桌面这块,有WPF,Winform,和他相关的有WCF,WF,ADO.NET,EF,LINQ。结合Visual Studio,Office,SQL  Server,竞争对手完全不是一个档次

 

=

一、   引子

从我还是编程菜鸟时起,.NET就从来没让我失望过。总是惊喜不断。

 

当年我第一个项目是做个进销存。用的Winform。当时我是机电工程师。编程只是业余心血来潮而已。

 

.NET的低门槛、VS良好的编程体验及MSDN完善的说明让我从此踏上了码农的不归之路。

 

回首十年,是从.NET2.0一路走来,记得当年灵感之源发过一篇.NET技术堆栈大全,

 

(http://www.cnblogs.com/unruledboy/p/NetStack.html),对照下自己,4.5的很少用到,其他技术或多或少都有涉及。

 

二、   .NET技术栈的分析

.NET从第一版发布至今,也有17年历史了。能经久不衰,肯定有它的特长和亮点。我认为它最大的亮点就是生产力。最大的特长是做桌面应用。

 

说通俗点,就是.NET什么都能做,做桌面他最精,出活他最快。

 

做移动端,.NET也有一席之地,xamarin和Unity。然而竞争对手有JAVA和Obj-C,Swift,H5与之PK。xamarin还嫩了点。

 

做后台服务,.NET Core,WCF这些技术不错,但服务器很多是Linux,JAVA先入为主,更有优势。

 

做网页,ASP.NET很好。但是竞争对手就更多更强了,JAVA,PHP,js,各种开源解决方案。

 

在现在流行的NO SQL、AI这些领域,.NET也有一席之地,然而这块它显然不是主流。

 

在桌面这块,有WPF,Winform,和他相关的有WCF,WF,ADO.NET,EF,LINQ。结合Visual Studio,Office,SQL  Server,竞争对手完全不是一个档次

 

那么,这个技术栈最适合的领域是哪些呢我认为就是运行在Windows系统上的各种程序

 

 桌面应用要数据库有数据库,要服务有服务,要控件有控件,要报表有报表(RDLC),简直是要啥有啥。更不用说还有强大的第三方控件、丰富的开源组件。

 

如果有人想用JAVA或者其他什么技术做桌面,我只能说,这很奇葩。除非你对性能要求到苛刻程度。

 

如果你想做移动端,大数据,互联网什么的,继续用.NET没问题。但是性价比不突出。比如NO SQL这块的,其他语言擅长就让它做好了,.NET来调用就是。田忌赛马,扬长避短。

 

有人说桌面药丸,微软要倒,What?微软新CEO上台两年股票涨了一倍多,现在活得好好的,DELPHI这个没妈的孩子现在都在茁壮成长,是不是想多了。

 

又有人拿.NET的性能说事。说什么不如C++云云。这个之前的老赵、xiaotie他们都分析过,按我经验,还没发现有什么性能问题。

 

因为.NET类库和C#语言都有一个特点,就是给你多种选择。你想省事偷懒自然可以用现成的。想追求极致,甚至你可以用指针。我也用过指针。

 

差不了多少的性能,和天壤之别的开发效率,这个性价比应该仔细考量。

 

三、   极限压榨.NET技术栈的潜能

既然.NET最大亮点是生产力,就结合我个人的例子来说吧。

 

当初打算设计组态软件。单位不是软件公司,我的职责也不是设计组态软件。一开始只是心血来潮。但是面临一个很大问题。就是我看到的组态软件,WINCC,Intouch,都是庞然大物。

 

如果不是脑子烧掉,不会想着靠一己之力做出来。但是我分析之后,发现我只需要解决两个关键问题。一个是组态设计器,一个是网关。

 

网关我参考的是OPC规范。按下不表。组态设计器这个,因为我看上了WPF对图元的表现能力、Blend的零代码设计能力。先在网上搜WPF图形设计器,找到了这个:

 

感谢周金根提供的这个线索。找到了一套WPF开源的图形设计组件: Diagarm Designer。

 

然而看了代码体验了DEMO之后,再比较WINCC等的功能,感觉工作量还是十分巨大。

 

这时候我想,如果能把这套组件的界面连线功能纳入Visual Studio就好了。于是继续搜索,发现了这个:

 

https://msdn.microsoft.com/zh-cn/subscriptions/bb546938(v=vs.90).aspx

 

果然微软没有让我失望。于是我只需要专注于如何将我需要的组态设计器功能嵌入到Visual Studio神器就可以。

 

.NET对数据库、文件IO、通讯协议的完美支持让我编程省了很多事。加上我之前积累的类库,进展飞快。

 

这时候碰到一个新问题,就是常规组态软件有一个重要功能:组态变量。也就比如1号电机、2号电机同时运行的话显示绿色,应该表示为:Motor1.Running & Motor2.Running。

 

这要求我的设计器能够支持常规的四则运算、逻辑运算,也就是支持复杂的表达式。

 

微软的表达式树ExpressionTree 提供了对表达式完美的封装。我可以方便的利用它实现我的语法。

 

我的业余爱好是研究程序化交易。我选择了Winform,绘制K线图我只用了几百行代码,就实现了一个可以缩放、拉伸、移动、加入自定义指标的K线图。

 

为什么这里选用Winform而非WPF?因为WPF优势是界面与代码分离,利用Blend工具人工绘图,冗余较多。但做K线图需要读入大量数据,程序生成,使用Winform提供的GDI+ API绘制效率更高。

 

我利用组态项目的表达式解析器加以改进,很快做出来股票预警器。其他地方也很多参考、借鉴了网关、组态设计器的现成代码和思路。

 

现在做成的这个交易系统,包括图形界面、自定义指标、各种函数支持、策略生成器、回测、实盘运行,总共代码也没有多少,非常简洁。这要感谢.NET强大的架构能力和类库。

 

很多人说python做程序化交易首选,比如python的脚本能力和各种图表绘制能力。但我大C#的强类型编程能力、架构能力、各种语法糖,写策略不是python能比的。至于自定义图表,别忘了可以导入或者嵌入EXCEL。

 

一旦你用惯了.NET,有了自己积累的类库,和长期培养的架构理念、抽象能力。你可以在桌面上实现你能想象到的大部分事,让程序成为你的好帮手。

 

有人说.NET 不能做大数据、不能玩阿尔法狗什么的。拜托。这些东西本来就不是个人、小团队玩的,是国家或者大集团才用得上的。别想多了。

 

作为一个.NET铁杆粉丝,我只感到庆幸。因为.NET很适合我和我的行业。两岸猿声啼不住,轻舟已过万重山。

 

github地址:https://github.com/GavinYellow/SharpSCADA。我的第一个开源项目。为了推广它,我这国庆节每天抽出点时间敲键盘。欢迎大家多提宝贵意见和建议。

 

 

 

=

=

=

 

分享到:
评论

相关推荐

    中美人文交流四十年的历程、经验与前景-人大重阳-201901.pdf

    中美人文交流四十年的历程、经验与前景-人大重阳-201901.pdf

    过去十年值得关注的十大技术事件

    【标题】: 过去十年值得关注的十大技术事件 【描述】: 本文将深入探讨过去十年中影响深远的十大技术事件,包括...通过对过去的回顾,我们可以预见,下一个十年将会有更多的技术事件对我们的研发领域产生深远的影响。

    Javascript语言精髓与编程实践(清晰_文字版)_Final

    在“十年JavaScript”章节中,可能回顾了JavaScript的发展历程,从早期的网页脚本语言到现代Web应用的基石,强调了它在互联网发展中的关键角色。书中可能会讨论JavaScript如何从简单的页面特效工具演变为构建复杂...

    C#微软培训资料

    <<page 1>> page begin==================== 目 目目 目 录 录录 ... 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代...

    ComponentArt_WebUI_2008_2.1204_for_aspnet35_source_code[2008.2.1204]

    但即便如此,它仍然是一个宝贵的学习材料,展示了过去十年间Web开发的最佳实践和技术。 在使用这个源代码时,开发者需要注意版权问题,因为ComponentArt的组件通常有商业许可证限制。虽然这个版本可能是为了教育...

    C#微软培训教材

    - 介绍.NET平台的概念和发展历史,特别是2000年6月22日微软发布的下一代计算计划——.NET,标志着微软进入了一个全新的发展阶段。 - .NET的目标是超越当前孤立的Web站点,构建一个可以互相交换组件的互联网环境,...

    WPF教程(中文)ch01

    - OpenGL是二十世纪九十年代初由SGI公司推出的跨平台图形API。 - 它支持高性能的2D和3D图形开发,在科学可视化、游戏开发等领域得到了广泛应用。 - 尽管OpenGL功能强大,但它主要针对专业开发者,对于普通的...

    C#完全中文手册

    2000年6月22日,微软正式宣布了.NET这一革命性的技术框架。它旨在打破传统的应用界限,让软件不再局限于单一设备或操作系统,而是能够跨平台、跨设备地运行。 - **1.1.2 .NET的目标** - .NET的核心目标之一是构建...

    C#程序学习教程

    - 介绍.NET平台的概念和发展历史,特别是其在2000年发布的背景及意义。 - **定义**:.NET是Microsoft推出的一个软件框架,旨在提供一种新的计算模式,使得软件可以在互联网上更加灵活地运行。 - **愿景**:比尔·...

    VC++启蒙作品-选票写正统计软件-VC++源代码

    十几年过去了,再回顾过去的代码岁月,很有感触.给大家展示一下我当初开始学VC++时,创作的启蒙作品http://blog.csdn.net/vinglemar/article/details/43414439

    C#语言教程

    - .NET是微软在2000年推出的下一代计算平台和服务框架,旨在通过互联网提供各种服务。 - 它的目标是超越现有的独立网站,将互联网转变为一个可以互换组件的地方。 - .NET的核心理念之一是由比尔·盖茨提出的,即...

    程序员考试04~08锦集

    总的来说,"程序员考试04~08锦集"是一个全面回顾和学习过去几年计算机软件资格考试程序员级别知识点的宝贵资源。通过系统地研究这些试题,考生可以巩固基础,了解历年考试重点,为顺利通过考试做好充分准备。无论是...

Global site tag (gtag.js) - Google Analytics