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

Презентация:



Advertisements
Похожие презентации
ADO.NET Data Services Данила Корнев Developer Evangelist Microsoft Россия Установите Silverlight 1.0 для просмотра демонстрации:
Advertisements

SQL-injections for dummies. Что это? Способ несанкционированного доступа к данным, хранящимся в БД, основанный на внедрении в запрос произвольного SQL-
Microsoft TechDays Сергей Попов Независимый разработчик.
Microsoft TechDays Михаил Черномордиков Developer Evangelist, Microsoft
АИС Аптекарь 8.1 Управление логикой шаблонов отчетов.
WordPress это система управления содержимым сайта (CMS) с открытым исходным кодом, распространяемая под лицензией GNU GPL. Написана на PHP, в качестве.
Расширение функциональности с использованием метаданных и аспектно-ориентированного программирования Александр Межов ОАО ЧЭМК
Михаил Черномордиков Developer Evangelist, Microsoft Россия
Клиентские технологии Silverlight 3, Internet Explorer 8 Гайдар Магдануров t: e:
ПРЕЗЕНТАЦИЯ НА ТЕМУ: ПРЕЗЕНТАЦИЯ НА ТЕМУ: ВИДЫ ТРАНСЛЯЦИИ Составил: Ревнивцев М.В Преподаватель: Кленина В.И.
OOП Инна Исаева. Подпрограмма – это большая программа, разделённая на меньшие части. В программе одна из подпрограмм является главной. Её задача состоит.
ЛАБОРАТОРНАЯ РАБОТА 1 ПРОЕКТИРОВАНИЕ И РЕАЛИЗАЦИЯ ТАБЛИЦ, ИСПОЛЬЗУЕМЫХ В ТРАНСЛЯТОРЕ Рейн Т. С.
Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
Oracle SQL Developer Data Modeler 3.0 Опыт практического использования при построении хранилищ данных Носенко Виктор Начальник отдела хранилищ.
ИСПОЛЬЗОВАНИЕ ТЕХНОЛОГИЙ ВЕБ 2.0 (БЛОГ, ВИКИ, СОЦИАЛЬНЫЕ ЗАКЛАДКИ) В ПРЕПОДАВАНИИ ИНОСТРАННЫХ ЯЗЫКОВ учитель английского языка МБОУ СОШ 4 Козырева Марина.
Источники данных LINQ РУБД. LINQ (Language Integrated Query, язык интегрированных запросов ) это технология, которая позволяет разработчикам формировать.
Вспомогательный алгоритм Вспомогательный алгоритм Вспомогательный алгоритм Вспомогательный алгоритм Метод пошаговой детализации Метод пошаговой детализации.
Визуализация и моделирование с использованием UML в Visual Studio 2010 Ultimate Евгений Чигиринский Microsoft.
Презентация Компоненты SUPERTABLE для программ семейства 1С 7.7 Авторы: Котомин Арсений Лазуков Константин (
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – локализация ресурсов приложения Из цикла лекций «Технологии.
Транксрипт:

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

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

Преимущества: простой и понятный old-school-ный C# синтаксис compile-time проверка не требует знаний CAML от разработчика вполне применим на листах с небольшим числом записей Недостатки: на списках с большим числом записей производительность кода очень низкая, т.к. каждая запись вытягивается из списка (т.е. из content database) отдельным SQL запросом

Выборка из SharePoint Content DB напрямую Преимущества: Максимальная скорость работы Полная свобода действий Недостатки: Схема content DB нигде не описана Microsoft не гарантирует неизменность структуры БД По сути, это как системы

Выборка с помощью CAML: SPQuery – позволяет делать выборку из одного списка на одном сайте (SPWeb) SPSiteDataQuery – для выборки данных из нескольких списков, находящихся на разных сайтах в пределах одной сайт коллекции (SPSite) PortalSiteMapProvider.GetCachedListItemsByQuery и GetCachedSiteDataQuery – реализованы на основе SPQuery и SPSiteDataQuery. Позволяет увеличить производительность за счет кэширования в свойство (либо параметр) Query записывают SQL-like запросы, отформатированные в XML - фильтры и сортировка/группировка исполняются внутри SQL движка, а не в C# коде (см. Query Schema

Выборка с помощью SPQuery

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

Использование Caml.NET

Преимущества: меньшая вероятность сделать синтаксическую ошибку высокая производительность – CAML.NET никак не влияет на производительность, это просто тонкая обертка поверх стандартного CAML синтаксиса, т.е. CAML.NET просто помогает подготавливать XML compile-time проверка Недостатки: т.к. Caml.NET – это лишь обертка над стандартным CAML-ом, этот подход наследуют многие исходные проблемы CAML синтаксиса

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

Рекомендации по созданию LINQ / Expression трансляторов: статья Building a LINQ Provider - aspx LINQExtender - LINQ IQuerable Toolkit - MetaLinq - LINQ to Expressions - re-linq - используйте CodePlex (TFS, SVN, Mercurial), а не BitBucket используйте Mercurial, а не SVN

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

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

Поддерживаемые операции

Динамические фильтры

Пример практического применения Построение динамических CAML запросов на основе параметров из query string:

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

официальный сайт проекта Camlex.NET блоги авторов: статья на habr-е статья на codeproject статья на codeproject aspx aspx статья на gotdotnet Сaml.NET U2U Caml Builder Ссылки