Получать данные в контроллер MVC из веб-ролей - PullRequest
0 голосов
/ 30 марта 2012

Я понял, как общаться между Web, Worker ролью и потоком в архитектуре MVC.

Мой вопрос: после того, как я запросил данные из таблицы в веб-роли, как контроллер в MVC может заставить эти данные отображаться в представлении?

Я попытался использовать глобальную статическую переменную в веб-роле, где данные заполняются, но когда я обращаюсь к статической переменной из контроллера, она возвращает только «ноль».Почему я получаю ноль?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 30 марта 2012

хорошо, если вы используете клиент хранилища, реализация будет выглядеть так:

  1. Создайте вашу модель:

        public class MyEntity : Microsoft.WindowsAzure.StorageClient.TableServiceEntity
        {
            public MyEntity()
            {
                PartitionKey = DateTime.UtcNow.ToString("MMddyyyy");</p>
    
    <pre><code>        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; }
    }
    </code>

    }

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 голосов
/ 30 марта 2012

мы говорим о приложении, чья часть MVC размещена в рабочей роли и которая получает данные из веб-роли, которая запрашивает хранилище таблиц? Или речь идет о приложении ASP.NET MVC, которое размещено в веб-роли?

статические переменные не очень хорошая идея из-за проблем параллелизма.

в случае сценария 1, как вы общаетесь с веб-ролью? через веб-сервис звоните напрямую?

Вы просто вызываете сервис со своего контроллера или делегируете вызов другому уровню, а затем помещаете эти данные в модель, которая затем отображается в соответствующем представлении.

пытались ли вы отладить это приложение локально, используя [azure local dev env] [1]

[1]: http://blogs.msdn.com/b/morebits/archive/2010/12/01/using-windows-azure-development-environment-essentials.aspx? или вы используете настоящую лазурную инфраструктуру? Вы уверены, что получаете данные из своего запроса? может запрос неверный? Вы наблюдали какие-либо исключения?

нам нужна дополнительная информация, чтобы помочь вам

...