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

怎么将现有的 C# 应用程序做成 web 服务( rest api)

  •  
  •   fffflyfish · 2017-06-15 11:29:57 +08:00 · 5382 次点击
    这是一个创建于 2722 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好,这两天做项目遇到一个问题,同事 A 用 C#写了一个 winodws 窗口应用程序,然后同事 B 想调用同事 A 的部分功能,但是同事 B 使用的是 Python 相关的技术栈,如果要把两个人的工作接起来,为现在想到的最好的方式就是把同事 A 的应用程序做成一个 web 服务,就类似 rest api 的形式,但是本人的技术栈都在 python 这边,所以想问下各位大佬,有没有相关的教程或者其他什么建议? 先谢谢各位了

    28 条回复    2017-06-16 12:35:11 +08:00
    johnny23
        1
    johnny23  
       2017-06-15 11:52:23 +08:00 via iPhone
    webservice
    johnny23
        2
    johnny23  
       2017-06-15 11:53:23 +08:00 via iPhone
    ashx asmx aspx 都可以做 千变万变 都是 http 协议 当然 asmx 可以支持 soap 等
    johnny23
        3
    johnny23  
       2017-06-15 11:53:37 +08:00 via iPhone
    @johnny23 还有 wsdl
    johnny23
        4
    johnny23  
       2017-06-15 11:55:38 +08:00 via iPhone
    还有 如果不想和 iis 耦合很紧 可以用 owin 这个组件 具体用法博客园多的很
    hjc4869
        5
    hjc4869  
       2017-06-15 12:06:49 +08:00
    ASP.NET Core MVC 的 Web API
    anyele
        6
    anyele  
       2017-06-15 12:24:35 +08:00
    ASP.NET Web API
    fffflyfish
        7
    fffflyfish  
    OP
       2017-06-15 15:05:41 +08:00
    @johnny23 @hjc4869 @anyele 谢谢三位大佬,正是我要找的!
    anyele
        8
    anyele  
       2017-06-15 15:35:05 +08:00
    @fffflyfish #7 建议你直接用 ASP.NETCore
    fffflyfish
        9
    fffflyfish  
    OP
       2017-06-15 16:34:20 +08:00
    @anyele 就是直接用 dotnet 这个命令创建吗,我其实也倾向于用这个,毕竟装一个 vs2013 费时费力
    anyele
        10
    anyele  
       2017-06-15 17:17:06 +08:00
    @fffflyfish #9 你要装 VS2017 才能用, 而且现在安装 VS 很快了
    anyele
        11
    anyele  
       2017-06-15 17:19:31 +08:00
    @fffflyfish #9 当然你可以用轻量级的其他的 IDE 比如 jetbrains 家的, 不过我还是推荐 VS2017,毕竟是官方的
    fffflyfish
        12
    fffflyfish  
    OP
       2017-06-15 18:54:41 +08:00
    @anyele 懂了,谢谢大佬
    Hyeongo
        13
    Hyeongo  
       2017-06-15 20:44:03 +08:00 via iPhone
    vscode 就可以写.net core 吧
    kkeybbs
        14
    kkeybbs  
       2017-06-15 23:49:18 +08:00 via Android
    可以换个思路,不用走 web,毕竟改造 winform 成 web 还有点成本。编译加上 com,编译出来的 exe 可以当成 com 组件用。python 通过 win32com 直接调用 com 组件
    fffflyfish
        15
    fffflyfish  
    OP
       2017-06-16 00:07:40 +08:00 via iPhone
    @kkeybbs 哦?还可以这样玩?我查查,看起来工作量少很多,谢谢大佬
    PythonAnswer
        16
    PythonAnswer  
       2017-06-16 03:36:35 +08:00 via Android
    com 组件方便很多的,如果只是本机使用的话,没必要 http
    XiaoFaye
        17
    XiaoFaye  
       2017-06-16 03:44:17 +08:00   ❤️ 1
    @kkeybbs 千万别用 COM,那是一个大坑,你总得考虑以后的移植问题,最好的方法就是在现有的 WinForm 上面加个 SelfHost,然后 RestAPI 输出。
    kkeybbs
        18
    kkeybbs  
       2017-06-16 06:59:01 +08:00 via Android   ❤️ 1
    @XiaoFaye 赞同 com 有坑,更赞同“经济的满足使用要求”,这个 lz 自己平衡未来维护扩展
    beginor
        19
    beginor  
       2017-06-16 07:00:20 +08:00 via Android   ❤️ 1
    为啥总是折腾同事 A 呢, 同事 B 能否试试 Iron Python 呢,py 代码直接在 .net 上跑, 互操作也挺好。
    kkeybbs
        20
    kkeybbs  
       2017-06-16 07:00:37 +08:00 via Android
    @fffflyfish 还有个办法,ironpython,直接调用 c#的 exe 和 dll,不过不是常用的那个“标准 python ”了

    http://m.blog.csdn.net/manimanihome/article/details/53178789
    kkeybbs
        21
    kkeybbs  
       2017-06-16 07:01:48 +08:00 via Android
    @beginor (●'◡'●) 刚想起来这个东西
    bearqq
        22
    bearqq  
       2017-06-16 07:47:17 +08:00 via Android
    本地 python 调用别语言第一反应是用 dll→_→
    yesicoo
        23
    yesicoo  
       2017-06-16 08:39:28 +08:00
    Owin 不需要 IIS 部署 SelfHost
    dhssingle
        24
    dhssingle  
       2017-06-16 08:53:30 +08:00
    vscode+asp.net core web api +1
    Presbyter
        25
    Presbyter  
       2017-06-16 08:53:34 +08:00
    RabbitMQ 吧,顺带着都为服务化了.
    fffflyfish
        26
    fffflyfish  
    OP
       2017-06-16 10:10:32 +08:00
    @beginor 老哥不要误会,这里只是方便描述,其实就是只有我一个人,ironPython 是一个不错的思路,涨姿势了,谢谢🙏
    fffflyfish
        27
    fffflyfish  
    OP
       2017-06-16 10:12:04 +08:00
    @XiaoFaye 学习了,谢谢大佬!
    pixes4world
        28
    pixes4world  
       2017-06-16 12:35:11 +08:00
    ASP.NET (core) Web API or Nancy,更推荐 Nancy,轻量简单
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1076 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:25 · PVG 06:25 · LAX 14:25 · JFK 17:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.