Эмуляция Windows Azure TDS на производственном не-Azure IIS-сервере - PullRequest
1 голос
/ 24 апреля 2011

Я занимаюсь разработкой веб-приложения ac #, которое будет размещено в Windows Azure, и использую Table Data Storage (TDS).

Я хочу создать свое приложение таким образом, чтобы я мог (как вариант) развернутьприложение к традиционному серверу IIS с некоторым другим бэкэндом NoSql.По сути, я хочу дать своим клиентам возможность либо заплатить мне за программное обеспечение в качестве модели обслуживания, либо приобрести лицензию на мое приложение, которое они могут установить на свой (не Azure) производственный сервер самостоятельно.

Как лучше всего спроектировать свой уровень данных и средний уровень для достижения обеих целей?

Мне, вероятно, понадобятся рабочая роль Windows Azure и очередь Azure.Насколько сложно их воспроизвести?Могу ли я заменить пользовательскую службу Windows и некоторые другие технологии организации очередей?

Как можно записать сущности в моей модели данных таким образом, чтобы я мог развертывать их в Azure TDS или в другом хранилище, не развертывая в Azure?Будет ли для этого полезен MongoDB или что-то подобное?

Конечно, есть способ создать Azure, не вступая в брак с ним.

Ответы [ 2 ]

2 голосов
/ 24 апреля 2011

Мне, вероятно, понадобятся рабочая роль Windows Azure и очередь Azure.Насколько сложно их воспроизвести?Могу ли я заменить пользовательскую Службу Windows и некоторые другие технологии организации очередей?

Да - служба Windows с какой-либо другой технологией организации очередей вполне подойдет для этого - и рабочие роли имеют цикл main / Run, который легкоиспользовать в службе Windows.

Как можно записать сущности в моей модели данных таким образом, чтобы я мог развертывать их в Azure TDS или в другом хранилище, не развертывая в Azure?Будет ли для этого полезен MongoDB или аналогичный?

NoSql - это общий термин, объединяющий множество различных технологий.Я думаю, что Azure TDS в настоящее время принадлежит к семейству хранилищ Key-Value NoSql, в то время как MongoDB - это больше база данных документов, предлагающая гораздо более богатую функциональность, чем TDS - см. http://en.wikipedia.org/wiki/NoSQL_(concept). Для имитации дублирования Azure TDS, я думаю, может быть вариант чего-то вродеRedis может работать (хотя я полагаю, что сам Redis обладает более широкими функциональными возможностями, чем TDS в настоящее время)

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

Конечно, есть способ создать Azure, не будучи женатым на нем.

Да, когда выВ вашем вопросе предложено, что вы можете создать свое приложение так, чтобы оно могло работать на других технологиях.На самом деле, это довольно похожая задача на традиционные методы абстракции данных SQL.Тем не менее, я думаю, что есть несколько мест, где вы обнаружите, что TDS подталкивает вас в определенных направлениях, что не очень подходит для других хранилищ - например, Azure намного больше подталкивает вас к репликации данных;имеет очень специфические правила для ключей;предлагает высокую производительность, используя очень специфические механизмы;и предлагает ограниченную целостность транзакции в очень специфических ситуациях.Эти факторы могут означать, что вам действительно нужно изменить некоторые слои среднего уровня, а также некоторые слои данных, чтобы получить максимальную отдачу от вашего приложения как в вариантах Azure, так и в версиях, отличных от Azure.

Еще одна мысль- Может быть проще предложить своим клиентам версию SaaS с несколькими арендаторами в Azure и версию с одним владельцем, размещенную в Azure, - но это зависит от клиентов!

0 голосов
/ 26 апреля 2011

Я нашел жизнеспособное решение.Я обнаружил, что могу использовать EF Code First с SQL Server или SQL CE, если проектирую свои сущности с той же составной структурой ключей PartitionKey & RowKey, которая требуется для хранилища таблиц Azure.

С небольшой помощью Lokad Cloud (http://code.google.com/p/lokad-cloud/) для выполнения взаимодействия с хранилищем таблиц Azure мне удалось создать общий DataContext, который обеспечивает операции crud с DFContext EF ИЛИ TableStorageProvider в Lokad.

Я даже нашел хороший способ управления отношениями междусущности и лениво загрузите их должным образом.

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

...