0

我瞭解如何在Web,Worker角色和MVC體系結構中的流之間進行通信。從webrole接收MVC控制器中的數據

我的問題是,在我查詢web角色表中的數據之後,MVC中的控制器如何獲取此數據以在視圖中顯示?

我試圖在webrole中使用全局靜態變量,其中數據被填充,但是當我從控制器訪問靜態變量時,它只返回'null'。爲什麼我得到一個null?

謝謝。

回答

0

OK,如果你使用的存儲客戶端,實現起來是這樣的:

  1. 創建模型:

     
        public class MyEntity : Microsoft.WindowsAzure.StorageClient.TableServiceEntity 
        { 
         public MyEntity() 
         { 
          PartitionKey = DateTime.UtcNow.ToString("MMddyyyy");

     RowKey = string.Format("{0:10}_{1}", 
          DateTime.MaxValue.Ticks - DateTime.Now.Ticks, Guid.NewGuid()); 
        } 
    
        // Define the properties. 
        public string Title { get; set; } 
        public string Name { get; set; } 
    } 
    

    }

2.定義你的上下文類:

 


    public class MyDataContext : TableServiceContext 
     { 
      public MyDataContext(string baseAddress, 
       StorageCredentials credentials) 
       : base(baseAddress, credentials) 
      { } 

      public IQueryable GetMyEntity 
      { 
       get 
       { 
        return this.CreateQuery("MyTableName"); 
       } 
      } 
     } 

  1. 實現您的控制器的操作方法:
 

    public ActionResult Index() 
    { 
     var context = new MyDataContext(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); 

     var results = from g in context.GetMyEntity 
           where g.PartitionKey == 
           DateTime.UtcNow.ToString("MMddyyyy") 
           select g; 

     return View(results.FirstOrDefault()); 
    } 

這僅是參考代碼,這是非常醜陋的,將很難工作,因爲它是,但它仍然提供了一個如何在MVC項目中查詢表存儲的示例。

+0

嗨,數據讀取部分是在Webrole中爲Run()函數中的應用完成的。如果我在ASP.net MVC的控制器中實現數據讀取部分,webrole會做什麼?我的第二個問題是,我必須每隔10秒查詢一次表以獲取最新數據。如何從控制器做到這一點?謝謝 – 2012-03-30 12:58:05

+0

嗨,我不太清楚你的意思是由Run()函數。 Web角色是一種用於Web應用程序的託管環境。您可以考慮將Web應用程序託管在Web角色中,將您的Web應用程序部署到虛擬機的IIS中。微軟正在爲你做主機部分。因此,您的Web應用程序在Web角色內運行,這就是Web角色正在做的事情。到第二個問題:例如,您可以在View中實現JavaScript函數,並且每10秒異步調用一次控制器。 – Helikaon 2012-03-30 13:24:38

0

我們是在談論一個MVC部分託管在工作角色中的應用程序,它從查詢表存儲的Web角色獲取數據?或者我們在討論一個ASP.NET Web MVC應用程序,它在Web角色中託管?

由於併發性問題,靜態變量根本不是一個好主意。

如果情況1,你如何與網絡角色溝通?通過Web服務直接調用?

您只需從您的控制器調用該服務或將該調用委託給另一個圖層,然後將該數據放入您的模型中,然後將該數據顯示在相應的視圖中。

你嘗試過調試該應用程序在本地使用[蔚藍的本地開發ENV] [1]

[1]:http://blogs.msdn.com/b/morebits/archive/2010/12/01/using-windows-azure-development-environment-essentials.aspx?或者你使用真正的天藍色基礎設施?你確定你從查詢中獲取數據嗎?也許查詢是錯誤的?你有沒有發現任何異常?

這裏我們需要更多的信息,能夠幫助您

+0

我正在實施第二種情況,ASP.net MVC部分是在Web角色中託管的。 webrole查詢表存儲中的數據。我在調試中檢查了它,是的,我能夠查詢並獲取正確的數據。 – 2012-03-30 09:19:51