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

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

  •  
  •   Salo · 2017-08-22 15:03:52 +08:00 · 9377 次点击
    这是一个创建于 2641 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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