Live Framework Resource Model
Поговорим о ресурсах, которые присутствуют в Live Framework. На следующей диаграмме представлено полный список ресурсов, доступных на данный момент:
Live Framework Resource Model описывает различные ресурсы и их взаимосвязи. Модель состоит на простых информационных моделей, основаных на Property, Entity, Collection. Каждый ресурс - это сущность, которая содержит различные свойства, набор сущностей формирует коллекцию. Каждая коллекция и сущность имеют уникальный URL. Связи между ними записываются в виде ссылок. Это позволяет легко перемещаться с одного ресурса на другой.
Основой модели является Data Entry. Data Entry может быть любая единица данных, например фото, документ или пост в блоге. Каждая информационная сущность содержит текстовую информацию, которая описывает данные, и ссылку на бинарную информацию, медиа.
Пример data entry в формате JSON:
{<br /> "AuthorProfileLink" : "email-brian.perry@live.com/Profiles",<br /> "Authors" : [<br /> {<br /> "Name" : "Brian Perry",<br /> "Uri" : "email-brian.perry@live.com/Profiles",<br /> "Email" : "brian.perry@live.com"<br /> }<br /> ],<br /> "BaseUri" : "https://user-ctp.windows.net/V0.1/",<br /> "Categories" : [<br /> {<br /> "Label" : "DataEntry",<br /> "Name" : "DataEntry",<br /> "Scheme" : "http://user.windows.net/Resource"<br /> }<br /> ],<br /> "Id" : "urn:uuid:29c29a60-6bc0-6888-72fc-5719596cf4c6",<br /> "LastUpdatedTime" : "/Date(1225235053000)/",<br /> "PublishDate" : "/Date(1225235053000)/",<br /> "SelfLink" : "Mesh/MeshObjects/4YMLEZWFU7QUFFAJTATIX5DYE4/DataFeeds/V5EGUCYSYL7ULE6IEYZR4P2IOY/Entries/MCNMEKOANOEGQ4X4K4MVS3HUYY",<br /> "Summary" : " ",<br /> "Title" : "Amanda.wma",<br /> "EditMediaLink" : "Mesh/MeshObjects/4YMLEZWFU7QUFFAJTATIX5DYE4/DataFeeds/V5EGUCYSYL7ULE6IEYZR4P2IOY/MediaResources/MCNMEKOANOEGQ4X4K4MVS3HUYY-QLSVIDRQUCZLSAGEUVKWYJIPQA",<br /> "MediaResource" : {<br /> "Hash" : "guVUDjCgsrkAxKVVbCUPgA==",<br /> "Id" : "d73533c0-271b-4879-b5c8-021b94e874e2",<br /> "IsUploaded" : true,<br /> "LastUpdatedTime" : "/Date(1225235053495)/",<br /> "Length" : 4990823,<br /> "MediaType" : "audio/x-ms-wma",<br /> "Name" : "Amanda.wma",<br /> "PublishDate" : "/Date(1225235053495)/"<br /> },<br /> "ParentId" : "urn:uuid:00000000-0000-0000-0000-000000000000",<br /> "Type" : "File"<br />}<br /><br />
Этот же data entry в формате ATOM:
И в формате POX:
<DataEntry><br /> <AuthorProfileLink>email-brian.perry@live.com/Profiles</AuthorProfileLink><br /> <Authors><br /> <Person><br /> <Name>Brian Perry</Name><br /> <Uri>email-brian.perry@live.com/Profiles</Uri><br /> <Email>brian.perry@live.com</Email><br /> </Person><br /> </Authors><br /> <BaseUri>https://user-ctp.windows.net/V0.1/</BaseUri><br /> <Categories><br /> <Category><br /> <Label>DataEntry</Label><br /> <Name>DataEntry</Name><br /> <Scheme>http://user.windows.net/Resource</Scheme><br /> </Category><br /> </Categories><br /> <Id>urn:uuid:29c29a60-6bc0-6888-72fc-5719596cf4c6</Id><br /> <LastUpdatedTime>2008-10-28T23:04:13Z</LastUpdatedTime><br /> <PublishDate>2008-10-28T23:04:13Z</PublishDate><br /> <SelfLink>Mesh/MeshObjects/4YMLEZWFU7QUFFAJTATIX5DYE4/DataFeeds/V5EGUCYSYL7ULE6IEYZR4P2IOY/Entries/MCNMEKOANOEGQ4X4K4MVS3HUYY</SelfLink><br /> <Summary/><br /> <Title>Amanda.wma</Title><br /> <EditMediaLink>Mesh/MeshObjects/4YMLEZWFU7QUFFAJTATIX5DYE4/DataFeeds/V5EGUCYSYL7ULE6IEYZR4P2IOY/MediaResources/MCNMEKOANOEGQ4X4K4MVS3HUYY-QLSVIDRQUCZLSAGEUVKWYJIPQA</EditMediaLink><br /> <MediaResource><br /> <Hash>guVUDjCgsrkAxKVVbCUPgA==</Hash><br /> <Id>d73533c0-271b-4879-b5c8-021b94e874e2</Id><br /> <IsUploaded>true</IsUploaded><br /> <LastUpdatedTime>2008-10-28T23:04:13.4950863Z</LastUpdatedTime><br /> <Length>4990823</Length><br /> <MediaType>audio/x-ms-wma</MediaType><br /> <Name>Amanda.wma</Name><br /> <PublishDate>2008-10-28T23:04:13.4950863Z</PublishDate><br /> </MediaResource><br /> <ParentId>urn:uuid:00000000-0000-0000-0000-000000000000</ParentId><br /> <Type>File</Type><br /> </DataEntry>
Больше об свойствах data entry можно почитать здесь. Медиа, связанные с data entry, описываются с помощью свойства "EditMediaLink" в пространстве Media Resources. Пространства Sync Entries и Media Staging Area содержат информацию, благодаря которой возможна синхронизация между отдельными data entry.
Если рассматривать фото как data entry, то коллекция фото может быть представлена как Data Feed. В большинстве случаев data feed - это коллекция похожих сущностей, но, в принципе, data entries, входящие в data feed могут быть любым.
Пример data feed с одним data entry:
{<br /> "BaseUri" : "https://user-ctp.windows.net/V0.1/",<br /> "Entries" : [<br /> {<br /> "AuthorProfileLink" : "email-brian.perry@live.com/Profiles",<br /> "Authors" : [<br /> {<br /> "Name" : "Brian Perry",<br /> "Uri" : "email-brian.perry@live.com/Profiles",<br /> "Email" : "brian.perry@live.com"<br /> }<br /> ],<br /> "BaseUri" : "https://user-ctp.windows.net/V0.1/",<br /> "Categories" : [<br /> {<br /> "Label" : "DataEntry",<br /> "Name" : "DataEntry",<br /> "Scheme" : "http://user.windows.net/Resource"<br /> }<br /> ],<br /> "Id" : "urn:uuid:29c29a60-6bc0-6888-72fc-5719596cf4c6",<br /> "LastUpdatedTime" : "/Date(1225235053000)/",<br /> "PublishDate" : "/Date(1225235053000)/",<br /> "SelfLink" : "Mesh/MeshObjects/4YMLEZWFU7QUFFAJTATIX5DYE4/DataFeeds/V5EGUCYSYL7ULE6IEYZR4P2IOY/Entries/MCNMEKOANOEGQ4X4K4MVS3HUYY",<br /> "Summary" : " ",<br /> "Title" : "Amanda.wma",<br /> "EditMediaLink" : "Mesh/MeshObjects/4YMLEZWFU7QUFFAJTATIX5DYE4/DataFeeds/V5EGUCYSYL7ULE6IEYZR4P2IOY/MediaResources/MCNMEKOANOEGQ4X4K4MVS3HUYY-QLSVIDRQUCZLSAGEUVKWYJIPQA",<br /> "MediaResource" : {<br /> "Hash" : "guVUDjCgsrkAxKVVbCUPgA==",<br /> "Id" : "d73533c0-271b-4879-b5c8-021b94e874e2",<br /> "IsUploaded" : true,<br /> "LastUpdatedTime" : "/Date(1225235053495)/",<br /> "Length" : 4990823,<br /> "MediaType" : "audio/x-ms-wma",<br /> "Name" : "Amanda.wma",<br /> "PublishDate" : "/Date(1225235053495)/"<br /> },<br /> "ParentId" : "urn:uuid:00000000-0000-0000-0000-000000000000",<br /> "Type" : "File"<br /> }<br /> ],<br /> "Links" : [<br /> {<br /> "RelationshipType" : "LiveFX/MediaResources",<br /> "Title" : "LiveFX/MediaResources",<br /> "Uri" : "Mesh/MeshObjects/4YMLEZWFU7QUFFAJTATIX5DYE4/DataFeeds/V5EGUCYSYL7ULE6IEYZR4P2IOY/MediaResources"<br /> }<br /> ],<br /> "SelfLink" : "Mesh/MeshObjects/4YMLEZWFU7QUFFAJTATIX5DYE4/DataFeeds/V5EGUCYSYL7ULE6IEYZR4P2IOY/Entries",<br /> "SubscriptionLink" : "Mesh/MeshObjects/4YMLEZWFU7QUFFAJTATIX5DYE4/DataFeeds/V5EGUCYSYL7ULE6IEYZR4P2IOY/Entries/Subscriptions",<br /> "Title" : "DataEntries"<br />}
Более подробно о data feeds можно почитать здесь.
Аналогично, коллекция data feeds может быть представлена в виде контейнера, который называется Mesh Object (почитать можно здесь).
Mash object может также содержать следующие коллекции:
1. Связи (Mappings) – каждый mesh object может быть синхронизирован с нескольними устройствами пользовательського меша. Информация об устройствах, на которых конкретный меш синхронизирован, доступен через mappings feed, где каждая сущность предоставляет информацию о каждом устройстве, где находится этот mesh object. Больше читаем здесь.
Пример mappings feed в JSON формате:
{<br /> "BaseUri" : "https://user-ctp.windows.net/V0.1/",<br /> "Entries" : [<br /> {<br /> "AuthorProfileLink" : "email-brian.perry@live.com/Profiles",<br /> "Authors" : [<br /> {<br /> "Name" : "Brian Perry",<br /> "Uri" : "email-brian.perry@live.com/Profiles",<br /> "Email" : "brian.perry@live.com"<br /> }<br /> ],<br /> "BaseUri" : "https://user-ctp.windows.net/V0.1/",<br /> "Categories" : [<br /> {<br /> "Label" : "Mapping",<br /> "Name" : "Mapping",<br /> "Scheme" : "http://user.windows.net/Resource"<br /> }<br /> ],<br /> "Id" : "urn:uuid:00000000-0000-0000-0000-000000000000",<br /> "LastUpdatedTime" : "/Date(1228413012000)/",<br /> "PublishDate" : "/Date(1228413012000)/",<br /> "SelfLink" : "Mesh/MeshObjects/WA6OMIZL7IGEFNJCCBFQG47V3U/Mappings/AAAAAAAAAAAAAAAAAAAAAAAAAA",<br /> "Title" : "",<br /> "GhostingPolicy" : 0,<br /> "MappingType" : 1,<br /> "MeshObjectLink" : "Mesh/MeshObjects/WA6OMIZL7IGEFNJCCBFQG47V3U"<br /> }<br /> ],<br /> "SelfLink" : "Mesh/MeshObjects/WA6OMIZL7IGEFNJCCBFQG47V3U/Mappings",<br /> "SubscriptionLink" : "Mesh/MeshObjects/WA6OMIZL7IGEFNJCCBFQG47V3U/Mappings/Subscriptions",<br /> "Title" : "Mappings"<br />}
2. Пользователи (Members) – каждый mesh-объект может быть разшарен с разными возможностями для отдельных категорий пользователей. Например, одному пользователю можно дать доступ на редактирование, удаление своих фото, другим - возможность лишь чтения. Каждый entry в members feed предоставляет информацию о каждом пользователе, имеющим доступ до конкретного меш-объекта и тип доступа (RO, RW). Больше можно почитать здесь. JSON-вариант Members feed с одним entry имеет следующий вид:
{<br /> "BaseUri" : "https://user-ctp.windows.net/V0.1/",<br /> "Entries" : [<br /> {<br /> "AuthorProfileLink" : "email-brian.perry@live.com/Profiles",<br /> "Authors" : [<br /> {<br /> "Name" : "Brian Perry",<br /> "Uri" : "email-brian.perry@live.com/Profiles",<br /> "Email" : "brian.perry@live.com"<br /> }<br /> ],<br /> "BaseUri" : "https://user-ctp.windows.net/V0.1/",<br /> "Categories" : [<br /> {<br /> "Label" : "Member",<br /> "Name" : "Member",<br /> "Scheme" : "http://user.windows.net/Resource"<br /> }<br /> ],<br /> "Id" : "urn:uuid:00eb8df1-16ff-4c95-93a7-9ea3199b05b1",<br /> "LastUpdatedTime" : "/Date(1227561909000)/",<br /> "PublishDate" : "/Date(1227561909000)/",<br /> "SelfLink" : "Mesh/MeshObjects/U5CVWTZDBTRE7GKU623MLYZCOA/Members/6GG6WAH7C2KUZE5HT2RRTGYFWE",<br /> "Title" : "Brian Perry",<br /> "Email" : "brian.perry@live.com",<br /> "IsOwner" : true,<br /> "ProfilesLink" : "cid--4392929366419723837/Profiles",<br /> "Role" : 1<br /> }<br /> ],<br /> "SelfLink" : "Mesh/MeshObjects/U5CVWTZDBTRE7GKU623MLYZCOA/Members",<br /> "SubscriptionLink" : "Mesh/MeshObjects/U5CVWTZDBTRE7GKU623MLYZCOA/Members/Subscriptions",<br /> "Title" : "Members"<br />}
3. Новости (News) – любое событие, будь то добавление data entry, пользователя или изменение какой-либо информации автоматически генерируется событие, т.е. новость. Каждая такая новость формирует сущность в новостном фиде для конкретного меш-объекта. Больше можно почитать здесь. JSON-вариант новостного фида с одним entry имеет следующий вид:
{<br /> "BaseUri" : "https://user-ctp.windows.net/V0.1/",<br /> "Entries" : [<br /> {<br /> "AuthorProfileLink" : "email-brian.perry@live.com/Profiles",<br /> "Authors" : [<br /> {<br /> "Name" : "Brian Perry",<br /> "Uri" : "email-brian.perry@live.com/Profiles",<br /> "Email" : "brian.perry@live.com"<br /> }<br /> ],<br /> "BaseUri" : "https://user-ctp.windows.net/V0.1/",<br /> "Categories" : [<br /> {<br /> "Label" : "NewsItem",<br /> "Name" : "NewsItem",<br /> "Scheme" : "http://user.windows.net/Resource"<br /> }<br /> ],<br /> "Id" : "urn:uuid:96777b22-65d2-0782-e4ec-2f85d7831f26",<br /> "LastUpdatedTime" : "/Date(1225297814000)/",<br /> "PublishDate" : "/Date(1225297814000)/",<br /> "SelfLink" : "Mesh/MeshObjects/S35IOSATGIMU3L5K2Y5HBLSW3M/News/ULXR63FDIIHU3LNMZZNYGW6RRI-EJ5XPFWSMWBAPZHMF6C5PAY7EY",<br /> "Title" : "LiveMesh.MemberAdd",<br /> "CoalesceCount" : 1,<br /> "Contexts" : [<br /> {<br /> "Kind" : "Scope",<br /> "Relationship" : "LiveFX/MeshObject",<br /> "TargetLink" : "Mesh/MeshObjects/S35IOSATGIMU3L5K2Y5HBLSW3M",<br /> "Text" : "Documents",<br /> "Type" : "LiveFX/MeshObject"<br /> }<br /> ]<br /> }<br /> ],<br /> "SelfLink" : "Mesh/MeshObjects/S35IOSATGIMU3L5K2Y5HBLSW3M/News",<br /> "SubscriptionLink" : "Mesh/MeshObjects/S35IOSATGIMU3L5K2Y5HBLSW3M/News/Subscriptions",<br /> "Title" : "NewsFeed"<br />}<br /><br />
Кроме "локальных" новостей для конкретного меш-объекта, есть новостной фид, который объединяет новости всех меш-объектов, а также новости, связанные с пользователем.
4. Подписка (Subscription) – пользователи имеют возможность подписаться на уведомления об изменении меш-объектов.
5. Устройства (Devices) – информация об устройсвах и информацией об их синхронизации доступна через devices feed, где каждая сущность фида предосталяет информацию об конкретном устройстве. Больше информации можно найти здесь. JSON-вариант Devices фида имеет следующий вид:
{<br /> "BaseUri" : "https://user-ctp.windows.net/V0.1/",<br /> "Entries" : [<br /> {<br /> "BaseUri" : "https://user-ctp.windows.net/V0.1/",<br /> "Categories" : [<br /> {<br /> "Label" : "Device",<br /> "Name" : "Device",<br /> "Scheme" : "http://user.windows.net/Resource"<br /> }<br /> ],<br /> "Id" : "d61585ef-1d67-4d48-9b44-e0047ab93adf",<br /> "LastUpdatedTime" : "/Date(1226685229000)/",<br /> "PublishDate" : "/Date(1226685229000)/",<br /> "SelfLink" : "Mesh/Devices/7O5BXLSH2O7UDDAM7VG5SNBJSM-56CRLVTHDVEE3G2E4ACHVOJ234",<br /> "Title" : "MESHDEMO1",<br /> "SubscriptionLink" : "Mesh/Devices/7O5BXLSH2O7UDDAM7VG5SNBJSM-56CRLVTHDVEE3G2E4ACHVOJ234/Subscriptions",<br /> "Type" : "Computer"<br /> }<br /> ],<br /> "SelfLink" : "Mesh/Devices",<br /> "SubscriptionLink" : "Mesh/Devices/Subscriptions",<br /> "Title" : "Devices"<br />}
К мешу и всем дочерним ресурсам можно получить доступ через "облачный" сервис с адресом https://user.window-ctp.net или локальный с адресом http://localhost:2048. Кроме меша, вы можете получить доступ к Windows Live Profiles и Windows Live Contacts. Они представлены как Profile и Contact ресурсы. Больше о Contacts ресурсе можно найти здесь. JSON-вариант контактов:
{<br /> "BaseUri" : "https://user-ctp.windows.net/V0.1/",<br /> "Categories" : [<br /> {<br /> "Label" : "Contact",<br /> "Name" : "Contact",<br /> "Scheme" : "http://user.windows.net/Resource"<br /> }<br /> ],<br /> "Id" : "8129b749-ebe2-4257-854e-bd2c4eb0094c",<br /> "LastUpdatedTime" : "/Date(1225296671853)/",<br /> "SelfLink" : "cid--4392929366419723837/Contacts/8129b749-ebe2-4257-854e-bd2c4eb0094c",<br /> "Title" : "Brian Perry",<br /> "Birthday" : "/Date(-62135568000000)/",<br /> "Cid" : -1415099226309944575,<br /> "ContactId" : "8129b749-ebe2-4257-854e-bd2c4eb0094c",<br /> "DisplayName" : "Brian Perry",<br /> "Emails" : [<br /> {<br /> "Primary" : true,<br /> "Type" : 1,<br /> "Value" : "brian.perry@live.com"<br /> }<br /> ],<br /> "FamilyName" : "Perry",<br /> "FormattedName" : "Brian Perry",<br /> "GivenName" : "Brian",<br /> "NickName" : "Brian",<br /> "PreferredUserName" : "brianperry",<br /> "Profession" : "Photographer",<br /> "ProfilesLink" : "cid--1415099226309944575/Profiles",<br /> "WindowsLiveId" : "brian.perry@live.com"<br />}
Каждый пользователь имеет доступ к 5 профайлам - About You, Contact, Work, General и Interests. Почитать об этом больше можно здесь. JSON-вариант "About You" профайла:
{<br /> "BaseUri" : "https://user-ctp.windows.net/V0.1/",<br /> "Categories" : [<br /> {<br /> "Label" : "Profile",<br /> "Name" : "Profile",<br /> "Scheme" : "http://user.windows.net/Resource"<br /> },<br /> {<br /> "Label" : "AboutYouProfile",<br /> "Name" : "Profile",<br /> "Scheme" : "http://user.windows.net/Resource"<br /> }<br /> ],<br /> "Id" : "480u7Y0U",<br /> "SelfLink" : "cid--4392929366419723837/Profiles/480u7Y0U",<br /> "Title" : "AboutYouProfile",<br /> "ProfileBase" : {<br /> "__type" : "AboutYouProfile:http://user.windows.net",<br /> "Age" : 31,<br /> "Gender" : 2,<br /> "Interests" : "Coding\u000aReading books\u000aHiking\u000aXBOX!",<br /> "Location" : "Redmond, WA",<br /> "MoreAboutMe" : "I like to write code!",<br /> "Occupation" : "Engineer"<br /> },<br /> "ProfileType" : 2<br />}
Дополнительные ссылки:
Компании из статьи
Microsoft Украина | Украинское подразделение компании Microsoft. |