• 请不要在回答技术问题时复制粘贴 AI 生成的内容
salo
V2EX  ›  程序员

最近项目前后端分离,想问一下大家趟过的坑。

  •  
  •   salo · Aug 22, 2017 · 10772 views
    This topic created in 3366 days ago, the information mentioned may be changed or developed.

    公司近期准备考虑前后端分离,此前项目的架构一直是.net wcf+mvc,在前后端分离自己没有太多的经验。

    本人现期需要负责的是服务端的编写,所以在此想请问一下大家在考虑写服务端的时候要注意些什么地方,比如安全加密等方面。

    现服务端语言考虑在.net core2.0 和 Go 之间选一个。希望大家能够给一下建议,需要注意的方面。谢谢大家。

    65 replies  •  2017-08-24 08:28:11 +08:00
    zysidea
    zysidea
    Aug 22, 2017❤️1
    1
    果断用 Go
    salo
    salo
    OP
    Aug 22, 2017
    2
    后期需要考虑增加 APP 端。现在一直在想怎么考虑一个比较周全的方案出来。不为以后留坑。
    Hozart
    Hozart
    Aug 22, 2017
    3
    瓜皮的我处理 跨域&ajax&重定向 搞了好几天
    salo
    salo
    OP
    Aug 22, 2017
    4
    @Hozart 跨域重定向不是前端该考虑的问题吧。
    artikle
    artikle
    Aug 22, 2017❤️1
    5
    在之前的一家小公司搞过 WebApi 实现接口 主要给客户端 /APP/网站 /H5/微信调用
    1.注意调用加密
    2.注意接口版本升级
    laoli2017
    laoli2017
    Aug 22, 2017❤️2
    6
    有 java 不用,我也是醉了。.NET 就不要说了,你们公司自己用无所谓。如果出去打单,绝大多数企业不接受。
    go ? go 是什么东西?你上 51job 搜搜,看看有几个公司招 go 的?

    其他的嘛,统一 https。至于 ajax ?如果是对外的网站,估计推广的人会哭死。

    后台提供接口,前端用 jsp 的模板套 ajax。
    chy373180
    chy373180
    Aug 22, 2017
    7
    @laoli2017 ... go 挺好用的啊
    m939594960
    m939594960
    Aug 22, 2017
    8
    @laoli2017 #6 送你两个字 “无知”
    hst001
    hst001
    Aug 22, 2017
    9
    如果是在这二者选,当然是用 Go,未来 web 开发的趋势
    voocel
    voocel
    Aug 22, 2017 via Android
    11
    @laoli2017 呵呵
    xrlin
    xrlin
    Aug 22, 2017
    13
    @Hozart 重定向不应该是前端考虑的吗?后台返回一些必要信息就行,跨域这个还好,可以用的库也很多。
    sniffles
    sniffles
    Aug 22, 2017
    14
    前后端分离,通过请求和接口来沟通,我站在前端的角度分析一下

    1 处理好请求的分类,静态文件,接口,模板文件(如果是 SPA 的话)等等
    2 如果你们前端上 Vue/React/Angular 这类 SPA 框架,切记不要重定向,301,302 都不行,因为前端通过 router 进行页面切换,他会疯掉的
    3 接口传参数用 json 字符串,如果直接传 array 和 object,浏览器会进行奇怪的处理
    4 前端会用到很多奇奇怪怪的组件,对数据格式会有要求,前端提返回数据格式需求做好心理准备

    暂时没想到其他的,想到再补充
    salo
    salo
    OP
    Aug 22, 2017
    15
    @sniffles 感谢。
    Sapp
    Sapp
    Aug 22, 2017 via Android
    16
    @laoli2017 只看职位数量不看求职者数量是绝对不靠谱的行为。
    azh7138m
    azh7138m
    Aug 22, 2017 via Android
    17
    @xrlin 跨域和用啥库没关系的,要么服务器设置允许跨域,要么就是 jsonp 这种,套路很简单
    paradoxs
    paradoxs
    Aug 22, 2017
    18
    不用 java 是不负责任的行为.
    wwdyy
    wwdyy
    Aug 22, 2017
    19
    如果仅仅是这两个语言比较的话,那肯定是 go
    Tuisku
    Tuisku
    Aug 22, 2017
    20
    如果仅仅是这两个语言比较的话,那肯定是 .Net Core。

    “不得不说.net core2.0 继承了微软家产品简单易用的特点,我在一个 空荡荡的 linux 服务器执行了 6 行命令,一个完整的.net core 程序就跑了起来, 根本不需要像使用传统 linux 技术一样配各种环境。而且,在不同的平台上,不管是 linux、windows 还是 mac, .net core 的部署和操作基本上是一致的。 你在 windows 上部署好,一样的操作流程在 linux 上也可以用。 省心。很多人喜欢黑微软,可在易用性方面,他家鸡蛋里永远挑不出骨头。”

    “在编程体验上, 市面上任何技术都不可能和.net 技术正面刚。 比 C#用起来爽的语言有吗? 比 visual studio 用起来爽的开发环境有吗? 要是能找的出来算你赢。”

    引用自: http://www.cnblogs.com/aspwebchh/p/7409969.html
    kitalphaj
    kitalphaj
    Aug 22, 2017
    21
    哇,国内 Go 这么火么,感觉国外.net core 必然是首选。。。
    visonme
    visonme
    Aug 22, 2017
    22
    不知道是什么原因让你放弃 WCF 作为后端主要技术?
    虽然 Go 现在很火,但是我还是推荐你用 Net core,最大的前期优势就是你本身就是这个语系出来的。
    如果不考虑跨平台,其实 webapi2 技术就可以了~
    我对 Go 的了解,目前应用 Go 的都是编写高并发的服务端,不知道你是不是也有这块的需求,还有一点就是 Go 人才少,不好招,能来的薪资都不低~
    justtery
    justtery
    Aug 22, 2017 via Android
    23
    @laoli2017 吃不到葡萄说葡萄酸吧
    justtery
    justtery
    Aug 22, 2017 via Android
    24
    我司现在就是.net core+react 就是写前端费劲点
    RyougiShiki
    RyougiShiki
    Aug 22, 2017
    25
    python +vue
    tomczhen
    tomczhen
    Aug 22, 2017
    26
    前后端分离跟后端用啥语言有什么关系?
    zhangchioulin
    zhangchioulin
    Aug 22, 2017
    27
    @Tuisku #20 比 XXX 语言用的爽的这样的说法还是仁者见仁智者见智的。这个更多的还是比个人的熟练程度。
    loveCoding
    loveCoding
    Aug 22, 2017
    28
    哪个熟悉用哪个 , 高效率出活是关键
    laoli2017
    laoli2017
    Aug 23, 2017
    29
    @m939594960 呵呵,20 年从业经验,从 c 开始做起,我无知?
    Yurakin
    Yurakin
    Aug 23, 2017
    30
    前后端分离和语言有什么关系? 我目前用的 django_restful_framework +django,本来确实不错,但是卧槽尼玛的,我用的开发环境是 win10+pycharm,本地调试项目,windows 上的 nginx 真是卡的一 b,注意:是卡的一 b 一 b 的,我也不知道为啥。。。,我猜测本地是 linux 系统或许会好很多
    Hozart
    Hozart
    Aug 23, 2017
    31
    @Salo 前后端都是我做 小白入门跨域让我头疼两天了
    m939594960
    m939594960
    Aug 23, 2017
    32
    @laoli2017 #29 20 年还这见识?多少年经验不是评判一个人水平的标准,我 80 岁就一定比 50 岁的牛逼么?
    m939594960
    m939594960
    Aug 23, 2017
    33
    @laoli2017 #29
    1.出去打单 这个我不懂我不评价了
    2.go ? go 是什么东西? 你是什么东西?七牛,今日头条都是 go 写的,你查查 go 都是多少工资?
    3.至于 ajax ?如果是对外的网站,估计推广的人会哭死。 你知道什么叫 server render 么?
    4.前端用 jsp 的模板套 ajax jsp 末班套 ajax' 你知道什么叫前后端分离么?
    Sypher
    Sypher
    Aug 23, 2017
    34
    @laoli2017 求教,“至于 ajax ?如果是对外的网站,估计推广的人会哭死。”是什么意思
    salo
    salo
    OP
    Aug 23, 2017
    35
    嗯,写.net 大概 6 年了,期间用过 GO 写过一些公司的项目,至今线上跑了没出过问题。考虑到前后端分离,所以打算的时候以后不依托在 Windows 上。因为在上面吃过太多亏。现在是想把所有的部署在 Linux 环境上。这样也是一个趋势吧。正好.net core 2.0 的发布,所以想在这 2 个之间做个抉择。
    askfilm
    askfilm
    Aug 23, 2017
    36
    我认为用不成熟的技术的行为就是不负责任, 你要是不爽公司也就无所谓了
    salo
    salo
    OP
    Aug 23, 2017
    37
    @askfilm 那这样来说,Go 比较成熟点吧.
    min
    min
    Aug 23, 2017
    38
    你有.net 经验,.net core 2.0 比较自然
    SakuraKuma
    SakuraKuma
    Aug 23, 2017
    39
    @m939594960 #33
    人家用 20 年前的经验干 20 年,不要较真。
    SakuraKuma
    SakuraKuma
    Aug 23, 2017
    40
    注意版本号这个后上已经说了,天知道产品要变多少需求
    既然你用习惯.net ,那就继续.net 吧
    cinextio
    cinextio
    Aug 23, 2017 via Android
    41
    在后端和前端之间可以放个 node 来处理特定情况
    mooncakejs
    mooncakejs
    Aug 23, 2017
    42
    真心建议,如果在意 seo,不要上什么前后分离。
    ssr 不是那么完美,如果搞面向蜘蛛和面向用户两套系统,有作弊风险。
    如果全站 ssr,性能不太行。

    @m939594960 “大神”,推荐一个需要 seo 的大站,谁家是前后分离的看看?
    xposed1
    xposed1
    Aug 23, 2017
    43
    难道不应该是 spring boot 或.net core 吗? GO 连完整的面向对象都不支持,用它来写业务逻辑不觉得别扭吗?感觉用 go 写业务逻辑跟用 C 语言写业务逻辑差不多。
    m939594960
    m939594960
    Aug 23, 2017
    44
    @mooncakejs #42 首先我不是大神。 第二你说的大站多大算大?知乎算么?
    zysidea
    zysidea
    Aug 23, 2017
    45
    @xposed1 感情你是被面向对象束缚了。。。。。。Go 没有面向对象,但是 Go 可以通过 interface 和 struct 来实现所谓的面向对象,如果你用 Go 写过项目,你就不会这样说了。
    xposed1
    xposed1
    Aug 23, 2017
    46
    @zysidea C 语言也可以通过 struct 来实现面向对象,gtk+就用 C 语言实现了自己的一套面向对象接口,但跟真正面向对象的语言,用起来还是不一样的。Go 有 hibernate 和 entity framework 这种企业级的 ORM 吗?感觉 Go 做后端跟 Node 是一个重量级的,跟 java 和 C#就像手枪和重机枪的差距。
    looplj
    looplj
    Aug 23, 2017
    47
    当然用 Go 了。
    Famio
    Famio
    Aug 23, 2017
    48
    .NETer 前来支援阵营。
    salo
    salo
    OP
    Aug 23, 2017
    49
    在写 go 项目的时候感觉写 go 比较轻松,不用去考虑太多的问题
    daizongxyz
    daizongxyz
    Aug 23, 2017
    50
    支持用 go,谁用谁知道
    voocel
    voocel
    Aug 23, 2017
    51
    @Yurakin linux 原生支持 epoll
    Mithril
    Mithril
    Aug 23, 2017
    52
    @Yurakin nginx 在 Windows 上也就是能跑而已。。。
    bhaltair
    bhaltair
    Aug 23, 2017
    53
    ruby
    JohnSmith
    JohnSmith
    Aug 23, 2017
    54
    go 的最大优势在于基础库的数量和质量
    ZhLTE
    ZhLTE
    Aug 23, 2017
    55
    @laoli2017 无知
    ZhLTE
    ZhLTE
    Aug 23, 2017
    56
    推荐 go 吧 .net core 还得观望一阵
    anyele
    anyele
    Aug 23, 2017
    57
    根据巨硬走, .net core 2.0 走起
    lonelygo
    lonelygo
    Aug 23, 2017
    58
    从前后端分离成功的歪楼到语言歧视了😄
    devtiange
    devtiange
    Aug 23, 2017
    59
    考虑到楼主的情况, 当然是选 .net core 了. go 泛型还在天上飞, 何况世界上有能和 c# 刚正面的语言? 不存在的
    devtiange
    devtiange
    Aug 23, 2017
    60
    V2 竟然有六楼这么 low 的用户, 令人很是失望.
    VicYu
    VicYu
    Aug 23, 2017
    61
    你们公司会那个的人多用那个.
    Yurakin
    Yurakin
    Aug 23, 2017
    62
    @Mithril 😔,了解不充分的锅
    mikulch
    mikulch
    Aug 24, 2017
    63
    这么多人喜欢用 go 吗。
    lxml
    lxml
    Aug 24, 2017 via iPhone
    64
    一般别人质疑的时候,例证不是我写过 xxx,自己看看效果如何,而是甩出所谓二十年、三十年经验,程序员又不是拼行数和码龄取胜,所以这个 level 提出的建议一般他可能就……
    MIMEIK
    MIMEIK
    Aug 24, 2017 via Android
    65
    着急那个熟用哪个,不着急哪个不熟用哪个。
    起码多了解点不(hao)吃(tiao)亏(cao),不是吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2327 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 90ms · UTC 13:17 · PVG 21:17 · LAX 05:17 · JFK 08:17
    ♥ Do have faith in what you're doing.