архитектура soa google-агрегирование контента для веб-интерфейса пользователя google
при входе в Google Домашняя страница Google ссылается на несколько других сервисов (например, Gmail, Play, Drive).
Q1) есть ли шаблон SOA, который описывает способ, которым они свободно соединяют UIs для каждой службы, но в то же время также предоставляют стандартную строку меню, стандартный внешний вид и единый вход в свои приложения?
К2) есть ли документация, которая описывает архитектуру для подключения интерфейса довольна?
редактировать
Я посмотрел с Firebug, и кажется, что существует двусторонняя связь между меню и приложением. Меню имеет ссылку на каждое приложение, но каждое приложение также имеет панель меню включены.
Я могу связать это с затмение UI, где приложение может внести свой вклад в меню приложения, но каждое меню живет в контексте приложения eclipse, которое агрегирует все отдельные плагины пользовательского интерфейса.
Итак, как google делает это в своем пользовательском интерфейсе? Похоже, что происходит какое-то волшебство javascript, при этом строка меню вводится в каждое приложение.
3 ответов
Я не могу сказать о Google, но я работал на сайты, которые делают подобные вещи. В одном примере это был веб-сайт для крупного агентства недвижимости, которое имеет офисы по всему миру, Домашняя страница (и другие страницы) включает карусель, которая отображает контент, специфичный для страны, все офисы использовали разные экземпляры одной и той же CMS для управления своим собственным контентом.
происходит то, что CMS (.Сети) использованы пользовательские и пользовательские элементы управления (.ascx) файлы для рендеринга финала страница ASPX. Эти ascx-файлы (для верхнего, нижнего колонтитула и карусели), все стили и javascript, связанные с этими файлами (поместите в папку, которая не может быть обработана под названием _CSS и _JS в соответствии с нашим соглашением), поддерживаются централизованно, а затем реплицируются на все локальные веб-сайты.
экземпляр CMS-специфичный для одного странового офиса - затем создаст свои собственные страницы, но все они используют эти общие верхние и нижние колонтитулы, предоставляемые центральным приложением.
последняя часть картина должна держать все это в синхронизации, вам нужен какой-то агент или служба для распространения этих общих компонентов на все серверы и экземпляры CMS, чтобы убедиться, что все они используют одни и те же элементы управления, стили и javascript (стили и javascript могут ссылаться централизованно, но пользовательский элемент управления должен жить в домене приложения конкретной CMS по крайней мере для .NET). Мы использовали Repliweb для таких задач, но я не очень хорошо знаком с его деталями.
от архитектурная точка зрения, я вижу это как своего рода архитектуру плагина для пользовательского интерфейса, поэтому вы правы, чтобы связать его с архитектурой Eclipse. Центральная CMS-это абстрактный тип, предоставляющий интерфейс, к которому должны придерживаться и реализовывать конкретные экземпляры сайта.
abstract class GoogleSite
{
Control Header { get; set; }
Control Footer { get; set; }
public string Title { get { return "Default title"; } }
public abstract void ProvideContents();
}
class Gmail: GoogleSite
{
//still using same header and footer but Title is different
override public string Title { get { return "Gmail"; } }
public override void ProvideContents()
{
}
}
class GPlus: CentralCMS
{
//Another CMS not overriding the title but Providing different contents
public override void ProvideContents()
{
}
}
Google использует собственную Библиотеки Закрытия по части пользовательского интерфейса:
что такое библиотека закрытия?
библиотека закрытия обширное, хорошо испытанное, модульное, и кросс-браузерная JavaScript библиотека. Ты можешь получить то, что тебе нужно. большой набор многоразовых виджетов и элементов управления пользовательского интерфейса, а также из нижнего уровня утилиты для манипулирования DOM, связи с сервером, анимации, данных структуры, модульное тестирование, редактирование rich-text и больше.
[...]
кто использует библиотеку закрытия?
Поиск, Gmail, Карты, Документы, Сайты, Книги, Читатель, Блоггер, Календарь, Google+, Фото
hawt.проект io имеет интересный подход:
hawtio очень модульный, так что он может точно определить, какие службы находятся внутри JVM и динамически обновлять консоль, чтобы предоставить им интерфейс.
ссылка здесь