Новый сайт группы SharePoint. Как это работает

Новый сайт группы, который был выпущен для SharePoint Online, становится доступен в SharePoint 2019 Server.

Доступность нового типа сайта в on-premise SharePoint делает возможным изучить его и разобраться как он работает и чем по сути является.

Я просмотрел новый сборки и файлы (конфигурация, XML-определения и т.д.). Теперь я могу рассказать и показать что под капотом.

Сайт группы

Новый сайт группы - это новая конфигурация существующего шаблона сайта SharePoint - STS. Идентификатор нового сайта - STS#3. Давайте пройдемся по списку сайтов на основе шаблона STS:

STS#0 - Классический сайт группы.

STS#1 - Пустой сайт. Стал скрытым начиная с выходом SharePoint 2016.

STS#2 - Рабочая область документа. Устаревший шаблон сайта, выпущенный вместе с MOSS 2007 для совместной работы над документами. Скрытый и устаревший шаблон. Никогда его не используйте.

STS#3 - Новый сайт группы, которому посвящен этот пост.

Новый шаблон сайта группы может быть использован только для создания корневого сайта коллекции сайтов, по крайне мере через веб-интерфейс. Вы можете всегда использовать PowerShell для создания дочернего сайта на основе нового шаблона (STS#3):

New-SPWeb -Url https://sharepoint/subsite -Template STS#3 -Name "Новый сайт группы"

Отличия нового шаблона от старого

В чем разница между классическим сайтом группы и новым?

В таблице ниже содержится информация о возможностях, которые используются этим шаблонами сайтов:

ОбластьВозможностьКлассический сайт группыНовый сайт группы
SiteBasic Web Parts
SiteТрехэтапный рабочий процесс
WebDocument Library instance
WebСписки для совместной работы группы пользователей
WebSite Notebook
WebDocument Library instance
WebMobility Shortcut URL
WebДомашняя вики-страница
WebПриступая к работе
WebСтратегия минимального скачивания
WebGroupify Button
SiteSite Page Resources
SiteВеб-приложение Access
SiteRatings
WebDefault SPGroups SiteMaster
WebDefault SPGroups Async
WebMUIWeb
WebСтраницы сайта
WebGroup Homepage

Как видно разница велика. Даже классический сайт группы был изменен и отличается от сайта групп в SharePoint 2016. Стратегия минимальной загрузки (MDS) больше не используется.

Мы будем скучать по этому сообщению.

Страницы сайта

Новый сайт группы использует новые страницы, которые описываются специальным типом содержимого (ContenTypeID - 0x0101009D1CB255DA76424F860D91F20E6C4118):

Свойства Создание содержимого холста и Содержимое макета страницы используются для хранения содержимого страницы. Вот такая страница:

хранится таком виде:

<div>
    <div data-sp-canvascontrol="" data-sp-canvasdataversion="1.0" data-sp-controldata="">
        <div data-sp-rte="">
            <p>SharePoint 2019 Preview</p>
        </div>
    </div>
    <div data-sp-canvascontrol="" data-sp-canvasdataversion="1.0" data-sp-controldata="">
        <div data-sp-webpart="" data-sp-webpartdataversion="1.2" data-sp-webpartdata="">
            <div data-sp-componentid="">{GUID}</div>
            <div data-sp-htmlproperties="">
                <div data-sp-prop-name="title" data-sp-searchableplaintext="true"></div>
                <div data-sp-prop-name="persons[0].name" data-sp-searchableplaintext="true">Vitaly Zhukov</div>
                <div data-sp-prop-name="persons[0].email" data-sp-searchableplaintext="true"></div>
                <img data-sp-prop-name="persons[0].imageUrl" src="/_layouts/15/userphoto.aspx?size=L&amp;amp;accountname=dev%5cvitaly"
                />
            </div>
        </div>
    </div>
    <div data-sp-canvascontrol="" data-sp-canvasdataversion="1.0" data-sp-controldata=""></div>
</div>
HTML

Атрибут data-sp-controldata содержит JSON-данные для отображения содержимого:

{
    "id": "cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",
    "instanceId": "cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",
    "title": "Title Region",
    "description": "Title Region Description",
    "serverProcessedContent": {
        "htmlStrings": {},
        "searchablePlainTexts": {},
        "imageSources": {},
        "links": {}
    },
    "dataVersion": "1.4",
    "properties": {
        "title": "page",
        "textAlignCenter": false,
        "imageSourceType": 4,
        "layoutType": "FullWidthImage",
        "textAlignment": "Left",
        "showKicker": false,
        "showPublishDate": false,
        "kicker": ""
    }
}
JSON

Атрибут data-sp-webpartdata содержит свойства веб-части в формате JSON:

{
    "id": "7f718435-ee4d-431c-bdbf-9c4ff326f46e",
    "instanceId": "075b6015-60a7-4a7b-bfbc-61dedcec4607",
    "title": "People",
    "description": "Display selected people and their profiles",
    "serverProcessedContent": {
        "htmlStrings": {},
        "searchablePlainTexts": {
            "title": "",
            "persons[0].name": "Vitaly Zhukov",
            "persons[0].email": ""
        },
        "imageSources": {
            "persons[0].imageUrl": "/_layouts/15/userphoto.aspx?size=L&amp;accountname=dev\\vitaly"
        },
        "links": {}
    },
    "dataVersion": "1.2",
    "properties": {
        "layout": 2,
        "persons": [
            {
                "id": "i:0#.w|dev\\vitaly",
                "upn": "DEV\\vitaly",
                "role": "",
                "department": "",
                "phone": "",
                "sip": ""
            }
        ]
    }
}
JSON

Document Library instance

Эта фича просто размещает ссылку на библиотеку общих документов на панели быстрого запуска.

Default SPGroups

Возможности Default SPGroups* создаются группы безопасности и ассоциируют их с сайтом.

Домашняя страница группы

Домашняя страница группы создает домашнюю страницу на основе файла home.aspx, который содержится в фиче. Содержимое этого файла:

<%@ Assembly Name="Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"%>
<%@ Page Language="C#" Inherits="Microsoft.SharePoint.WebControls.ClientSidePage" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<!--no-store-props-->

Пустой файл. Сама страница унаследована от класса Microsoft.SharePoint.WebControls.ClientSidePage:

Это новый класс для SharePoint. И он абсолютно пуст:

public class ClientSidePage : ClientSidePageBase
{
}
C#

Выводы

Новый сайт группы для SharePoint является частью new experience (ранее modern UI). Не осталось ни единого функционала, работающего "по-старому":

Вики-страницы. SharePoint не лучшая платформа для создания вики. Просто создавать страницы и ссылки между ними можно и без вики.

Отдельное представление для мольных устройств. Современные веб-приложения используют адаптивную верстку. Отдельное представление для мобильных устройств просто не за чем.

Стратегия минимальной загрузки. Весь динамически формируемый контент отрисовывается на клиентской стороне.

Приступая к работе. Старый вводный курс по работе с порталом, которым не пользовался никто. Бесполезная фича.

Новый сайт группы - хороший шаг вперед. И нет никакой поддержки старого функционала для обеспечения обратной совместимости.

Виталий Жуков

Виталий Жуков

Техлид, Архитектор, Разработчик, Microsoft MVP. Более 20 лет опыта в области системной интеграции и разработки программного обеспечения. Специализируюсь на проектировании и внедрении масштабируемых высокопроизводительных программных решений в различных отраслях.

Смотрите также