V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
YongkeLi
V2EX  ›  程序员

.net 现在是不是很不受待见,岗位少的可怜

  •  
  •   YongkeLi · 2020-03-27 12:42:15 +08:00 via Android · 15911 次点击
    这是一个创建于 1705 天前的主题,其中的信息可能已经有所发展或是发生改变。
    158 条回复    2020-04-22 10:04:00 +08:00
    1  2  
    guolaopi
        101
    guolaopi  
       2020-03-28 12:28:05 +08:00
    @shijingshijing
    而且我面过的公司也都问 clr,最少也要问下字符串常量和值类型引用类型以及拆装箱。。。。
    blless
        102
    blless  
       2020-03-28 12:38:19 +08:00 via Android
    c#语言当然没问题。等你用多了,才会发现他的生态是一套 ms 自家的东西,web,gui,数据库,消息队列,甚至 rpc,webservice,而且很多都要钱。然后跟其他语言路数都不一样。学了别的地方能用上的也不多,你是学还是不学呢?一句话就是鸡肋
    LokiSharp
        103
    LokiSharp  
       2020-03-28 12:48:10 +08:00 via iPhone
    @guolaopi
    付费方面,我现在就希望 SQL Server 也开源了,现在用 Postgresql 没法用 VS 自带的数据库功能有点遗憾。但 SQL Server 真的太贵了,而且默认必须 2G 以上空闲内存也有点僵硬。
    服务器方面 .NET Core 我测了下现在 Linux 上性能比 Win 上好,直接用 RHEL 自带的 dotnet 完全不用自己调优,Redhat 和 MS 合作已经把 Linux 上的 CLR 优化得很好了。
    JVM 需要调优主要是。。。他们用的都是不用花钱的 OpenJDK,默认的性能确实堪忧。
    imbushuo
        104
    imbushuo  
       2020-03-28 12:56:53 +08:00
    我 MS tech stack 起步的(

    按我个人经验来说,fundamental 的东西学会了之后不用学太 language agnostic 的东西,反正大厂里都是一群自己的轮子(。

    我 day 1 抓起几个没用过的语言然后看了几眼就开始写东西了,之后 delivery 也没啥问题,在计划前就上了 prod
    imbushuo
        105
    imbushuo  
       2020-03-28 12:57:36 +08:00
    @imbushuo Typo fix: language agnostic -> non-language agnostic
    xuxuzhaozhao
        106
    xuxuzhaozhao  
       2020-03-28 13:29:27 +08:00
    没办法的事儿啊,哎
    Mithril
        107
    Mithril  
       2020-03-28 13:50:13 +08:00
    @LokiSharp SQL Server Express 是免费的,只是不支持 10G 以上的库。不过这个付费可就贵了,我记得是按照 CPU 核心数付费的
    Mithril
        108
    Mithril  
       2020-03-28 13:53:39 +08:00
    @blless 来,你举例一下这里面哪些要钱?
    别说数据库,.NET/.NET Core 又不是只能用 SQL Server 。EF Core 里面甚至都自带 Provider 。还什么学了用不上,Web 框架基本都是 DI 那一套,消息队列你不用 kafka ?大部分功能类似的组件设计思路基本都是相同的,无论是 Java 写的还是 C# 写的。除非你只看 API,那确实不一样。
    Mithril
        109
    Mithril  
       2020-03-28 13:55:24 +08:00
    @guolaopi 因为虚拟机默认条件下性能不行,所以虚拟机调优才是必备入门门槛。只能这么解释了。
    LokiSharp
        110
    LokiSharp  
       2020-03-28 14:15:28 +08:00
    @Mithril #107 主要是。。。Linux 下 SQL Server 启动要求剩余内存超过 2G,也就是至少得跑在 4G 内存以上的机器上,而且内存不能有其他占用
    blless
        111
    blless  
       2020-03-28 14:18:21 +08:00 via Android
    @Mithril web asp,aspx 开发就不说了,你部署起来得 IIS 吧。
    消息队列我说的就是 msmq,不得配系统吗? windows server 不用钱吗?数据库就不说了,rpc webservice 都是一样。没错,其实就是 windows 要钱!现在据说.net 可以在 linux 上运行,反正我们当时可不敢上生产环境。windows 运维也一言难尽,我们当时用 ansibel 管理 windows,还没法做到通用,有些功夫我几百台 linux 早就部署完了
    LokiSharp
        112
    LokiSharp  
       2020-03-28 14:29:24 +08:00   ❤️ 1
    @blless #111 大人,时代变了,RHEL/CentOS 也官方内置 dotnet 了。
    关于你说的生态依赖。。。我怀疑你没系统的学过编程,现代的数据库和各种服务只要端口对上实现了协议都能用。
    还有敢不敢的问题,现在这么多公司 Golang Kotlin 都敢用有什么敢不敢的。。。
    Mithril
        113
    Mithril  
       2020-03-28 14:31:39 +08:00
    @LokiSharp 你在 Linux 上跑 SQL Server 。。好吧,反正官方倒是也支持。不过你这情况还是别用 SQL Server 了,换个别的吧。
    blless
        114
    blless  
       2020-03-28 14:33:04 +08:00
    @Mithril 另外哪怕现在的 .net ,也不一定所有的 dll 都是可再发行的。你如果调用了某个系统 DLL,你发布的时候那个不是 .net 基础库里的,那么大概率要授权吧。当然这个我也没仔细查过资料,只是以前公司还在用 C#的时候的一点了解。现在 .Net 我完全不关心,Go + Docker + Linux 不比 Windows + exe 部署香吗?
    Mithril
        115
    Mithril  
       2020-03-28 14:34:43 +08:00
    @blless 你这都是几十年前的技术了,现在哪还有人写 aspx 。除非维护老系统,不然早就都转到 ASP.NET Core 了。
    而且 Ansible 对 Windows 的支持也是这几年才基本能用的。你要是纯 Windows 直接上域管就完了,并不比 Ansible 差。非要用给 Linux 设计的技术去管理 Windows 怎么可能用的顺。
    Mithril
        116
    Mithril  
       2020-03-28 14:36:12 +08:00
    @blless 没查过资料没自己写过代码就还是不要说了。还现在的.NET你真的写过.NET Core 程序?用过 Nuget 包管理?官方发布的 Docker 镜像真的用过吗?
    yefuchao
        117
    yefuchao  
       2020-03-28 14:36:16 +08:00
    @blless 现在 dotnet core 的部署也都是 Docker + Linux 的吧
    blless
        118
    blless  
       2020-03-28 14:37:22 +08:00
    @LokiSharp 我当然知道变了,但是企业应用完全是另一码事,.net 4.0 出来的时候我们还在用 2.0 。因为最早的代码用 2.0 实现的。说真的现在说 C# .Net 还是 Unity 火一点,但是 Unity 那个 mono 也不全是 .Net 啊
    LokiSharp
        119
    LokiSharp  
       2020-03-28 14:41:43 +08:00
    @blless #114 .NET Core 了解一下再来讨论吧

    Go 这个语言的用户真的很神奇
    有的人说它单文件部署方便真香,有的人明明知道可以单文件部署还去套个 Docker 。
    嘴上却说 XXX 技术太新不敢用,自己用着特别年轻的编程语言 Golang 。
    嘴上说着 XXX 语言绑定生态,用 Golang 的时候发现 XXX 数据库还是得自己造轮子。
    wangyzj
        120
    wangyzj  
       2020-03-28 14:43:57 +08:00
    国外还可以
    老外愿意为了安全性给企业掏钱
    .net 本身挺好的
    而且 ms 收购 github 后和 azure 做集成我觉得.net 还可以火一把
    另外现在应该都搞.net core
    @Livid .net 自动识别为链接真的很头疼啊
    guolaopi
        121
    guolaopi  
       2020-03-28 14:44:05 +08:00
    @LokiSharp
    现在都换 mysql 了,sqlserver 也不是必需品。。
    blless
        122
    blless  
       2020-03-28 14:45:31 +08:00
    @Mithril 跟我说有啥用哦,你去挨个找公司用 .Net Core 嘛,而且我一开始就说了,语言是很好啊,生态坑嘛。听你这意思 .Net Core 才是 .Net 生态?
    LokiSharp
        123
    LokiSharp  
       2020-03-28 14:51:14 +08:00
    @blless #118
    看你 Repo 你应该是 写 Golang 的。
    别的不提,你就告诉我 Golang 写的服务,数据库想用 PostgreSQL 或者 MySQL 再挂个 Redis 的话得用哪些 driver 哪些 ORM 最稳?

    之前用 Golang 整了半天,没找到一个靠谱的。
    LokiSharp
        124
    LokiSharp  
       2020-03-28 14:52:31 +08:00
    @blless #122 .NET 要是生态坑,Golang 那是真没生态了(滑稽
    blless
        125
    blless  
       2020-03-28 14:53:20 +08:00
    @LokiSharp #119 你们说新技术先自己摸摸 .Net Core 好吧?我们当时旧应用迁移根本迁移不到 .Net Core 上,你们意思就是 .Net Core 才是真.Net 呗。
    单文件套 Docker 怎么了,Docker 只是用来做部署版本管理,跟 exe 完全两码事。当然 Go 可以 window linux 单文件部署也是原因之一。我喷的绑定生态特指 MS 一套,Go 的生态再怎么绑定跟其他语言也是一样的
    LokiSharp
        126
    LokiSharp  
       2020-03-28 14:59:13 +08:00
    @blless #125
    1. 所以你哪个服务很顺利的迁移(重写)到 Golang 了?
    2. 请你说一下有哪个能在 Linux 上跑的语言不能 Docker + Linux 部署
    3. 关于绑定生态,还是上面的问题,Golang 写的服务,数据库想用 PostgreSQL 或者 MySQL 再挂个 Redis 的话得用哪些 driver 哪些 ORM 最稳?
    dhssingle
        127
    dhssingle  
       2020-03-28 14:59:27 +08:00
    @blless #122 你连 Go 都敢用,却来质疑 .net 的生态?
    不谈 core 只说.net framework 除了部署时和 IIS 绑定深一点(还是 mono 太垃圾),其他技术还不是看你自己选,微软也没逼着你只能用 SQL SERVER,没逼着你不能用替他开源方案吧?
    Mithril
        128
    Mithril  
       2020-03-28 15:00:58 +08:00   ❤️ 1
    @blless 自己刚黑完的 DLL 转头就忘了?又开始扯起来生态了?确实.NET 生态差,所以呢?论生态哪个能和 Java 比?
    每种语言和技术都有优缺点,没有哪个是完美的。根据自己需要选择就好了。
    但是一边黑着一个平台不能无痛升级,转头吹用另一个语言重写了特别牛逼,你真的是做技术的?
    双标狗而已。
    已 B,不用 @我了。
    zhzbql
        129
    zhzbql  
       2020-03-28 15:01:29 +08:00
    @Rwing
    let data = [
    { id: 1, date: "02-10", clicks: 1, views: 2 },
    { id: 1, date: "02-10", clicks: 2, views: 2 },
    { id: 1, date: "02-19", clicks: 3, views: 2 },
    { id: 2, date: "02-11", clicks: 4, views: 2 },
    { id: 2, date: "02-11", clicks: 5, views: 2 },
    ]
    let result = data.reduce((a, v) => {
    let i = a.findIndex(a_v => a_v.date === v.date && a_v.id === v.id)
    if (i > -1) {
    a[i].clicks += v.clicks
    a[i].views += v.views
    }
    else a.push(v)
    return a
    }, [])
    我大 js 申请一战
    blless
        130
    blless  
       2020-03-28 15:02:25 +08:00
    @LokiSharp #123 ORM 本来就不是万能,我们现在业务跟数据库解耦,领域业务模型底层根据不同数据库实现不同数据落地,数据层用不了 ORM 大不了直接 SQL 而已,我们公司以前用 XORM,现在是自己写了一套。Redis 一样,脱离业务领域的数据是要经过编解码,Redis 我们用 Go-Redis 很久了,线上没出过啥问题。
    blless
        131
    blless  
       2020-03-28 15:03:46 +08:00
    @Mithril 自己找上来聊的,接受不了可以不了啊,随意 Block ,V2 也不过我上厕所的时候多看几眼而已
    caskeep
        132
    caskeep  
       2020-03-28 15:05:43 +08:00 via iPhone
    互联网喜欢 linux 系列产品
    LokiSharp
        133
    LokiSharp  
       2020-03-28 15:17:30 +08:00
    @blless #130
    1. 我所知道的几个用的 Golang 的团队都是选择自己造轮子。他们的结论是 Go 发展到现在十年了还没有一个靠谱的 ORM,不如自己造一个来得稳。(滑稽

    2. 好像 Golang 到现在还没有一个可用的包管理吧?用个第三方库还是 go get github.com/xxx/xxx import "github.com/xxx/xxx" 吧?

    3. 你都被用的语言坑到自己造轮子直接 SQL 了,还有什么脸说 .NET 生态差?.NET 下用 EF Core 换个数据库就是换个 Provider 的事情,用于查改删的 LINQ 代码都不用改一下。
    LokiSharp
        134
    LokiSharp  
       2020-03-28 15:22:07 +08:00
    @blless #131
    https://github.com/go-redis/redis
    针对你举出的 Go-Redis,Golang 有一点我很早就想吐槽了,为啥 Golang 都这么多年了代码还是一股脑的丢在根目录下面。每次这种代码结构让我回想起了十几年前自己写 C 的时候的样子,一点都没有现代语言的样子(滑稽
    JB18CM
        135
    JB18CM  
       2020-03-28 15:24:10 +08:00
    C#在国内的岗位将会越来越少, 不想饿死的话在家玩玩就好.
    blless
        136
    blless  
       2020-03-28 15:30:41 +08:00
    @LokiSharp 那个啥,扯到语言不是我本意。
    是 Mithril 说什么要钱,我只不过顺着他话茬说 Windows 生态要钱,引入 Go 只是顺嘴吐槽而已。在我那个时候( 2016 ?)情况就是如此,具体啥时候我也记不清楚了。反正我们切换没多久好像发布了.Net Core,但是那个时候决定还达不到生产可用的水准,那个时代感觉还是遍地 CentOS6 。云商崛起之后,运维的形势急剧演化,仿佛一夜之间,大家不知道 Docker 就落伍了一样。我们差不多就那个时候开始尝试+上云。后来就一发不可收拾了,后面开的项目都用 Go+Docker 了。.Net 那个时候青黄不接,能说啥呢?要是.Net Core 早发布一些,我们公司说不定还是继续 .Net ,.Net Linq 绝对是最好用查询没有之一。不说了,反正我觉得 .Net 现状势微,微软现在也是拥抱开源策略,崛起也指日可待。
    blless
        137
    blless  
       2020-03-28 15:38:07 +08:00
    @LokiSharp #134 要封装也可以吧,应该还是个人风格。https://github.com/gomodule/redigo 就完全不一样
    LokiSharp
        138
    LokiSharp  
       2020-03-28 15:47:51 +08:00
    @blless
    #136
    没办法,这就是国内公司的现状。遇事不决跟风上 Go 、Docker,已经和量子力学差不多了。
    转 Go 真的是太痛苦了,能顺利转过去真的不容易。Go 的社区太杂了,一大堆轮子看过去,写 JS 的前端、写 Python 找不到 Web 开发工作的后端转过去写的。代码写得好的有是有,但是想找到靠谱的太难了,而且每个花样都不一样,想换一个代码相当于重写。
    forgottencoast
        139
    forgottencoast  
       2020-03-28 16:03:36 +08:00
    @g00001 #100 aardio 还是中国人写的呢,厉害。
    paoqi2048
        140
    paoqi2048  
       2020-03-28 16:34:41 +08:00
    我以前用 VS 开发.NET 应用的时候有种便秘的感觉,不知道现在怎么样了👀
    jinmaoi
        141
    jinmaoi  
       2020-03-28 18:01:58 +08:00
    @greatgodwei 要不要赌一赌,我敢说在未来 5 年内将会越来越多
    g00001
        142
    g00001  
       2020-03-28 18:08:13 +08:00
    原来某人跟谁说话都这风格,几个号上了混战一番,战着战着友谊的小船就翻了,看到一次不奇怪,连续看到几次也是神奇。
    sagaxu
        143
    sagaxu  
       2020-03-28 18:11:14 +08:00
    @Rwing Kotlin 写起来不是一样吗? Scala 也差不多,JS 和 TS 都能写,Python 也能。Java 8 也能写,虽然丑一点。

    data.groupBy { it.id to it.date }.mapValues{ (k, v) ->
    Sample(
    id = k.first,
    date = k.second,
    clicks = v.sumBy { it.clicks },
    views = v.sumBy { it.views }
    )
    }

    有很多人为此从 Java 转换到 Kotlin/Scala 吗?有很多,但是相对于整体比例并不高。在不换生态的前提下,转换的人都有限,放弃生态转投 C#的意愿就更低了。JVM 抢不了 C#的领地,但能从 JVM 上抢份额的,也只有 Go,绝非 C#。
    noreplay
        144
    noreplay  
       2020-03-28 18:38:13 +08:00 via Android
    黑都没黑到点儿上。
    微软的更新是有时会断代更新。我遇到的例子是 EF core 。更新到 3.0 版本之后,之前的分页就不能用了。我们数据库用的的 SQL server 2008r2 。感觉这个 EF core.sqlserver 包的更新策略也太过激进了。
    woscaizi
        145
    woscaizi  
       2020-03-28 20:13:13 +08:00 via iPhone
    翻了上面几位朋友你来我往的讨论,有意思
    YongkeLi
        146
    YongkeLi  
    OP
       2020-03-28 21:21:45 +08:00 via Android
    各位大佬,我想表达的是这门语言在国内的生态。c# .netcore 本身还是很牛逼,我不持偏见,但是就业环境越来越差,工资也越来越低,搞得我现在不敢有换工作的想法
    Rwing
        147
    Rwing  
       2020-03-29 00:01:24 +08:00
    @sagaxu 我没说不能写,任何一个语言都能写,丑与美的区别。我的观点也跟转语言没关系,我之前说的是,一个语言是否受欢迎受待见,与语言本身是否优秀无关。
    Mithril
        148
    Mithril  
       2020-03-29 00:20:03 +08:00   ❤️ 1
    @YongkeLi .NET Core 在国内生态不行,最好早做打算。你可以拿它来赌一份薪水还不错又不用 996 的工作,但是你还是得有一门能拿来兜底的技术。后端的话最好还是 Java,或者流行度差一点的 Go 。然后再学个 Python 基本能保证最大概率找到一份工作。
    基本上面试考的都是语言或者框架的细节。但是大部分功能相似的框架设计思路都差不多。你在 Spring 里面学的那一套 ASP 里面一样用,区别只是实现细节不同而已。剩下的微服务的各种组件,数据库什么的都是通用的。然后再看看 Java 的 JVM,.NET 的 CLR 。这种虚拟机大部分算法和结构也都是相通的。你学的那些垃圾回收什么的概念也基本都能通用。
    个人建议不要把自己局限在某种语言或者框架上。深入了解细节是必要的,但也就只钻研一个就差不多了。更多的精力应该放在多学习几种语言和技术框架,多总结对比看看相似的功能在不同语言和技术里面实现方法是不是一样,对比一下各自优缺点。虽说这些东西面试不会考,但是对于自己的提升是很有帮助的。
    yexiaoxing
        149
    yexiaoxing  
       2020-03-29 01:08:59 +08:00
    @imbushuo 捕抓到著名黑客一枚。
    yexiaoxing
        150
    yexiaoxing  
       2020-03-29 01:10:25 +08:00
    OT 一下,说到 .Net Core 突然想到 Bing 。2018 年 8 月的时候 Bing 就从 .Net 切换到 .Net Core,然后表示真香了 :)

    Ref. https://devblogs.microsoft.com/dotnet/bing-com-runs-on-net-core-2-1/
    iamfredng
        151
    iamfredng  
       2020-03-29 01:23:20 +08:00
    你们有什么好争论的?看你们在这里争这些就好像看是拿砍刀切肉丁好呢还是拿美工刀切肉丁好。任何一门语言都有它用武之地何必一踩一捧?
    SpencerCJH
        152
    SpencerCJH  
       2020-03-29 02:08:03 +08:00
    有程序员那味了
    imbushuo
        153
    imbushuo  
       2020-03-29 11:28:00 +08:00
    @yexiaoxing 北京同事你好(
    lj2016
        154
    lj2016  
       2020-03-29 11:33:09 +08:00
    传统行业,工控行业,.net 用的不要太多,这世界上不是只有互联网企业的。
    pantilesoft
        155
    pantilesoft  
       2020-03-29 12:49:32 +08:00
    @LokiSharp SQL Server 对标 Oracle, 等哪天 Oracle 开源了, 保准 MS 第二天就跟进. ( ̄▽ ̄)"
    LokiSharp
        156
    LokiSharp  
       2020-03-29 12:59:31 +08:00 via iPhone
    @pantilesoft 我还是老老实实用 Postgresql 吧😹😹😹
    HangoX
        157
    HangoX  
       2020-03-30 01:08:22 +08:00
    C# 不错,但是这货生态链要掏钱,国内几个公司会为生态链掏钱,除非你一开始就去外企。和语言没关系,国内就是这个状况,我微博上关注一个人,在国外的,用 C#,是大神,混得也不错,国内我就没怎么见到过了。
    golang 虽然新,但是人家有特性啊,能吹啊。C#你一套都搞好了,还吹啥? flutter 不也是还没完成就出来的?就是因为没完成,才能造轮子,才能吹啊。程序员的世界哪里有那么单纯,最终目的都是为了赚钱吃饭的。
    quan01994
        158
    quan01994  
       2020-04-22 10:04:00 +08:00
    c#不错。.NET 因为只能运行在 windows 上,所以岗位确实有点少,也有点绑定了微软的生态链。但是现在有 .NETCore 。以后应该会有一个比较不错的发展吧。至少我作为一个.NETCore 的开发者,是这么感觉的。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4901 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:45 · PVG 17:45 · LAX 01:45 · JFK 04:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.