最近项目前后端分离,想问一下大家趟过的坑。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Salo
V2EX    程序员

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

  •  
  •   Salo 2017 年 8 月 22 日 10026 次点击
    这是一个创建于 3063 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

    @m939594960 “大神”,推荐一个需要 seo 的大站,谁家是前后分离的看看?
    xposed1
        43
    xposed1  
       2017 年 8 月 23 日
    难道不应该是 spring boot 或.net core 吗? GO 连完整的面向对象都不支持,用它来写业务逻辑不觉得别扭吗?感觉用 go 写业务逻辑跟用 C 语言写业务逻辑差不多。
    m939594960
        44
    m939594960  
       2017 年 8 月 23 日
    @mooncakejs #42 首先我不是大神。 第二你说的大站多大算大?知乎算么?
    zysidea
        45
    zysidea  
       2017 年 8 月 23 日
    @xposed1 感情你是被面向对象束缚了。。。。。。Go 没有面向对象,但是 Go 可以通过 interface 和 struct 来实现所谓的面向对象,如果你用 Go 写过项目,你就不会这样说了。
    xposed1
        46
    xposed1  
       2017 年 8 月 23 日
    @zysidea C 语言也可以通过 struct 来实现面向对象,gtk+就用 C 语言实现了自己的一套面向对象接口,但跟真正面向对象的语言,用起来还是不一样的。Go 有 hibernate 和 entity framework 这种企业级的 ORM 吗?感觉 Go 做后端跟 Node 是一个重量级的,跟 java 和 C#就像手枪和重机枪的差距。
    looplj
        47
    looplj  
       2017 年 8 月 23 日
    当然用 Go 了。
    Famio
        48
    Famio  
       2017 年 8 月 23 日
    .NETer 前来支援阵营。
    Salo
        49
    Salo  
    OP
       2017 年 8 月 23 日
    在写 go 项目的时候感觉写 go 比较轻松,不用去考虑太多的问题
    daizongxyz
        50
    daizongxyz  
       2017 年 8 月 23 日
    支持用 go,谁用谁知道
    voocel
        51
    voocel  
       2017 年 8 月 23 日
    @Yurakin linux 原生支持 epoll
    Mithril
        52
    Mithril  
       2017 年 8 月 23 日
    @Yurakin nginx 在 Windows 上也就是能跑而已。。。
    bhaltair
        53
    bhaltair  
       2017 年 8 月 23 日
    ruby
    JohnSmith
        54
    JohnSmith  
       2017 年 8 月 23 日
    go 的最大优势在于基础库的数量和质量
    ZhLTE
        55
    ZhLTE  
       2017 年 8 月 23 日
    @laoli2017 无知
    ZhLTE
        56
    ZhLTE  
       2017 年 8 月 23 日
    推荐 go 吧 .net core 还得观望一阵
    anyele
        57
    anyele  
       2017 年 8 月 23 日
    根据巨硬走, .net core 2.0 走起
    lonelygo
        58
    lonelygo  
       2017 年 8 月 23 日
    从前后端分离成功的歪楼到语言歧视了
    devtiange
        59
    devtiange  
       2017 年 8 月 23 日
    考虑到楼主的情况, 当然是选 .net core 了. go 泛型还在天上飞, 何况世界上有能和 c# 刚正面的语言? 不存在的
    devtiange
        60
    devtiange  
       2017 年 8 月 23 日
    V2 竟然有六楼这么 low 的用户, 令人很是失望.
    VicYu
        61
    VicYu  
       2017 年 8 月 23 日
    你们公司会那个的人多用那个.
    Yurakin
        62
    Yurakin  
       2017 年 8 月 23 日
    @Mithril ,了解不充分的锅
    mikulch
        63
    mikulch  
       2017 年 8 月 24 日
    这么多人喜欢用 go 吗。
    lxml
        64
    lxml  
       2017 年 8 月 24 日 via iPhone
    一般别人质疑的时候,例证不是我写过 xxx,自己看看效果如何,而是甩出所谓二十年、三十年经验,程序员又不是拼行数和码龄取胜,所以这个 level 提出的建议一般他可能就……
    MIMEIK
        65
    MIMEIK  
       2017 年 8 月 24 日 via Android
    着急那个熟用哪个,不着急哪个不熟用哪个。
    起码多了解点不(hao)吃(tiao)亏(cao),不是吗?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2634 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 04:05 PVG 12:05 LAX 20:05 JFK 23:05
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86