Буквально через три дня после предыдущего поста на эту животрепещущую тему обнаружилась прекрасная наводка от Mark Racley на решение проблемы использования CSOM-библиотек для подключения к удалённому серверу Sharepoint. Действительно, Windows Runtime Component с подключёнными SP-сборками выполняет подключение к ферме, запрашивает и отдаёт данные:
Сборки использовались от Sharepoint 2013, 2010-е использовать невозможно из-за конфликта версий .NET (очень уж древней оказалась версия, использованная в SP-2010). Сам компонент стандартным образом подключается в проект для Windows Store:
Код для доступа к удалённым SP-узлам тот же, что в утилите SpfExplorer. Были некоторые сомнения относительно передачи и использования в CSOMWinRTComponent делегатов из SPExplorerCSOM Win8 (CS) (всё же, версии framework’ов, вроде бы, разные). Но всё обошлось, делегаты передаются и узлы деревьев благополучно рисуют.
Следующее возникшее сомнение – при выборе средств построения пользовательского интерфейса. Вариантов, собственно, два – C# + XAML или HTML + JS
При использовании C# нужно бороться с ужасной хренью в виде XAML с его жуткой моделью элементов интерфейса. "Стандарты" в виде студийных проектов предполагают использование MVVM с биндингом данных. В случае же "деревянных" данных, как в SP, слабо представляется, что и как там надо привязывать. Да и дерева там, собственно, нет, все советуют реализовывать его самостоятельно…
При использовании JS есть надежда, что борьбу с ним можно ослабить при использовании TypeScript, а строить дерево на HTML когда-то все умели… Правда, при внимательном рассмотрении выясняется, что и на HTML программы предлагается делать так же, как на XAML (через специфические атрибуты). Может, конечно, и "обычный" HTML пойдёт, но экспериментировать с этим как-то не сильно хочется…
В итоге, с учётом всех мнений, выбран вариант C# + XAML, дерево для вывода данных – собственного изготовления. После долгих кровопролитных сражений с XAML (о ходе и результатах сражений как-нибудь попозже в отдельных постах) получилась программка, пригодная для эксплуатации на планшете с использованием пальцетыканья. Нормально подключается к серверам SP-2010 и SP-2013 и выводит данные в виде дерева:
Следующая, совсем отдельная задача – размещение программки в магазине Windows 8 (а другого официального способа распространения и нет, вроде бы). Здесь вовсе уж цирк – проверка в Студии на соответствие требованиям не проходит:
Собственно, уговорить разработчиков Sharepoint исправить ситуацию с использованием “не того” API (а список неправильных вызовов довольно длинный) я не могу, остаётся только удивляться, почему это некоторый вызов “не поддерживается для данного типа приложений”, если в программке он наверняка используется и вполне себе работает… Щас отправлю пакет, поглядим…
6 комментариев:
можно распространять через system center в корпоративной среде.
но чтобы публиковать в маркете надо через rest api ходить в шарик
Я, вообще-то, в курсе, но пускай официально напишут, буду хранить как очередной анекдот от MS. А программку, если кому понадобится, отдам в исходниках. Хотя сильно сомневаюсь, учитывая, что планшеток на Win8 продано всего ничего...
P.S. Yасчёт использования REST - может, когда-то и осилю это дело, но сейчас у меня основное поле для работы - 2010-я версия, для неё уже есть много чего через CSOM, и прикручивать туда через известное место REST не сильно хочется.
"остаётся только удивляться, почему это некоторый вызов “не поддерживается для данного типа приложений”, если в программке он наверняка используется и вполне себе работает…"
Часть API запрещена из-за безопасности - чтобы гарантировать что разные приложения не вмешиваются в работу друг друга и системы
Называется "танец на собственных яйцах" - любимое занятие корпорации.
Так сильно, выходит, приложения нужны, если собственные библиотеки запрещают использовать.
Ну, и пускай, мне-то что, я жутких бабок в системку не грохал...
Дык библиотеки-то были написаны раньше чем win8 и не могут учитывать его модель безопасности. Ты бы почитал что-нибудь по моделям безопасности мобильных ОС. В iOS, насколько я знаю, то же самое. Если нужна полная совместимость - пиши win32 приложение.
Очень похоже, когда наши "политики" возражают: "...а вот в Америке - такая же хрень..." ;-)
Для iOS, вроде, проблемы пустого магазина и маленькой доли рынка не существует...
А win32-программка у меня есть (собственно, из неё и сделал эту), но пальцами, всё же, удобнее тыкать в метрошном интерфейсе...
Отправить комментарий