【问题标题】:Porting a C# desktop app to web将 C# 桌面应用程序移植到 Web
【发布时间】:2012-03-11 14:20:54
【问题描述】:

出于某种目的,我构建了一个桌面WPF C# 应用程序。 C# 应用程序调用另一个 C++ 应用程序中的函数,并将 C++ 应用程序的结果返回给 C# 应用程序。该应用程序运行良好,但我打算将相同的功能带到 Web (ASP.NET)

我可以使用我在桌面解决方案中使用的相同类型的东西吗? ASP.NET 应用程序能否将函数调用到 C++ 项目中,并从 C++ 应用程序中取回结果? DllImport[CallingConvention = CDecl, CharEncoding=Ansi]

编辑--
我主要担心的是,当我向 C++ 应用程序发出函数调用时,C++ 函数需要 5 秒才能完成处理。在此期间,可以认为 C# 应用程序具有冻结的 GUI。在 ASP.NET 网站中类似的情况会发生什么?会不会因为多线程等等而一团糟?

【问题讨论】:

    标签: c# c++ asp.net wpf


    【解决方案1】:

    是的,ASP.NET 应用程序可以使用 DllImport 机制。

    【讨论】:

    • 这有什么不同还是一样?我主要担心的是,当我向 C++ 应用程序发出函数调用时,C++ 函数需要 5 秒才能完成处理。在此期间,可以认为 C# 应用程序具有冻结的 GUI。在 ASP.NET 网站中类似的情况会发生什么?会不会因为多线程等等而一团糟?
    • 如果计算需要 5 秒,服务器上的请求处理将同样需要 5 秒(+ 一些发送响应的时间,但以毫秒为单位)。客户端将等待服务器的响应。如果您将使用 AJAX,则网页不会被冻结。否则,用户将等待整个页面数据(可能会在浏览器中看到上一个/空页面和加载动画)。
    • 处理请求的最长时间可在 Web 服务器中配置(您将适当地使用 IIS)。有很多用于稳定性/可扩展性/等的可配置值...
    【解决方案2】:

    在 ASP.NET 应用程序中调用 COM 或 pinvoked 方法没有问题。即使呼叫持续 5 秒完成,客户端的浏览器也只是等待应答。结果,您的应用程序的用户体验变得迟缓。

    通常如此持久的服务器调用被包装在 AJAX 请求中,这样至少您可以向用户显示一些信息,例如带有“请稍候”或类似内容的旋转圆圈。

    【讨论】:

      【解决方案3】:

      基本一样! wpf 使用与 aps.net 相同的 clr 不同之处在于,Web 应用程序主要是多用户环境。 因此您的 com/c++ 组件必须与并发用户一起使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-21
        • 2017-05-21
        • 2013-05-23
        相关资源
        最近更新 更多