Live Framework Resource Model

суббота, 13 декабря 2008, Александр Краковецкий

Поговорим о ресурсах, которые присутствуют в Live Framework. На следующей диаграмме представлено полный список ресурсов, доступных на данный момент:

image

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:


 urn:uuid:29c29a60-6bc0-6888-72fc-5719596cf4c6
 Amanda.wma
 


 2008-10-28T23:04:13Z
 2008-10-28T23:04:13Z
 
 Brian Perry
 email-brian.perry@live.com/Profiles
 brian.perry@live.com
 

 
 
 
 
 
 
 
 
 
 guVUDjCgsrkAxKVVbCUPgA==
 d73533c0-271b-4879-b5c8-021b94e874e2
 true
 2008-10-28T23:04:13.4950863Z
 4990823
 audio/x-ms-wma
 Amanda.wma
 2008-10-28T23:04:13.4950863Z
 

 urn:uuid:00000000-0000-0000-0000-000000000000
 

 

И в формате 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 Украина


Сайт:
http://www.microsoft.com/ukr/ua/

Microsoft Украина Украинское подразделение компании Microsoft.

Ищите нас в интернетах!

Комментарии

Свежие вакансии