Блог Сергея Байдачного

Мой блог о технологиях

Archive for Февраль 2010

Отладка Silverlight в Visual Studio

5 комментариев

Использование Visual Studio начало притуплять мою сообразительность. Как ни странно, но настройки по умолчанию обычно полностью подходят для реализации задуманного. Правда, когда начиинаешь писать что-то сложное, то тут же натыкаешься на грабли. К примеру, последнее приложение, которое я разрабатывал, представляло собой шаблон для SharePoint 2010, который включал компоненты и на SilverLight. И вот мне понадобилось отладить Silverlight-приложение в контексте SharePoint. И это в то время, когда редактор был настроен на отладку кода под SharePoint, но никак не Silverlight. Немного потупил, а потом решил написать следующий пост:)

Итак,

Visual Studio 2010 позволяет отлаживать Silverlight-приложения подобно другим типам приложений. Если Вы планируете приступить к отладке Silverlight-приложения, то достаточно запустить его с помощью команды Debug->Start Debugging (F5). Расставляя в желаемых местах точки останова, Вы сможете наблюдать за ходом выполнения приложения, имея доступ ко всем известным окнам: Autos, Locals, Watch.

Однако, отладка Silverlight-приложения, может потребовать отлаживать и JavaScript. Visual Studio позволяет отлаживать JavaScript без всяких проблем. Но, если Вы поставите точку останова в JavaScript во время отладки, то ничего не произойдет. Это связано с тем, что Visual Studio не позволяет отлаживать сразу два типа приложений (Silverlight и JavaScript). А Silverlight-проект настроен таким образом, что включает отладку для Silverlight по умолчанию.

Чтобы включить отладку JavaScript в Вашем приложении, в Visual Studio доступно два способа.

Способ 1. Для включения отладки JavaScript (на самом деле выключения отладки Silverlight) достаточно просто открыть свойства проекта, где на вкладке Web, снять флаг Silverlight (раздел Debuggers). Это простое действие позволит отлаживать JavaScript, но точки останова для Silverlight работать перестанут. Описанное выше действие нужно сделать для Web-приложения, которое содержит встраиваемый Silverlight-компонент.

image

@1 Установка отладчика по умолчанию

Способ 2. Выбрать тип приложения, которое Вы планируете отлаживать, можно при подключении к процессу. Для этого запустите Silverlight-приложение НЕ в режиме отладки, а обычным способом (Start Without Debugging (Ctrl+F5)). Когда приложение откроется в браузере, выполните команду Debug->Attach to Process

image

@2 Выбор процесса

В появившемся окне достаточно легко найти экземпляр Вашего браузера, выполняющего Silverlight-приложение. Нужный Вам процесс содержит значения Script и Silverlight в колонке Type. Чтобы переключатся между этими двумя типами приложения, нажмите кнопку Select. В появившемся окне выберите нужный тип.

image

@3 Выбор типа отлаживаемого приложения

Описанные способы можно применять не только при создании простых Web-приложений, но и при создании сложных проектов на базе SharePoint 2010 или другой платформы, когда ошибку может вызывать не только Silverlight-приложение, но и механизмы интеграции с хостом.

Реклама

Written by Sergiy Baydachnyy

16.02.2010 at 11:14

Опубликовано в SharePoint, SilverLight

Tagged with

SharePoint 2010 и SilverLight: Client API

14 комментариев

В завершении темы по интеграции Silverlight и SharePoint 2010, рассмотрим возможность использования Client API, поставляемого с SharePoint.

В отличие от служб REST, Client API позволяет делать практически все: взаимодействовать с любыми объектами, создавать сайты, управлять процессами.

Чтобы использовать Client API для Silverlight, необходимо подключить две сборки: Microsoft.SharePoint.Client.SilverLight.dll и Microsoft.SharePoint.Client.SilverLight.Runtime.dll. Первая сборка отвечает за классы, описывающие объекты SharePoint, а вторая сборка берет на себя задачи, связанные с коммуникациями. Обе сборки находятся в папке C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin.

Замечание. В Visual Studio 2010 beta 2 существует странная ошибка. Если Вы попытаетесь добавить описанные сборки по указанному пути, то Visual Studio сгенерирует ошибку. Поэтому скопируйте данные сборки в директорию Вашего проекта.

Модифицируем код нашего примера так, чтобы он использовал Client API. Приведу сразу готовый код:

ListItemCollection items=null;
 
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
    ClientContext context = new ClientContext("http://sbaydach64");
 
    Web myWeb=context.Web;
 
    List myListSP = myWeb.Lists.GetByTitle(curList);
 
    items = myListSP.GetItems(
        CamlQuery.CreateAllItemsQuery());
 
    context.Load(items);
    context.ExecuteQueryAsync(client_Completed, null);
}
 
private void client_Completed(object sender, 
    ClientRequestSucceededEventArgs e)
{
    System.Windows.Deployment.Current.Dispatcher.BeginInvoke(
    delegate() 
    {
        foreach (ListItem item in items)
        {
            myList.Items.Add(item.FieldValues["FileLeafRef"]);
        }
 
        myList.SelectedIndex = 0;
    }
    );
}

Основной класс, в коде выше, это ClientContext, который является единственным механизмом для получения доступа ко всем объектам SharePoint. Создав объект этого класса, разработчику требуется сформировать запрос. При формировании запроса, Вы можете ссылаться на любые свойства объектов, при условии, что не собираетесь их явно использовать. На этом этапе реальные свойства объектов еще не доступны.

Сформировав запрос, необходимо подготовить его к исполнению. Для этого и служит метод Load. Этот метод подготавливает контекст, к чтению всех необходимых объектов, которые используются для получения желаемого результата.

Наконец, для загрузки всех объектов, необходимо выполнить метод ExecuteQueryAsync, который принимает в качестве параметров ссылку на метод, обрабатывающий результат работы запроса (и метод, вызывающийся при сбое).

В отличие от OpenReadAsync, класса WebClient, метод ExecuteQueryAsync инициирует вызов метода, обрабатывающего результаты асинхронного вызова, НЕ в интерфейсном потоке. Поэтому, чтобы обновить интерфейс, необходимо инициировать вызов еще одного метода, но в интерфейсном потоке, предварительно получив и обработав данные. Этим и занимается объект Dispatcher.

Даже на первый взгляд, использование Client API значительно проще, чем работа с REST. Использование клиентских библиотек обладает гибкостью и универсальностью. При этом нужно помнить, что размер Вашего приложения увеличится примерно на 400 килобайт – таков размер дополнительных сборок.

Заключение

Как видно, Microsoft делает на Silverlight достаточно большую ставку. Это позволило привлечь достаточно ресурсов, чтобы позволить Silverlight использоваться не только на новых сайтах, но и в корпоративных Web-приложениях. А раз мы говорим о корпоративном секторе, то стоит вспомнить о возможности работы Silverlight-приложений вне браузера (с повышением полномочий). Эта возможность позволяет не просто устанавливать Silverlight-приложения на сторону клиента, но и обеспечить доступ к кэшу с данными, даже в отключенном режиме, что совсем не реализовано в SharePoint.

Нужно отметить, что в SharePoint 2007 также можно было интегрировать Silverlight-приложения, но для этого нужно было затратить больше усилий. Конечно, ни о каком клиентском API для SharePoint 2007 нельзя было и мечтать.

Written by Sergiy Baydachnyy

12.02.2010 at 15:36

Опубликовано в SharePoint, SilverLight

Tagged with ,

SharePoint 2010 и SilverLight: REST

with one comment

Когда мы рассматривали общий обзор возможностей интеграции Silverlight и SharePoint 2010, то упоминали о поддержке REST. Действительно, если Вы планируете наладить взаимодействие со списком с фиксированной схемой, то можете получить доступные списки на заданном сайте, обратившись к службе по следующему адресу (аналогичному): http://localhost/_vti_bin/ListData.svc/. Получить данные из конкретного списка (например, Media), можно, используя следующую ссылку: http://sbaydach64/_vti_bin/ListData.svc/Media. Если Вы хотите получить конкретный элемент из списка, то ссылка будет выглядеть аналогично этой: http://sbaydach64/_vti_bin/ListData.svc/Media(1). Во всех случаях, данные возвращаются в формате Atom, а, следовательно, базируются на XML.

Попробуем переписать предыдущий пример так, чтобы Web-часть, отображающая видео, позволяла задавать имя библиотеки (а не файла), содержащей видеоматериалы. При этом, изменим Silverlight-приложение таким образом, чтобы оно позволяло выбрать любой видео файл из библиотеки, в режиме реального времени. То есть, попробуем реализовать примитивную видео библиотеку.

Для начала, реализуем новый интерфейс для Silverlight-приложения:

<UserControl x:Class="SharePointMediaWebPart.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Loaded="UserControl_Loaded">
    <StackPanel x:Name="LayoutRoot" Background="White" 
        Orientation="Horizontal">
        <ListBox Name="myList" SelectionChanged="myList_SelectionChanged">
        </ListBox>
        <MediaElement Name="myMedia" AutoPlay="True"></MediaElement>
    </StackPanel>
</UserControl>

Тут мы изменили главный контейнер, в который добавили ListBox, необходимый для выдачи списка файлов. Кроме того, мы определили два обработчика для событий Load и SelectionChanged. Первый обработчик будет выбирать данные из указанного списка, и заполнять ListBox. Второй обработчик позволит устанавливать новый источник для медиа элемента.

Перейдем к реализации кода.

Внесем изменения в конструктор класса MainPage, добавив код, выбирающий параметр с именем списка из коллекции параметров для встраиваемого компонента (удалите аналогичный код из Application_Startup – в этом примере его там держать не удобно).

private String curList="";
 
public MainPage()
{
    InitializeComponent();
 
    if (App.Current.Host.InitParams.ContainsKey("media"))
    {
       curList = App.Current.Host.InitParams["media"];
    }
}

Реализация обработчика события SelectionChanged также будет простой:

private void myList_SelectionChanged(
   object sender, SelectionChangedEventArgs e)
{
    myMedia.Source = new   
       Uri(String.Format("http://localhost/{0}/{1}",
          curList, myList.SelectedValue.ToString()),
       UriKind.Absolute);
}

(можно было использовать контекст, чтобы выбрать адрес сайта из коллекции)

Тут мы формируем ссылку на файл, лежащий в нашей библиотеке, и устанавливаем источник для MediaElement.

Давайте рассмотрим код последнего обработчика:

private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
    if (curList.Length>0)
    {
        WebClient client = new WebClient();
        client.OpenReadCompleted += 
           new OpenReadCompletedEventHandler(
              client_OpenReadCompleted);
 
        client.OpenReadAsync(
           new Uri(string.Format(
              "http://sbaydach64/_vti_bin/ListData.svc/{0}", 
              curList), 
           UriKind.Absolute));
    }
}

Тут мы устанавливаем асинхронное соединение со службой, используя имя списка, передаваемого в параметрах. Как только данные будут получены, вызовется метод client_OpenReadCompleted, который и будет реализовывать всю работу по обработке XML и заполнению ListBox.

Прежде, чем перейти к написанию кода client_OpenReadCompleted, создайте в SharePoint библиотеку с любым именем (например, Media), и загрузите в нее несколько медиа файлов. После этого, выполните команду, аналогичную этой:

http://localhost/_vti_bin/ListData.svc/Media

Ниже я привожу часть XML, который я получил, выполняя команду выше:

  <entry m:etag="W/&quot;4&quot;">
    <id>http://sbaydach64/_vti_bin/ListData.svc/Media(1)</id>
    <title type="text">Test 1</title>
    <updated>2010-02-10T16:12:06+02:00</updated>
 
. . . . . .
      <d:ContentTypeID>0x0101009110D2200BDC0F429ED6372AF0A68C01</d:ContentTypeID>
      <d:ContentType>Document</d:ContentType>
      <d:Created m:type="Edm.DateTime">2010-02-10T16:10:13</d:Created>
      <d:CreatedByID m:type="Edm.Int32">1073741823</d:CreatedByID>
      <d:Modified m:type="Edm.DateTime">2010-02-10T16:12:06</d:Modified>
      <d:ModifiedByID m:type="Edm.Int32">1073741823</d:ModifiedByID>
      <d:CopySource m:null="true"></d:CopySource>
      <d:ApprovalStatus>0</d:ApprovalStatus>
      <d:Path>/Media</d:Path>
      <d:CheckedOutToID m:type="Edm.Int32" m:null="true"></d:CheckedOutToID>
      <d:Name>Test 1.wmv</d:Name>
      <d:VirusStatus>26246026</d:VirusStatus>
      <d:IsCurrentVersion m:type="Edm.Boolean">true</d:IsCurrentVersion>
      <d:Owshiddenversion m:type="Edm.Int32">4</d:Owshiddenversion>
      <d:Version>1.0</d:Version>
      <d:Title>Test 1</d:Title>
    </m:properties>
  </entry>

Как видно, имя файла содержится в поле d:Name. Поскольку, в данном случае, нам другие данные и не нужны, воспользуемся простым объектом XmlReader, для выбора нужной информации. Вот как будет выглядеть наш код:

        void client_OpenReadCompleted(object sender, 
            OpenReadCompletedEventArgs e)
        {
            XmlReader reader = XmlReader.Create(e.Result);
 
            while (reader.Read())
            {
                if (reader.NodeType==XmlNodeType.Element)
                {
                        if (reader.Name.Contains("Name"))
                        {
                            reader.Read();
 
                            myList.Items.Add(reader.Value);
                            
                        }
                        break;
                }
            }
            myList.SelectedIndex = 0;
        }

Получая XML документ в качестве потока, мы используем XmlReader, для поиска нужного элемента, у которого выбираем значение.

Теперь можно откомпилировать и развернуть данный пример. Указав в качестве параметров Web-части, имя созданного списка с видео, Вы сможете увидеть работу приложения:

image

@10 Результат работы приложения

Если Вы разрабатываете более сложный компонент, то для взаимодействия с XML данными можно использовать один из следующих подходов:

· Используйте прокси классы, созданные Visual Studio – для этого добавьте ссылку на службу с помощью Add Service Reference. Прокси классы будут сгенерированы автоматически. В нашем примере они не очень помогут, так как мы не знаем имя списка;

· Используйте механизмы сериализации (уж не знаю, как это правильно пишется по-русски) – сложно, но эффективно. Зная, что в нашем списке есть определенные поля, мы могли бы не делать привязку к конкретному списку;

· Используйте XLinq – нужно подключать библиотеки из SDK, а в данном случае это не имеет смысла;

· Используйте специальный класс из SDK (SyndicationFeed). Опять же, нужно подключать дополнительную библиотеку. Кроме того, этот класс отказался работать с контентом, возвращаемым SharePoint (хотя должен работать с Atom).

Written by Sergiy Baydachnyy

11.02.2010 at 13:07

Опубликовано в SharePoint, SilverLight

Tagged with ,

SharePoint 2010: Что нового? (часть 6) – Интеграция с PowerShell

with one comment

Windows PowerShell представляет собой новую утилиту командной строки, предназначенную для управления системой. С одной стороны Windows PowerShell заменяет утилиту cmd, а с другой – поддерживает новую технологию создания и исполнения сценариев. Так, если результатом любой команды в утилите cmd был текстовый поток, то команды (командлеты) в PowerShell возвращают объекты, с которыми Вы можете взаимодействовать и использовать в качестве параметров для последующих команд.

Поскольку PowerShell построен на .NET Framework, то объекты, возвращаемые командлетами, являются .NET Framework объектами. При этом разработчику доступно SDK, позволяющее разрабатывать свои командлеты, используя язык программирования C# и возможности .NET Framework.

Управляя SharePoint 2010, Вы все еще можете использовать старые утилиты cmd и stsadm. Однако следует учесть, что эти утилиты оставили лишь для обратной совместимости (чтобы не заставлять разработчиков переписывать уже готовые файлы, предназначенные для развертывания решений). Поэтому, если Вы планируете работать с SharePoint 2010, то придется изучить основы работы с PowerShell.

Замечание. При работе с SharePoint 2010 следует запускать 64-разрядную версию PowerShell.

Чтобы использовать PowerShell для управления SharePoint 2010, потребуется подключить командлеты, поставляемые с SharePoint. Для этого, после запуска PowerShell, требуется выполнить следующую команду:

Add-PSSnapin Microsoft.SharePoint.Powershell

Данная команда добавляет возможность использования около 500 командлетов (при том, что в стандартной поставке их всего около 100).

Вот несколько примеров.

Создание нового сайта в коллекции (шаблон устанавливается при первом входе)

New-SPWeb –Url http:// localhost/test1

Выбор всех веб-приложений

Get-SPSite

Возврат всех сайтов из коллекции

Get-SPWeb –Site http://localhost

Естественно, что при использовании PowerShell можно разрабатывать сценарии, которые сохранять в отдельных файлах для многократного запуска. Обычно для этой цели используют утилиту Windows PowerShell Integrated Scripting Environment (ISE), которая расположена в одной папке с PowerShell. Эта утилита достаточно удобна при разработке больших сценариев, так как позволяет выполнять отдельные части сценария и отображать результаты.

В завершении отметим, что если Вы планируете разрабатывать собственные командлеты для PowerShell, то их следует наследовать от класса SPCmdlet. Все командлеты для SharePoint наследуются именно от этого класса, а он, в свою очередь, от класса PSCmdlet. Последний класс является стандартным для создания собственных командлетов, но для SharePoint он не подходит.

Written by Sergiy Baydachnyy

11.02.2010 at 11:26

Опубликовано в SharePoint

Tagged with

SharePoint 2010 и SilverLight: Использование Visual Studio 2010

6 комментариев

Попробуем использовать Visual Studio 2010 для создания решения для SharePoint, включающего в себя web-часть, содержащую Silverlight-приложение.

Поскольку создание веб-части дело тривиальное, будем использовать шаблон решения, предназначенного для развертывания в «песочнице» SharePoint 2010. Для этого необходимо создать проект на основе шаблона Empty SharePoint Project и выбрать адрес сайта, где Вы планируете провести тестирование веб-части и опцию Deploy as a sandbox solution.

image

@3 Создание проекта для SharePoint 2010

В созданное решение добавьте еще один проект на основе шаблона Silverlight Application (у меня проект называется SharePointMediaWebPart). При этом, снимите галочку Host the Silverlight application in a new Web Site (он нам не понадобится):

image

@4 Создание Silverlight-приложения

На последнем шаге, при подготовке каркаса нашего решения, добавим к SharePoint проекту новый элемент. Для создания нового элемента выберем шаблон Web Part (не Visual). В результате структура Вашего проекта будет напоминать ту, которая отображена на рисунке ниже:

image

@5 Структура проекта

Прежде чем приступить к написанию кода и развертыванию решения, необходимо проверить наличие возможности развернуть Ваш код в «песочницу» SharePoint. Как ни странно, при инсталляции бета-версии SharePoint 2010, эта возможность по умолчанию выключена.

Итак, если при развертывании решения Вы получаете ошибку Error occurred in deployment stepRetract Solution‘: Cannot start service SPUserCodeV4 on computer ‘…..’, вероятнее всего у Вас не запущена служба Windows SharePoint Services User Code Host V4. Измените способ запуска этой службы на Automatic и запустите ее.

image

Запустив службу, Вы можете попробовать развернуть проект. Вероятнее всего Вы получите следующую ошибку: Error occurred in deployment step ‘Activate Features’: This feature cannot be activated at this time. The contents of the feature’s solution requires the Solution Sandbox service to be running. Чтобы, наконец, развернуть наше решение, необходимо запустить утилиту администрирования SharePoint 2010 и запустить SharePoint Foundation User Code Service службу и там. Хотя последнее действие скорее активирует возможность, чем запускает службу, Вам необходимо перейти в раздел System Settings->Manage Services on Server и нажать Start.

image

@7 Активация службы с помощью утилиты администрирования

Запустив все необходимые службы, можно приступить к написанию кода.

Первым делом реализуем Silverlight-приложение, заполнив его содержимое простым MediaElement (мы не будем создавать сложный интерфейс).

<UserControl x:Class="SharePointMediaWebPart.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid x:Name="LayoutRoot" Background="White" HorizontalAlignment="Left">
        <MediaElement Name="myMedia" AutoPlay="True"></MediaElement>
    </Grid>
</UserControl>

Выбирать имя отображаемого видео будем, используя конфигурационный параметр элемента object, добавляющего встраиваемый компонент Silverlight на страницу. Поэтому, реализуем код, выбирающий параметр с ключом media:

private void Application_Startup(object sender, StartupEventArgs e)
{
    this.RootVisual = new MainPage();
 
    ((MainPage)this.RootVisual).myMedia.Source =
         new Uri(
             this.Host.InitParams["media"], 
             UriKind.RelativeOrAbsolute);
}

Silverlight-приложение полностью готово. Перейдем к разработке созданной веб-части.

Код нашей веб-части достаточно простой: он просто генерирует элемент object, который вписывает в содержимое:

protected override void RenderContents(HtmlTextWriter writer)
{ 
    string html = String.Format(
        "<object data=\"data:application/x-silverlight-2,\" "+
        "type=\"application/x-silverlight-2\" width=\"90%\" height=\"90%\">" +
        "<param name=\"source\" value=\"_catalogs/masterpage/SharePointMediaWebPart.xap\"/>" +
        "<param name=\"minRuntimeVersion\" value=\"4.0.41108.0\" />" +
        "<param name=\"initparams\" value=\"media={0}\" />" +
        "</object>", 
        this.MediaSource);
 
    writer.Write(html);
 
    base.RenderContents(writer);
}

Кроме этого, необходимо определить свойство MediaSource, которое будет задаваться редактором сайта:

private string _mediaSource = "";
 
[WebBrowsable(true),
WebDescription("Select .wmv file from a list"),
WebDisplayName("Media Source"),
Personalizable(PersonalizationScope.User)]
public string MediaSource
{
    get
    {
        return _mediaSource;
    }
    set
    {
        _mediaSource = value;
    }
}

Собственно говоря, это весь код. Остается настроить проект таким образом, чтобы он включал .xap-файл приложения и выполнял его развертывание в один из существующих списков (я выбрал список с эталонными страницами).

Чтобы включить .xap-файл в решение SharePoint 2010, войдите в свойства веб-части (MediaWebPart), и установите ссылку на выходной файл нашего SilverLight-проекта. Для этого используется окно Project Output Reference:

image

@8 Добавление .xap-файла в пакет решения

Имея .xap-файл внутри нашего пакета, остается развернуть его внутри списка с эталонными страницами. Для этого отредактируйте файл elements.xml, добавив внутрь элемента Elements следующий код:

  <Module Name="MediaWebPartXap" Url="_catalogs/masterpage">
    <File Path="MediaWebPart\SharePointMediaWebPart.xap" 
       Url="SharePointMediaWebPart.xap" Type="GhostableInLibrary">
    </File>
  </Module>

Проект готов к развертыванию.

Попробуйте выполнить развертывание и создать произвольный список, куда разместить видео-файл. Добавьте созданную веб-часть на любую из страниц и укажите ссылку на видео-файл в вашем списке, используя свойство Media Source в окне настроек веб-части. Если Вы все сделали верно, то на экране отобразиться видео:

image

Written by Sergiy Baydachnyy

09.02.2010 at 17:19

Опубликовано в SharePoint, SilverLight

Tagged with ,

SharePoint 2010 и SilverLight: Встроенные Web-части

leave a comment »

Самый простой способ добавить Silverlight-приложение на страницу, это использовать уже встроенные Web-части. Для этого нужно выполнить два действия:

· Разместить существующий .xap-файл в один из списков SharePoint. Список или библиотека могут быть абсолютно произвольными. Я предпочитаю использовать библиотеки, определенные в шаблоне Global, например, галерею master-страниц. Загрузив .xap-файл в выбранный список, обязательно скопируйте полный путь к нему (например, http://sbaydach64/_catalogs/masterpage/SilverLight/DragAndDrop_Chapter0.xap);

· Перейдите на страницу, где Вы планируете разместить Silverlight-приложение, войдите в режим редактирования и выберите Silverlight Web-часть, указав Url на Ваш .xap-файл:

image

@2 Вставка Silverlight Web-части

Как видно, разместить готовое Silverlight-приложение не представляет трудностей даже для обычного пользователя.

Когда я говорю о SharePoint 2010, то обычно подразумеваю как бесплатную версию продукта – SharePoint Foundation 2010, так и платную – SharePoint Server 2010. Silverlight web-часть присутствует в обоих версиях продукта. А вот Web-часть, отображающая видео, присутствует только в платной версии.

Фактически, Silverlight Media Web-часть представляет собой готовый медиа плейер, позволяющий принимать имя видео файла в одном из списков SharePoint. Эта web-часть может быть использована пользователем, для размещения видео на любой из страниц. Кроме этого, она используется в библиотеках, предназначенных для хранения видео, изображений и другой информации.

Несмотря на то, что Silverlight Media Web-часть отсутствует в бесплатной версии, ее легко реализовать самостоятельно, но для этого Вам понадобиться Visual Studio 2010.

Продолжение следует.

Written by Sergiy Baydachnyy

05.02.2010 at 09:47

Опубликовано в SharePoint, SilverLight

Tagged with ,

SharePoint 2010 и SilverLight: Обзор возможностей

leave a comment »

Вчера мне позвонили партнеры, с вопросом о том, как в существующие проекты на SharePoint 2007 добавить Silverlight-компоненты, отображающие видео. Речь шла о корпоративных сайтах, доступных внутри сети предприятия. После этого звонка, я решил добавить пост, посвященную интеграции Silverlight на сайты, под управлением SharePoint. Речь пойдет о SharePoint 2010. Это связано с тем, что этот продукт будет более востребован в ближайшее время. Кроме того, при разработке SharePoint 2010, на Silverlight был сделан отдельный акцент, в результате чего, можно говорить о тесной интеграции этих двух продуктов.

Еще в своих постах о SilverLight 4, я говорил, что в Silverlight был сделан большой акцент не только на общедоступные приложения, работающие в Интернет, но и на корпоративные приложения. Между тем, SharePoint представляет собой продукт, который призван решить две задачи: реализовать механизм управления контентом на сайтах организации, обеспечить поддержку процессов документооборота. И если на рынке CMS систем, SharePoint 2010 имеет сильных конкурентов, большинство из которых Open Source (с открытым кодом, но никак не свободным – эта игра слов, для новичков), то в корпоративном секторе, среди систем документооборота, ему нет равных. Тут есть и тесная интеграция с Windows Workflow, и ASP.NET ориентированный интерфейс, а теперь еще и интеграция с Silverlight.

Давайте рассмотрим, какие возможности, связанные с Silverlight, представлены в SharePoint.

Тут можно сделать акцент на следующих возможностях:

· Поддержка специальной Web-части (Silverlight Web Part), которая позволяет отобразить Silverlight-приложение;

· Поддержка специального Silverlight элемента управления, который способен отображать видео на SharePoint сайтах;

· Тесная интеграция с Office Web Application – набором офисных пакетов, работающих в Web. Именно в Web, Microsoft теперь выпускает такие продукты, как Word, Excel, PowerPoint, работающие в браузере. С одной стороны, эти продукты можно использовать в Интернет, например, редактируя документы в Sky Drive. С другой стороны, эти продукты поставляются вместе с SharePoint Server 2010 – платной версией SharePoint. Office Web Application могут работать, используя только возможности HTML и JavaScript, но если на машине пользователя установлен Silverlight, то он сможет воспользоваться дополнительными преимуществами интерфейса;

· Поддержка специально разработанных библиотек (Client API), позволяющих взаимодействовать с SharePoint из Silverlight-приложения, скрывая детали от разработчика;

· Взаимодействие с данными из списков SharePoint с помощью REST служб, то есть служб, обмен данными с которыми происходит по HTTP, но с сохранением связей между объектами. Подобный механизм работает благодаря тому, что все списки в SharePoint, имеют точку доступа к соответствующей REST-службе. В свою очередь Silverlight обладает мощными механизмами взаимодействия со службами по HTTP;

· Поддержка развертывание Silverlight-приложений в режиме «песочницы». Подобный режим позволяет выполнять развертывание решений под SharePoint, используя только права администратора коллекции сайтов. Ранее, чтобы развернуть любое решение в SharePoint, необходимо было иметь права администратора всего сервера. Иными словами, чтобы добавить Silverlight-приложение на свой сайт, Вам не нужно быть администратором сервера. На самом деле, если Вы разворачиваете только .xap-файл, то можно обойтись и без прав владельца коллекции, но если Вы разворачиваете решение, содержащие набор фич (feature – вот так в SharePoint называется единица развертывания), то без прав владельца не обойтись;

· Тесная интеграция с существующим интерфейсом SharePoint 2010. Так, если у пользователя установлен Silverlight, то многие диалоговые окна и элементы навигации приобретают дополнительные интерфейсные возможности, делая интерфейс более «приятным». В качестве примера можно рассмотреть интерфейс окна, позволяющего создавать сайты внутри коллекции:

image

@1 Пример диалогового окна Create, реализованного в SharePoint на SilverLight

Итак, сделав обзор всех аспекты интеграции Silverlight и SharePoint 2010, перейдем к детальному изучению некоторых из них.

Продолжение следует.

Written by Sergiy Baydachnyy

05.02.2010 at 07:54

Опубликовано в SharePoint, SilverLight

Tagged with ,