Использование CAML в Sharepoint.Camlex.NET - построение CAML запросов с помощью lambda-выражений презентация

Содержание

Обзор способов выборки данных из списков и библиотек документов в Sharepoint Выборка с помощью цикла в object model

Слайд 1Использование CAML в Sharepoint. Camlex.NET - построение CAML запросов с помощью lambda-выражений
Алексей

Садомов http://sadomovalex.blogspot.com/
Владимир Тимашков
http://vtimashkov.wordpress.com/

Слайд 2Обзор способов выборки данных из списков и библиотек документов в Sharepoint
Выборка

с помощью цикла в object model

Слайд 3Преимущества:
простой и понятный old-school-ный C# синтаксис
compile-time проверка
не требует

знаний CAML от разработчика
вполне применим на листах с небольшим числом записей

Недостатки:
на списках с большим числом записей производительность кода
очень низкая, т.к. каждая запись вытягивается из списка
(т.е. из content database) отдельным SQL запросом


Слайд 4Выборка из SharePoint Content DB напрямую
Преимущества:
Максимальная скорость работы
Полная свобода

действий ☺

Недостатки:

Схема content DB нигде не описана
Microsoft не гарантирует неизменность структуры БД
По сути, это хак системы


Слайд 5Выборка с помощью CAML:

SPQuery – позволяет делать выборку из одного

списка на одном сайте (SPWeb)

SPSiteDataQuery – для выборки данных из нескольких списков, находящихся на разных сайтах в пределах одной сайт коллекции (SPSite)

PortalSiteMapProvider.GetCachedListItemsByQuery и GetCachedSiteDataQuery – реализованы на основе SPQuery и SPSiteDataQuery. Позволяет увеличить производительность за счет кеширования

в свойство (либо параметр) Query записывают SQL-like запросы, отформатированные в XML - фильтры и сортировка/группировка исполняются внутри SQL движка, а не в C# коде (см. Query Schema http://msdn.microsoft.com/en-us/library/ms467521.aspx)

Слайд 6Выборка с помощью SPQuery


Слайд 7Преимущества:
высокая производительность на больших списках
Недостатки:
необходимость знать синтаксис CAML-а
любая

синтаксическая ошибка при форматировании XML вызывает исключение
кода менее читабельный – размер примера вырос в 2 раза, читать его становится существенно тяжелее по сравнению с первым подходом
при изменении фильтра надо перестроить дерево XML узлов – к примеру, узел каждой логической операции принимает толька 2 операнда, и в случае, если надо добавить еще одно условие в OR, то придется разбивать соответствующий подузел на 2 части, что еще больше увеличивает общую глубину дерева.
не поддерживает code-first approach – потеря compile-time проверок, intellisense, и т.п.

Слайд 8Использование Caml.NET http://camldotnet.codeplex.com


Слайд 9Преимущества:
меньшая вероятность сделать синтаксическую ошибку
высокая производительность – CAML.NET никак

не влияет на производительность, это просто тонкая обертка поверх стандартного CAML синтаксиса, т.е. CAML.NET просто помогает подготавливать XML
compile-time проверка

Недостатки:
т.к. Caml.NET – это лишь обертка над стандартным CAML-ом, этот подход наследуют многие исходные проблемы CAML синтаксиса


Слайд 10Использование Camlex.NET http://camlex.codeplex.com
Преимущества:
не требует знания CAML. Позволяет разработчику сконцентрироваться над

непосредственной бизнес задачей, т.е. над тем Что сделать, а не над тем, Как это сделать
минимальный размер кода
фильтры можно перенести из 1-го подхода с помощью copy/paste
производительность на уровне чистого CAML запроса
отсутствие XML синтаксиса как такового. Используется естественный и интуитивно понятный синтаксис. Любые изменения фильтров – естественны для C# разработчиков, и не потребует перестройки XML дерева
разработчик остается к контексте C# - intellisense, compile-time проверки, code-first approach, и т.д. и т.п.
возможность указывать неконстантные выражения (переменные, вызовы методов, и т.п.)
полностью кастомизируемый результат

Слайд 11Рекомендации по созданию LINQ / Expression трансляторов:
статья “Building a LINQ

Provider” -
http://msdn.microsoft.com/en-us/vcsharp/ee672195.aspx

LINQExtender - http://linqextender.codeplex.com/
LINQ IQuerable Toolkit - http://iqtoolkit.codeplex.com/
MetaLinq - LINQ to Expressions - http://metalinq.codeplex.com/
re-linq - http://relinq.codeplex.com/

используйте CodePlex (TFS, SVN, Mercurial), а не BitBucket
используйте Mercurial, а не SVN


Слайд 12Архитектура Camlex.NET
Интерфейс IQuery


Слайд 13Синтаксис lambda-выражений
Native синтаксис
String-based синтаксис
Трансляция из lambda-выражения в CAML


Слайд 14Поддерживаемые операции
http://camlex.codeplex.com/documentation


Слайд 15Динамические фильтры


Слайд 16Пример практического применения
Построение динамических CAML запросов на основе параметров из query

string: http://www.gotdotnet.ru/blogs/sadomovalex/8155/

http://example.com/_layouts/Custom/Search.aspx?Title=Meeting&Description=Sharepoint




Слайд 17Другие фичи, добавленные в версии 2.0
поиск по field id

поиск

по lookup value и lookup id



Слайд 18 официальный сайт проекта Camlex.NET http://camlex.codeplex.com/
блоги авторов:
http://sadomovalex.blogspot.com/
http://vtimashkov.wordpress.com/
статья

на habr-е http://habrahabr.ru/blogs/sharepoint/82787/
статья на codeproject http://www.codeproject.com/KB/sharepoint/Camlex_NET.aspx
статья на codeproject http://www.codeproject.com/KB/sharepoint/Camlex_NET_2_0.aspx
статья на gotdotnet http://www.gotdotnet.ru/blogs/sadomovalex/8155/
Сaml.NET http://camldotnet.codeplex.com/
U2U Caml Builder http://www.u2u.be/Res/Tools/CamlQueryBuilder.aspx

Ссылки


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика