FeedSync
FeedSync for Atom и RSS , ранее называвшиеся Simple Sharing Extensions , представляют собой расширения форматов каналов RSS и Atom , предназначенные для обеспечения двунаправленной синхронизации информации с использованием различных источников данных. Первоначально разработанный Рэем Оззи , главным архитектором программного обеспечения в Microsoft , в настоящее время его поддерживают Джек Оззи , Джордж Моромисато , Мэтт Августин , Пареш Сутар и Стивен Лис . Дэйв Винер , разработчик вариантов спецификации UserLand Software RSS, внес свой вклад в разработку спецификаций.
Последняя версия спецификации FeedSync для Atom и RSS — 1.02. [1] FeedSync для Atom и RSS лицензируется в соответствии с лицензией Creative Commons Attribution-ShareAlike (версия 2.5) и обещанием открытой спецификации Microsoft .
Целью FeedSync для Atom и RSS является определение минимальных расширений, необходимых для того, чтобы свободно взаимодействующие приложения могли использовать каналы Atom и RSS в качестве основы для совместного использования элементов, то есть двунаправленную асинхронную синхронизацию новых и измененных элементов между двумя или более каналов с перекрестной подпиской.
Обратите внимание: хотя большая часть FeedSync в настоящее время определяется с точки зрения Atom и RSS-каналов, по своей сути FeedSync строго требует:
- Плоская коллекция элементов для синхронизации.
- Набор метаданных синхронизации для каждого элемента, который поддерживается на всех конечных точках.
- Набор алгоритмов, которым следуют все конечные точки для создания, обновления, объединения и разрешения конфликтов всех элементов.
Это означает, что FeedSync может быть реализован практически на любом языке программирования, метаданные которого представлены во многих форматах структурированных данных.
Примеры
[ редактировать ]RSS-канал
[ редактировать ]<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:sx="http://feedsync.org/2007/feedsync">
<channel>
<title>To Do List</title>
<description>A list of items to do</description>
<link> https://www.example.com/something/foo/bar/ </link>
<sx:sharing since="2005-02-13T18:30:02Z"
until="2005-05-23T18:30:02Z" >
<sx:related link="[http://example.com/all.xml]{{dead link|date=December 2016 |bot=InternetArchiveBot |fix-attempted=yes }}" type="complete" />
<sx:related link="[http://example.com/B.xml]{{dead link|date=December 2016 |bot=InternetArchiveBot |fix-attempted=yes }}" type="aggregated"
title="To Do List (Jacks Copy)" />
</sx:sharing>
<item>
<title>Buy groceries</title>
<description>Get milk, eggs, butter and bread</description>
<sx:sync id="item_1_myapp_2005-05-21T11:43:33Z" updates="3">
<sx:history sequence="3" when="2005-05-21T11:43:33Z" by="JEO2000"/>
<sx:history sequence="2" when="2005-05-21T10:43:33Z" by="REO1750"/>
<sx:history sequence="1" when="2005-05-21T09:43:33Z" by="REO1750"/>
</sx:sync>
</item>
</channel>
</rss>
Атомная подача
[ редактировать ]<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"
xmlns:sx="http://feedsync.org/2007/feedsync">
<title>To Do List</title>
<subtitle>A list of items to do</subtitle>
<link rel="self" href="http://example.com/partial.xml"/{{dead link|date=December 2016 |bot=InternetArchiveBot |fix-attempted=yes }}>
<author>
<name>Ray Ozzie</name>
</author>
<updated>2005-05-21T11:43:33Z</updated>
<id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0aaa</id>
<sx:sharing since="2005-02-13T18:30:02Z"
until="2005-05-23T18:30:02Z" >
<sx:related link="[http://example.com/all.xml]{{dead link|date=December 2016 |bot=InternetArchiveBot |fix-attempted=yes }}" type="complete" />
<sx:related link="[http://example.com/B.xml]{{dead link|date=December 2016 |bot=InternetArchiveBot |fix-attempted=yes }}" type="aggregated"
title="To Do List (Jacks Copy)" />
</sx:sharing>
<entry>
<title>Buy groceries</title>
<content>Get milk, eggs, butter and bread</content>
<id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0aa0</id>
<author>
<name>Ray Ozzie</name>
</author>
<updated>2005-05-21T11:43:33Z</updated>
<sx:sync id="item_1_myapp_2005-05-21T11:43:33Z" updates="3">
<sx:history sequence="3" when="2005-05-21T11:43:33Z" by="JEO2000"/>
<sx:history sequence="2" when="2005-05-21T10:43:33Z" by="REO1750"/>
<sx:history sequence="1" when="2005-05-21T09:43:33Z" by="REO1750"/>
</sx:sync>
</entry>
</feed>
Почтовый ящик
[ редактировать ]<?xml version="1.0" encoding="utf-8"?>
<item>
<subject>Buy groceries</subject>
<body>Get milk and eggs</body>
<sx:sync id="item_1_myapp_2005-05-21T11:43:33Z" updates="1">
<sx:history sequence="1" when="2005-05-21T09:43:33Z" by="REO1750"/>
</sx:sync>
</item>
элемент JSON
[ редактировать ]{
"title" : "Buy groceries",
"description": "Get milk and eggs",
"sync":
{
"id": "item_1_myapp_2005-05-21T11:43:33Z",
"updates": "1",
"history": [
{
"sequence": "1",
"when": "2005-05-21T09:43:33Z",
"by": "REO1750"
}
]
}
}
Примеры использования в реальном мире
[ редактировать ]Существует несколько примеров «реального» использования каналов FeedSync для синхронизации данных между приложениями.
Служба FeedSync
[ редактировать ]Эта служба разработки прототипов представляет собой реализацию конечной точки FeedSync на основе HTTP. Приложения могут использовать команды HTTP GET и POST для синхронизации каналов, при этом последний выполняет операцию слияния FeedSync с каналом, размещенным службой FeedSync. Услуга больше не активна.
Сильный ангел III
[ редактировать ]Ленты FeedSync широко использовались на учениях Strong Angel III в августе 2006 года в качестве легкого промежуточного программного обеспечения для связи приложений Microsoft , Google , ESRI и других компаний на настольных компьютерах и мобильных устройствах. Услуга больше не активна.
РИМ проект
[ редактировать ]Комплексный проект Java RSS, ROME , представляет собой реализацию спецификации FeedSync, поскольку он создает уровень Java , позволяющий разработчикам создавать приложения, которые будут использовать службу FeedSync.
Меш4x
[ редактировать ]Mesh4x , набор библиотек, инструментов, приложений и сервисов с открытым исходным кодом для ячеистых приложений, использует FeedSync в качестве стандарта управления версиями и реализует основанный на Feedsync пакетный протокол для синхронизации данных через текстовые SMS-сообщения.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Спецификация FeedSync для Atom и RSS (v1.0)» . 3 января 2011 г. Архивировано из оригинала 24 декабря 2017 г.
Внешние ссылки
[ редактировать ]Технические характеристики
[ редактировать ]- FeedSync для Atom и RSS на Wayback Machine (архивировано 24 декабря 2017 г.)
- FeedSync для коллекций на Wayback Machine (архивировано 24 декабря 2017 г.)
- Спецификация RSS 2.0 от Дэйва Винера
- Спецификация Atom. Архивировано 25 декабря 2010 г. на Wayback Machine.
Код
[ редактировать ]- Архив Codeplex FeedSync с загрузкой исходного кода на Wayback Machine (архивирован 29 июня 2021 г.)
- Примеры службы FeedSync
- SSE для проекта .NET Codeplex