Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Использование  CAML  в  Sharepoint. Camlex.NET -  построение CAML   запросов с помощью   lambda-выражений Алексей Садомов ...
Обзор способов выборки данных из списков и библиотек документов в  Sharepoint Выборка с помощью цикла в  object model
<ul><li>Преимущества : </li></ul><ul><li>простой и понятный  old-school- ный  C#  синтаксис </li></ul><ul><li>compile-time...
Выборка из  SharePoint Content DB  напрямую Преимущества: <ul><li>Максимальная скорость работы </li></ul><ul><li>Полная св...
<ul><li>Выборка с помощью  CAML: </li></ul><ul><li>SPQuery –  позволяет делать выборку из одного списка   на одном сайте  ...
Выборка с помощью  SPQuery
<ul><li>Преимущества : </li></ul><ul><li>высокая производительность на больших списках </li></ul><ul><li>Недостатки : </li...
Использование  Caml.NET  http://camldotnet.codeplex.com
<ul><li>Преимущества : </li></ul><ul><li>меньшая вероятность сделать синтаксическую ошибку </li></ul><ul><li>высокая произ...
Использование  Camlex.NET  http://camlex.codeplex.com <ul><li>Преимущества : </li></ul><ul><li>не требует знания  CAML . П...
Рекомендации по созданию  LINQ / Expression  трансляторов: <ul><li>статья “Building a LINQ Provider”   - </li></ul><ul><li...
Архитектура  Camlex.NET Интерфейс  IQuery
Синтаксис  lambda- выражений Native  синтаксис String-based  синтаксис Трансляция из  lambda -выражения в  CAML
Поддерживаемые операции http://camlex.codeplex.com/documentation
Динамические фильтры
Пример практического применения Построение динамических CAML запросов на основе параметров из query string :  http://www.g...
Другие фичи, добавленные в версии 2.0 <ul><li>поиск по  field id </li></ul><ul><li>поиск по  lookup value  и  lookup id </...
<ul><li>официальный сайт проекта  Camlex.NET   http://camlex.codeplex.com/ </li></ul><ul><li>блоги авторов : </li></ul><ul...
Upcoming SlideShare
Loading in …5
×

Data retrieving in Sharepoint. Camlex.NET - tool for building CAML queries using lambda expressions

2,222 views

Published on

Published in: Technology
  • Be the first to comment

Data retrieving in Sharepoint. Camlex.NET - tool for building CAML queries using lambda expressions

  1. 1. Использование CAML в Sharepoint. Camlex.NET - построение CAML запросов с помощью lambda-выражений Алексей Садомов http://sadomovalex.blogspot.com/ Владимир Тимашков http://vtimashkov.wordpress.com/
  2. 2. Обзор способов выборки данных из списков и библиотек документов в Sharepoint Выборка с помощью цикла в object model
  3. 3. <ul><li>Преимущества : </li></ul><ul><li>простой и понятный old-school- ный C# синтаксис </li></ul><ul><li>compile-time проверка </li></ul><ul><li>не требует знаний CAML от разработчика </li></ul><ul><li>вполне применим на листах с небольшим числом записей </li></ul><ul><li>Недостатки : </li></ul><ul><li>на списках с большим числом записей производительность кода </li></ul><ul><li>очень низкая, т.к. каждая запись вытягивается из списка </li></ul><ul><li>(т.е. из content database ) отдельным SQL запросом </li></ul>
  4. 4. Выборка из SharePoint Content DB напрямую Преимущества: <ul><li>Максимальная скорость работы </li></ul><ul><li>Полная свобода действий  </li></ul>Недостатки: <ul><li>Схема content DB нигде не описана </li></ul><ul><li>Microsoft не гарантирует неизменность структуры БД </li></ul><ul><li>По сути, это хак системы </li></ul>
  5. 5. <ul><li>Выборка с помощью CAML: </li></ul><ul><li>SPQuery – позволяет делать выборку из одного списка на одном сайте (SPWeb) </li></ul><ul><li>SPSiteDataQuery – для выборки данных из нескольких списков, находящихся на разных сайтах в пределах одной сайт коллекции (SPSite) </li></ul><ul><li>PortalSiteMapProvider.GetCachedListItemsByQuery и GetCachedSiteDataQuery – реализованы на основе SPQuery и SPSiteDataQuery . Позволяет увеличить производительность за счет кеширования </li></ul><ul><li>в свойство (либо параметр) Query записывают SQL-like запросы, отформатированные в XML - фильтры и сортировка/группировка исполняются внутри SQL движка, а не в C# коде ( см. Query Schema http://msdn.microsoft.com/en-us/library/ms467521.aspx ) </li></ul>
  6. 6. Выборка с помощью SPQuery
  7. 7. <ul><li>Преимущества : </li></ul><ul><li>высокая производительность на больших списках </li></ul><ul><li>Недостатки : </li></ul><ul><li>необходимость знать синтаксис CAML- а </li></ul><ul><li>любая синтаксическая ошибка при форматировании XML вызывает исключение </li></ul><ul><li>кода менее читабельный – размер примера вырос в 2 раза, читать его становится существенно тяжелее по сравнению с первым подходом </li></ul><ul><li>при изменении фильтра надо перестроить дерево XML узлов – к примеру, узел каждой логической операции принимает толька 2 операнда, и в случае, если надо добавить еще одно условие в OR, то придется разбивать соответствующий подузел на 2 части, что еще больше увеличивает общую глубину дерева. </li></ul><ul><li>не поддерживает code-first approach – потеря compile-time проверок, i ntellisense, и т.п. </li></ul>
  8. 8. Использование Caml.NET http://camldotnet.codeplex.com
  9. 9. <ul><li>Преимущества : </li></ul><ul><li>меньшая вероятность сделать синтаксическую ошибку </li></ul><ul><li>высокая производительность – CAML.NET никак не влияет на производительность, это просто тонкая обертка поверх стандартного CAML синтаксиса, т.е. CAML.NET просто помогает подготавливать XML </li></ul><ul><li>compile-time проверка </li></ul><ul><li>Недостатки : </li></ul><ul><li>т.к. Caml.NET – это лишь обертка над стандартным CAML - ом, этот подход наследуют многие исходные проблемы CAML синтаксиса </li></ul>
  10. 10. Использование Camlex.NET http://camlex.codeplex.com <ul><li>Преимущества : </li></ul><ul><li>не требует знания CAML . Позволяет разработчику сконцентрироваться над непосредственной бизнес задачей, т.е. над тем Что сделать, а не над тем, Как это сделать </li></ul><ul><li>минимальный размер кода </li></ul><ul><li>фильтры можно перенести из 1-го подхода с помощью copy/paste </li></ul><ul><li>производительность на уровне чистого CAML запроса </li></ul><ul><li>отсутствие XML синтаксиса как такового. Используется естественный и интуитивно понятный синтаксис. Любые изменения фильтров – естественны для C# разработчиков, и не потребует перестройки XML дерева </li></ul><ul><li>разработчик остается к контексте C# - i ntellisense, compile-time проверки, code-first approach, и т.д. и т.п. </li></ul><ul><li>возможность указывать неконстантные выражения (переменные, вызовы методов, и т.п.) </li></ul><ul><li>полностью кастомизируемый результат </li></ul>
  11. 11. Рекомендации по созданию LINQ / Expression трансляторов: <ul><li>статья “Building a LINQ Provider” - </li></ul><ul><li>http://msdn.microsoft.com/en-us/vcsharp/ee672195.aspx </li></ul><ul><li>LINQExtender - http://linqextender.codeplex.com/ </li></ul><ul><li>LINQ IQuerable Toolkit - http://iqtoolkit.codeplex.com/ </li></ul><ul><li>MetaLinq - LINQ to Expressions - http://metalinq.codeplex.com/ </li></ul><ul><li>re-linq - http://relinq.codeplex.com/ </li></ul><ul><li>используйте CodePlex (TFS, SVN, Mercurial), а не BitBucket </li></ul><ul><li>используйте Mercurial, а не SVN </li></ul>
  12. 12. Архитектура Camlex.NET Интерфейс IQuery
  13. 13. Синтаксис lambda- выражений Native синтаксис String-based синтаксис Трансляция из lambda -выражения в CAML
  14. 14. Поддерживаемые операции http://camlex.codeplex.com/documentation
  15. 15. Динамические фильтры
  16. 16. Пример практического применения Построение динамических CAML запросов на основе параметров из query string : http://www.gotdotnet.ru/blogs/sadomovalex/8155/ http://example.com/_layouts/Custom/Search.aspx?Title=Meeting&Description=Sharepoint
  17. 17. Другие фичи, добавленные в версии 2.0 <ul><li>поиск по field id </li></ul><ul><li>поиск по lookup value и lookup id </li></ul>
  18. 18. <ul><li>официальный сайт проекта Camlex.NET http://camlex.codeplex.com/ </li></ul><ul><li>блоги авторов : </li></ul><ul><ul><li>http://sadomovalex.blogspot.com/ </li></ul></ul><ul><ul><li>http://vtimashkov.wordpress.com/ </li></ul></ul><ul><li>статья на habr -е http://habrahabr.ru/blogs/sharepoint/82787/ </li></ul><ul><li>статья на codeproject http://www.codeproject.com/KB/sharepoint/Camlex_NET.aspx </li></ul><ul><li>статья на codeproject http://www.codeproject.com/KB/sharepoint/Camlex_NET_2_0.aspx </li></ul><ul><li>статья на gotdotnet http://www.gotdotnet.ru/blogs/sadomovalex/8155/ </li></ul><ul><li>С aml.NET http://camldotnet.codeplex.com/ </li></ul><ul><li>U2U Caml Builder http://www.u2u.be/Res/Tools/CamlQueryBuilder.aspx </li></ul>Ссылки

×