200 likes | 438 Views
Обзор технологий Client Side. ECMAScript , Silverlight и объектная модель для SharePoint 2007 и 2010. Что это и зачем?. Удобство для пользователя Меньше перезагрузок страниц Более понятный отклик интерфейса на события Больше возможностей для взаимодействия
E N D
Обзор технологий Client Side ECMAScript, Silverlight и объектная модель для SharePoint 2007 и 2010
Что это и зачем? • Удобство для пользователя • Меньше перезагрузок страниц • Более понятный отклик интерфейса на события • Больше возможностей для взаимодействия • JavaScript + XmlHttpRequest+ .asmx, .svc, … -> AJAX • Создание с нуля требует больших затрат и потенциально глючно, сохраняются проблемы совместимости браузеров (IE 6)
Что у нас есть? SharePoint v3 / 2007 SharePoint v4 / 2010 В коробке Ajax везде Веб-части Silverlight ClientOM для .NET ClientOMдля ECMAScript (SP.js, SP.debug.js) <ScriptLink>/SP.SOD.execute <- любые js-библиотеки, в том числе собственные В коробке • Core.js, init.js, form.js,… • ActiveX-контролы.ocx и .dll Дополнительно • ASP.NET AJAX • Silverlight blueprint • jQuery, jQuery UI, jPoint, jQuery.SPServices • ExtJS, Prototype.js…
ClientSide 2007 Популярные инструменты Популярные js-библиотеки и расширения для SharePoint 2007
Взаимодействие с сервером FrontPage RPC / OWS Веб-службы XmlHttpRequest… jQuery.ajax() jPoint jQuery.SPServices Silverlight • owsapi.js http://darrenjohnstone.net var lists = new SPAPI_Lists("http://server") ; var listcollection = lists.getListCollection(); if(listcollection.status == "200"){ $(listcollection.responseXML) .find("List").each(function(){ //here we have each list }); http://jpoint.codeplex.com var listItems = jP.getList('/','Title').getSPItemsWithQuery(CamlQuery,RowLimit); var itemObjects = listItems.getItemsFieldData();
Зоопарк или оркестр? • ECMAScript или Silverlight? • Собственная разработка или типовое решение? • Взаимодействие или конфликт? • Методы развертывания, контроль версий • Гдеразместить? • Как развернуть? • Как изменить? • Как сберечь? http://muhimbi.com/Products/SharePoint-Infuser-(Free).aspx http://SmartTools.CodePlex.com http://SPCS.CodePlex.com http://SPServices.CodePlex.com http://jPoint.CodePlex.com
ClientSide 2010 Полная объектная модель для клиентских приложений
Основные объектыClient Object Model Site Web ContentType Change List Navigation Form NavigationNode View UserCustomAction Field RoleDefinition ListItem RoleAssignment Folder Интерфейс WorkflowAssociation Данные, схема File WorkflowTemplate Логика WebPart Безопасность
JavaScript (см. _layouts/SP.debug.js) • var context; • varweb; • function testButtonClick() • { • context = new SP.ClientContext(); • web = context.get_web(); • context.load(web) • context.executeQueryAsync(titleRetrievedContinue); • } • function titleRetrievedContinue() • { • web.set_title(web.get_title() + " + JavaScript"); • web.update(); • context.executeQueryAsync(sayDone); • }
C#(_layouts/ClientBin/Microsoft.SharePoint.Client*.dll) • private ClientContext context; • private Webweb; • private void TestButton_Click(object sender, RoutedEventArgs e) • { • context = ClientContext.Current; • web = context.Web;context.Load(web); • context.ExecuteQueryAsync(TitleRetrievedContinue, null); • } • private void TitleRetrievedContinue(object sender, ClientRequestSucceededEventArgsargs) • { • web.Title = web.Title + " + Silverlight"; • web.Update(); • context.ExecuteQueryAsync(SayDone, null); • }
Запрос данныхс помощью LINQ clientContext.Load(oList,list=> list.Fields .Where(field => field.Hidden == false && field.Filterable== true)); clientContext.ExecuteQuery();
Silverlight Веб-части Silverlight
Работа с данными SharePoint из Silverlight • Client Object Model • ADO.NET Data Services(REST) • Веб-службы SharePoint • Работа с HTML DOM • Дополнительные веб-службы SharePoint Server SilverlightPlug-in
Silverlight HTML Bridge • Обработка HTML DOM из Silverlight • Вызов функций JavaScript из Silverlight • Вызов кода Silverlight из Javascript • Вызов обработчиков событий Javascriptиз Silverlight • Вызов обработчиков событий Silverlight из Javascript • Обмен объектами между Silverlight и Javascript
Взаимодействие Silverlight веб-частей SendMessage() Register(SilverlightApp 2 Client ID) Web Part 1 Web Part 2 Silverlight App2Client ID SilverlightApp 1 SilverlightApp 2 Page ISilverlightConnection Silverlight App1 Client ID
Выводы • В SharePoint 2007 можно сделать удобный и красивый интерфейс с помощью дополнительных библиотек *.jsи ‘Blueprint for Silverlight’ • В SharePoint 2010 удобно делать красивые и удобные интерфейсы с помощью согласованной объектной модели как на js/ecmascript, так и на Silverlight