2012-03-11 105 views
1

我为某种目的构建了桌面WPF C#应用程序。 C#应用程序在另一个C++应用程序中调用函数,并将C++应用程序的结果返回给C#应用程序。该应用程序工作正常,但我打算采取相同的功能(ASP.NET)将C#桌面应用程序移植到网络

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

EDIT--
我最关心的是,当我发出函数调用C++应用程序,它需要5秒钟的C++函数来执行它的处理。在此期间,C#应用程序可能被认为是冻结的GUI。在ASP.NET网站中类似的情况会发生什么?由于多线程和所有这些会导致混乱吗?

回答

2

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

+0

这会有什么不同或者一样吗?我主要担心的是,当我向C++应用程序发出函数调用时,C++函数花费5秒钟来处理它。在此期间,C#应用程序可能被认为是冻结的GUI。在ASP.NET网站中类似的情况会发生什么?由于多线程和所有这些会导致混乱吗? – Cipher 2012-03-11 14:29:32

+0

如果计算需要5秒钟,服务器上的请求处理将花费相同的5秒(+发送响应时间,但以毫秒为单位)。客户端将等待来自服务器的三重响应。如果您将使用AJAX,则网页不会被冻结。否则,用户将等待整个页面数据(可以浏览前页/空页面并加载动画)。 – TcKs 2012-03-11 14:37:17

+0

处理请求的最大时间可以在Web服务器中配置(您可以使用IIS)。有很多可配置的值用于稳定性/可伸缩性等。 – TcKs 2012-03-11 14:38:23

1

在ASP.NET应用程序中调用COM或pinvoked方法时没有问题。即使通话持续5秒完成,客户端的浏览器也只是等待答案。因此,您的应用程序的用户体验只是缓慢。

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

0

它基本上是一样的! wpf使用与aps.net 相同的clr,区别在于,Web应用程序主要是多用户环境。 所以你的COM/C++组件必须与并发用户一起工作。

相关问题