2012-03-21 64 views
0

您好我正在使用Windows Azure中的TCP/IP,并且能够成功开发TCP客户端来发送和接收TCP数据的Web角色。如何从.aspx页面访问WebRole数据?

我想在.aspx页面显示这个接收到的数据。我应该如何从.aspx页面访问webrole数据?

更新:

我看着MVC架构,并了解流程。

我的问题是如何从Webrole.cs/WorkerRole.cs文件中获取数据到控制器。我使用下面的代码来接收TCP数据:msdn.microsoft.com/en-us/hh285885

回答

0

无论哪种情况(web或worker角色),都有一个通用解决方案 - 使用中间存储器想要转移。对于工作者角色 - 很明显,工作者角色本身的角色不同于网络角色,因此他们之间没有直接沟通。对于网络角色来说,情况几乎相同。 Your WebRole.cs is instantiated in different process (WaIISHost.exe) than your web application (w3wp.exe)

因此,通用解决方案 - 为您的数据使用中间存储。您可以在communicate between different roles(和herehere)上找到不同的方法。根据您的具体要求,您可能会发现使用Azure Table Storage Serivce来存储来自TCP的数据更容易,然后从Controller读取表格。你甚至可能需要使用Azure Storage Queues

最后,它确实取决于您的具体和具体要求 - 您可以选择最适合您需求的解决方案。

UPDATE

嗨,数据读取部件在Webrole做是为我 run()函数器件的应用。

那么,your run function has no direct communication point of contact with you rcontroller。所以我不知道你在那里读什么,如果你只需要控制器中的数据。

我认为你应该修改你的主应用程序arcitecture。您的控制器的方法(aka Action)仅在客户端浏览器向您的应用程序发出有效的HTTP请求时执行。我没有看到有什么理由可以在请求之前阅读数据。尤其是快速变化的数据。只需等待来自浏览器的请求(也可能是AJAX请求),然后读取数据。你可以有一些很好的分区/行密钥策略,这样你就可以将读取的数据存储在本地应用程序缓存中,然后读取尚未读取的内容。或者只要读取数据就从表中删除?不知道你的总体应用需求,语义和arcitechture。

至于你的其他问题:

如果我实现数据读取ASP.net MVC的控制器partt, 会出现什么webrole做?

那么,您的“webrole.cs”就在那里,以便Windows Azure结构控制器知道您有一个Web应用程序正在运行并正在运行。你可以把它完全留空(非执行)!在RoleEntryPoint类中有一个Run()方法的默认实现,它只是无限的睡眠,对任何人都没有伤害。

+0

我明白如何在Web,Eorker角色和MVC体系结构中的流程之间进行通信。我现在的问题是,在我们使用workerrole.cs查询表中的数据后,MVC中的控制器如何获取这些数据以在视图中显示?谢谢。 – 2012-03-30 06:08:33

+0

workerrole.cs(或webrole.cs)将**写入表存储。控制器只会**读取表格。 – astaykov 2012-03-30 08:17:58

+0

嗨,数据读取部分是在Webrole中为我在Run()函数中的应用完成的。如果我在ASP.net MVC的控制器中实现数据读取部分,webrole会做什么?我的第二个问题是,我必须每隔10秒查询一次表以获取最新数据。如何从控制器做到这一点?谢谢。 – 2012-03-30 09:34:34