Лучший дизайн приложения для Software As Service - PullRequest
1 голос
/ 26 января 2011

Использование ASP.NET MVC3 C # И MS SQL 2008

Я занимаюсь разработкой сайта Software As Service. Это приложение Car Inventory для автосалонов. У меня есть несколько идей об архитектуре сайта, но я хотел бы получить второе мнение.

Каждый дилер будет ограничен макетом, но может загрузить логотип и выбрать цветную тему.

Сначала я думал о создании отдельных сайтов для каждого дилера, но модернизация была бы кошмаром.

Так что я думаю, один главный сайт, который динамически изменяется в зависимости от имени хоста. то есть. Поэтому, если miamicars.carinventory.com будет введено, они увидят свою цветовую схему и логотип.

У меня была бы одна основная база данных для пользователей и настроек компании, но отдельная база данных для каждого сайта с большей частью данных (инвентарь автомобиля и т. Д.). Таким образом, я могу создавать резервные копии и обрабатывать данные каждого сайта в отдельности, но основной код приложения будет в одном месте.

Кроме того, каждая компания будет иметь каталог для хранения своих отдельных изображений.

Любые отзывы приветствуются.

Спасибо

Ответы [ 3 ]

2 голосов
/ 26 января 2011

Учитывая, что это несколько компаний, я бы рекомендовал рассмотреть мультитенантных проектов . Я знаю, что это выглядит сложнее, но это помогает вам правильно наращивать приложение по мере роста. Вот еще одна запись в блоге, которая довольно интересна о ASP.NET MVC . Вот еще один интересный в MSDN .

В общем, было бы лучше, если бы вы думали о мультитенантности, чтобы начать и развивать ее на основе этого. В частности, если вы используете Azure, возможно, это единственный способ сделать его масштабируемым.

НТН

1 голос
/ 26 января 2011

Что касается базы данных, задумывались ли вы об использовании базы данных NoSql?

В настоящее время я пишу очень большое веб-приложение с большим и большим количеством данных (TB) и использую MongoDb.

Вот несколько вариантов:

  • MongoDb - Очень легко настроить и использовать. Супер легко масштабируется и может сделать несколько очень сложных запросов. имеет драйверы для множества языков в том числе .Net.
  • Кассандра - используется facebook. Можно бесконечно масштабировать. Не так богат запроса, установленного как Монго, и я слышал сложнее настроить, но нет опыт с этим.
  • HBase - Построен на вершине Hadoop. Используется Yahoo, открытый исходник через Apache. Еще немного сложный

Что касается других вещей, то я использую ASP.NET MVC. Очень прост в развертывании и быстрое написание кода.

1 голос
/ 26 января 2011

С моей точки зрения, с точки зрения базы данных, у вас есть эти опции. С другой стороны, я никогда не писал мультитенантное приложение и поверхность gremlins во время реализации.

1. Иметь единую базу данных (кластер) для всех арендаторов.

Настройка единой базы данных с кластеризацией главной / реплики в будущем. Все арендаторы разделяют сайт, разделение данных происходит в самих данных.

  • Упростите управление физическим аспектом вашего приложения.

  • Упростить кодирование.

  • затруднить масштабируемость.

  • Мешают (немного).

2. Иметь базу данных на каждого арендатора.

Каждый арендатор получает базу данных, возможно, на другом сервере базы данных.

  • Гораздо сложнее создавать новые сайты.

  • Проще масштабировать, поскольку данные будут естественным образом разделены. Арендатору A обычно не требуется доступ к данным от арендатора B. Если только вы не пытаетесь написать какие-то сводные отчеты, в этом случае вы можете написать некрасивый шардирующий код.

  • Хорошая масштабируемость. Если арендатор может потреблять достаточно ресурсов, вы можете предоставить ему выделенное оборудование довольно высокого класса.

Что касается веб-серверов, я бы рассмотрел использование пользовательского SessionProvider с memcached или аналогичным и использование самих серверов исключительно в качестве процессоров, которые не сохраняют состояние.

...