【问题标题】:How to Access WebRole data from .aspx page?如何从 .aspx 页面访问 WebRole 数据?
【发布时间】:2012-03-21 07:05:59
【问题描述】:

您好,我正在 Windows Azure 中开发 TCP/IP,并且能够成功开发 TCP 客户端来发送和 Web 角色来接收 TCP 数据。

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

更新:

我研究了 MVC 架构并理解了流程。

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

【问题讨论】:

    标签: asp.net-mvc tcp azure azure-web-roles


    【解决方案1】:

    在任何一种情况下(网络或工作人员角色)都有一个通用解决方案 - 为您要传输的数据使用中间存储。对于 worker 角色 - 很明显,worker 角色本身与 web 角色是不同的角色,因此它们之间没有直接通信。对于网络角色,情况几乎相同。 Your WebRole.cs is instantiated in different process (WaIISHost.exe) than your web application (w3wp.exe).

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

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

    更新

    您好,数据读取部分是在 Webrole 中完成的,用于我的应用程序 Run() 函数。

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

    我认为您应该修改您的主要应用程序架构。您的控制器的方法(又称操作)仅在从客户端浏览器向您的应用程序发出有效的 HTTP 请求时执行。我看不出有什么理由在请求数据之前读取数据。尤其是快速变化的数据。只需等待来自浏览器的请求(也可能是 AJAX 请求),然后读取数据。您可以有一些好的分区/行键策略,以便您可以将读取的数据存储在本地应用程序缓存中,并读取尚未读取的内容。还是在读取数据后从表中删除?不了解您的整体应用需求、语义和架构。

    至于你的其他问题:

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

    好吧,您的“webrole.cs”就在那里,以便 Windows Azure Fabric 控制器知道您有一个正在运行的 Web 应用程序。您可以将其完全留空(非实现)! RoleEntryPoint 类本身有一个 Run() 方法的默认实现,就是无限休眠,对任何人都没有伤害。

    【讨论】:

    • 我了解了如何在 Web、Eorker 角色和 MVC 架构中的流之间进行通信。我现在的问题是,在我们使用 workerrole.cs 从表中查询数据后,MVC 中的控制器如何让这些数据显示在视图中?谢谢。
    • workerrole.cs(或 webrole.cs)将写入到表存储中。控制器只会读取表格。
    • 您好,数据读取部分是在 Webrole 中完成的,用于我在 Run() 函数中的应用。如果我在 ASP.net MVC 的控制器中实现数据读取部分,那么 webrole 会做什么?我的第二个问题是,我必须每 10 秒查询一次表才能获取最新数据。如何从控制器执行此操作?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多