2011-12-26 144 views
0

我需要构建一个网站和一个双向通信的应用程序。我将使用ASP.NET构建网站,并使用C#构建应用程序。ASP.NET Web App和C#应用程序之间的双向通信

我将自己托管网站,它将与应用程序在同一台机器上运行。

我不知道用什么最好的技术来发送数据。 C#应用程序需要始终运行。我应该建立一个C#控制台应用程序,然后隐藏控制台窗口吗?或者其他类型的应用会更合适吗?

我一直在寻找网络,发现了几个不同的建议,包括套接字,消息队列,远程处理和WCF。几个指针将非常感谢 - 我是所有这一切的新手。

谢谢。

编辑将使用请求 - 响应模式,Web应用程序始终是实例化请求的模式。这就是我所说的双向沟通​​。

该Web应用程序将向后端应用程序发送请求,后端应用程序将执行一些处理,然后将响应发送回Web应用程序。 JSON将用于来回发送数据。

我将使用SQL Server Express 2008 R2,后端应用程序将是唯一一个与数据库进行通信的应用程序。 Web应用程序将主要关注表示层。

后端应用程序将具有内存中的对象,这些对象在应用程序启动时(从数据库加载数据)实例化,然后保留到数据库(在执行期间和结束之前)。 C#控制台应用程序是否适合这种类型的应用程序?

+0

你会使用什么样的数据源?在例子MSSQL? – 2011-12-26 12:41:11

+0

@Rachel - 他们会有什么样的交流?如果它是简单的数据通信,那么你的Windows应用程序可以将它放置在数据库中,并且Web应用程序调用将它从数据库中拉出来,否则请去WCF。 – Bibhu 2011-12-26 12:45:09

+0

@Trikks是的,我将使用SQL Server 2008 R2。我的想法是只有C#应用程序与数据库进行通信,以便Web应用程序将主要关注表示层。我可能会使用JSON将数据发送到/来回这两个应用程序。 – Rachel 2011-12-26 12:47:45

回答

4

您在您的评论描述的是典型的三更高级的应用程序。

  • 前端:在IIS
  • 托管ASP.NET应用程序后端:.NET应用程序运行的Windows服务(或WCF应用程序托管在IIS/WAS)与公开的Web服务。前端应用程序使用Web服务(或远程处理)与此应用程序进行通信。
  • 数据库:仅由后端应用程序访问。

只是为了说清楚。双向有很多含义,但在这种情况下常见的是前端调用后端和后端响应(请求 - 响应模式)。后端从不调用前端 - ASP.NET应用程序很难实现这种通信。

ASP.NET根据请求进行工作。客户端调用您的ASP.NET应用程序,并处理客户端请求=这是所有逻辑运行的地方。处理请求时,处理结束。因此,从后端调用ASP.NET应用程序并不适合这种情况,除非您为后端处理公开某些特殊的Web服务,但即使在此之后,它也不会与您的客户端请求处理相关联,而无需在ASP.NET中保留一些内部状态应用。

+0

是的,你正确理解我的情况。我将使用请求 - 响应模式,前端总是实例化请求,而后端是唯一访问数据库的人。后端应用程序应具有在开始执行时从数据库加载的内存中对象,并在停止之前保留该对象。那么C#控制台应用程序会更适合吗? – Rachel 2011-12-26 13:43:39

+0

当前端是ASP.NET时,控制台应用永远不会更合适。 – 2011-12-26 15:14:55

0

WCF可能是一个选择。你可以用WCF建立你需要的连接。我建议你看看SignalR。这是一个项目,它使您能够在您的Web应用程序和客户端应用程序之间建立持久连接。 (在这种情况下你的C#应用​​程序)。官方话语中,SignalR是ASP.NET的异步信号库,可帮助构建实时的多用户交互式Web应用程序。

+0

我不想为这个项目使用第三方库,但是非常感谢你提出这个建议。我从来没有使用过WCF。如果我构建一个WCF应用程序,我可以像我的问题(更新)中解释的那样保留内存中的对象吗? – Rachel 2011-12-26 14:04:35

+0

@Rachel SignalR可能看起来像第三方库,但事实并非如此。该项目背后的主要开发人员是ASP.NET团队的核心成员:Damian Edwards和David Fowler。我敢打赌,这个项目将在未来的版本中内置到核心ASP.NET中。 – tugberk 2011-12-26 14:29:25

0

WCF会工作,你也可能想看看消费/写一个Web服务,但是这取决于如果你想同步或异步上看起来更像是问题..

相关问题