Получить данные в контроллере MVC от webrole

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

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

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

Спасибо.


person Anil Maddala    schedule 30.03.2012    source источник


Ответы (2)


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

  1. Create your Model:

        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.

person Helikaon    schedule 30.03.2012
comment
Привет, часть чтения данных выполняется в Webrole для моего приложения в функции Run(). Если я реализую часть чтения данных в контроллере ASP.net MVC, что будет делать webrole? Мой второй вопрос: я должен запрашивать таблицу каждые 10 секунд, чтобы получить последние данные. как это сделать из контроллера? Спасибо - person Anil Maddala; 30.03.2012
comment
Привет, я не совсем уверен, что вы подразумеваете под функцией Run(). Веб-роль — это своего рода среда размещения вашего веб-приложения. Вы можете думать о размещении вашего веб-приложения в веб-роли как о развертывании вашего веб-приложения в IIS виртуальной машины. Microsoft делает часть хостинга для вас. Таким образом, ваше веб-приложение работает внутри веб-роли, и именно это делает веб-роль. на ваш второй вопрос: вы можете, например, реализовать функцию JavaScript в своем представлении и асинхронно вызывать свой контроллер каждые 10 секунд. - person Helikaon; 30.03.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 ? или вы используете настоящую лазурную инфраструктуру? Вы уверены, что получаете данные из своего запроса? может запрос неверный? вы заметили какие-либо исключения?

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

person Helikaon    schedule 30.03.2012
comment
Я реализую второй сценарий. Часть ASP.net MVC размещена в веб-роли. Webrole запрашивает данные из хранилища таблиц. Я проверил это в отладке и да, я могу запросить и получить правильные данные. - person Anil Maddala; 30.03.2012