Открыть список
Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Microsoft пополняет арсенал инструментов Веб 2.0

Чулан
Технология Windows Presentation Foundation, ранее известная под кодовым названием Avalon, является козырем Microsoft в качестве удобной платформы для создания веб-приложений следующего поколения. Вместе с языком XAML они станут дополнением для других инструментов Веб 2.0, которые выпускает Microsoft, включая Atlas и LINQ.
Читать дальше →
Рейтинг 0
Просмотры315
Комментарии 2

Основы Linq. Linq и n-уровневая архитектура

Чулан
Майкрософот предоставило новое легкое в освоении и очень мощное и гибко расширение языков .NET для обработки данных под названием Linq.

Как в многоуровневых приложениях спроектировать провайдер данных так, что бы получить набор объектов?

К примеру , есть таблица tbCustomers ((Int64)CustID, (String)Name, (int32)Age) и есть класс Customers:

publicclass Customers
{
    private Int64 _CustID;
    public Int64 CustID
    {
        get { return _CustID; }
        set { _CustID = value; }
    }

    private string _Name;
    public string Name
    {
        get { return _Name; }
        set { _Name = value; }
    }

    //Тип Int32 допускающее значение null
    private Int32? _Age;
    public Int32?Age
    {
        get { return _Age; }
        set { _Age = value; }
    }

    //Инициализаторы
    public Customers()
    {
    }
   
    public Customers(Int64 CustID, string Name, Int32? Age)
    {
        _CustID = CustID;
        _Name = Name;
        _Age = Age;
    }

    //Получение набора объектов из поставщика данных
    publicstatic List<Customers> GetCustomers()
    {
        return CustomersData.GetAllCustomers();
    }
}

и необходимо получить из поставщика набор объектов Customers.

Стандартное решение этого вопроса в .NET2.0 является использование пространства имен System.Data.SqlClient:

publicstatic class CustomersData
{
    //ИспользованиеSqlClient
    public static List<Customers> GetAllCustomers()
    {
        List<Customers> lst = new List<Customers>();
        using (SqlConnection conn = new SqlConnection(«Data Source=…»))
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand(«SELECT CustID, Name, Age FROM tbCustomers», conn);
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                lst.Add(new Customers((Int64)reader[«CustID»], (String)reader[«Name»], (Int32)?reader[«Age»]));
            }
        }
        return lst;
    }
}

При использовании Linqмы можем получить набор данных из анонимных типов используя инициализатор объекта, т.е.

publicstatic class CustomersData
{
    //ИспользованиеLinq
    public static List<Customers> GetAllCustomers()
    {
        LinqDcDataContext db=new LinqDcDataContext();
        IEnumerable<Customers> result = db.tbCustomers.Select(c => new Customers(c.CustID, c.Name, c.Age));
        //ПриводимнаборIEnumerable<Customers> кList<Customers>
        return new List<Customers>(result);
    }
}




Оригинал статьи Linq в n-уровневой архитектуре
Всего голосов 5: ↑5 и ↓0 +5
Просмотры1.7K
Комментарии 29

Где используется кодогенерация

Программирование
Меня поразило то, что так много людей в комментариях к предыдущей статье высказывают мнение о том, что кодогенерация — это неправильная техника. Давайте посмотрим на некоторые примеры того, как она используется сейчас.
Читать дальше →
Всего голосов 24: ↑20 и ↓4 +16
Просмотры7.6K
Комментарии 47

Работаем с LINQ to XML

.NET
В первой статье в блоге .NET «Работаем с XML» в комментариях народ потребовал статьи LINQ to XML. Что же, попробуем раскрыть принципы работы этой новой технологии от Microsoft.

Создадим базу для ведения каталога аудиозаписей.
Читать дальше →
Всего голосов 32: ↑30 и ↓2 +28
Просмотры123K
Комментарии 66

LINQ: еще один вариант использования

.NET
LINQ – замечательная вещь, которая обладает огромным потенциалом. Всем заинтересованным программистам известны LINQ to SQL или LINQ to XML. Я бы хотел расширить этот список и привести простейший пример другого применения LINQ.
Читать дальше →
Всего голосов 24: ↑19 и ↓5 +14
Просмотры4.4K
Комментарии 31

Провайдеры ado.net entity framework

.NET
Как известно, в середине года в сервиспаке к .net framework 3.5 и VS2008 появятся некоторые расширения ado.net. Одним из них станет ado.net entity framework, который доступен сейчас для скачивания в версии beta 3 здесь. На данный момент это уже вполне рабочая реализация, которая достойна самого пристального внимания. Ей не хватает некоторых инструментов для удобного моделирования, но надеюсь, в финальной версии все будет.

Хорошая новость состоит в том, что недавно разработчки ado.net на своем блоге сообщили, что для текущей версии entity framework реализованы бета версии провайдеров:
— компания Core Lab выпустила ado.net провайдер для доступа к БД Oracle, MySQL, PostgreSQL and SQLite;
— компания IBM выпустила свой провайдер для DB2, IDS and U2 (честно говоря, два последних сокращения мне не известны);
— на конференции MySQL в Санта Клара бал продемонстрирован доступ к MySQL через entity framework;
— Npgsql выпустила бета версию провайдера для PostgreSQL который работает с Entity Framework.

Похоже, что LINQ и Entity Framework получают все больше возможностей стать популярными не только среди разработчиков баз данных MS SQL, но и всех других самых распространенных БД.

Ссылка на блог разработчиков ado.net blogs.msdn.com/adonet
Всего голосов 8: ↑7 и ↓1 +6
Просмотры4.4K
Комментарии 2

Интеграция данных: REST + LINQ = ADO.NET Data Services

.NET
Одним из интересных аспектов SOA является интеграция данных. Выдержка из Wikipedia:

Интеграция данных – это процесс комбинирования данных из разнообразных источников и предоставление их пользователи в неком унифицированном виде. Необходимость в разработке этого процесса появляется в различных областях. Например, в коммерческой (когда двум схожим компаниям необходимо объединить свои базы данных) и в научной (объединение данных из нескольких разных хранилищ биометрической информации).


Необходимость в таком виде интеграции возникла в одном из текущих проектов. Со стороны разработчика хотелось получить максимально прозрачный API, не зависящий от способа реализации и предоставляющий удобный и максимально "родной" механизм работы с данными.

Перейти к статье
Всего голосов 16: ↑13 и ↓3 +10
Просмотры1.8K
Комментарии 0

Expression Trees и оптимизация Reflection

.NET
В последней версии .NET Framework среди новых возможностей было добавлено средства метапрограммирования под названием Expression Trees. На базе этой технологии, а именно основываясь на том принципе, что выражения на "обычном" языке программирования могут автоматически преобразовываться в синтаксические деревья, была разработана технология LINQ.

Но в этом посте речь пойдет о другой области применения возможности динамически собирать expression trees и компилировать их в работоспособный код. И эта область — оптимизация Reflection.

кросс-пост с персонального блога
читать далее
Всего голосов 38: ↑29 и ↓9 +20
Просмотры5.5K
Комментарии 29

Бесплатные книги от MS Press

IT-компании
В рамках празднования своего 25-летия издательство MS Press выставляет в бесплатный доступ электронные версии некоторых своих книг (на английском).

В настоящий момент выставлено 7 книг (3 из них выставлены частично), о которых речь пойдет ниже.

Читать дальше →
Всего голосов 42: ↑27 и ↓15 +12
Просмотры1.4K
Комментарии 8

LINQ to SQL: паттерн Repository

.NET
Бар LINQВ этой статье будет рассмотрен один из вариантов реализации паттерна репозиторий на базе LINQ to SQL.

Сегодня LINQ to SQL – это одна из технологий Microsoft, предназначенная для решения проблемы объектно-реляционного отображения (object-relational mapping). Альтернативная технология Entity Framework является более мощным инструментом, однако у LINQ to SQL есть свои преимущества – относительная простота и низкоуровневость.

Данная статья — это попытка продемонстрировать сильные стороны LINQ to SQL. Паттерн репозиторий отлично ложится на парадигму LINQ to SQL.
Читать дальше →
Всего голосов 36: ↑29 и ↓7 +22
Просмотры51.5K
Комментарии 25

Введение в объектно-ориентированные базы данных

Разработка веб-сайтов
ООСУБДОбъектно-ориентированные базы данных – базы данных, в которых информация представлена в виде объектов, как в объектно-ориентированных языках программирования.

Применять или не применять объектно-ориентированные системы управления базами данных (ООСУБД) в реальных проектах сегодня? В каких случаях их применять, а в каких нет?

Вот преимущества использования ООСУБД:
  • Отсутствует проблема несоответствия модели данных в приложении и БД (impedance mismatch). Все данные сохраняются в БД в том же виде, что и в модели приложения.
  • Не требуется отдельно поддерживать модель данных на стороне СУБД.
  • Все объекты на уровне источника данных строго типизированы. Больше никаких строковых имен колонок! Рефакторинг объектно-ориентированной базы данных и работающего с ней кода теперь автоматизированный, а не однообразный и скучный процесс.
Интересно? Тогда стоит попробовать!

В статье описано все, что требуется для начала работы с ООСУБД db4o.

Читать дальше →
Всего голосов 80: ↑77 и ↓3 +74
Просмотры36.9K
Комментарии 59

5я встреча Петербургской группы ALT.NET

.NET
5я встреча Петербургской группы ALT.NET пройдет в четверг, 7го Мая в 19:00.
Встречи группы проходят по адресу Биржевая Линия дом 14, офис 409 (4й этаж).
Программа 19:00 – 21:00 — Паттерны Repository и Specification.
Применение Linq2xxx (на примере Linq to NHibernate), Артем Смирнов
Читать дальше →
Всего голосов 2: ↑1 и ↓1 0
Просмотры388
Комментарии 1

Кэширование Linq2Sql таблиц с автоматической инвалидацией кэша

.NET
Как продолжение этого топика про кэш хочу предложить вам свое, частично стыренное решение для кеширования не очень больших таблиц.
Читать дальше →
Всего голосов 13: ↑9 и ↓4 +5
Просмотры956
Комментарии 5

Языки предметной области Domain-Specific Languages (DSL)

.NET

Что это?


Это некоторая форма компьютерных языков, разрабатываемых для специфичной предметной области. Это то, что позволяет вам (разработчикам ПО) лучше взаимодействовать с носителями “доменных знаний”. А так же позволяет более лаконично оформлять бизнес-логику. Это то, что представляет собой, к примеру, SQL, Linq, многое из синтаксиса Ruby On Rails.
Читать дальше →
Всего голосов 18: ↑10 и ↓8 +2
Просмотры2.4K
Комментарии 3

LINQ to Events — декларативная работа с асинхронным интерфейсом

.NET
Наткнулся на очень интересное расширение для LINQ позволяющее декларативно работать с асинхронным интерфейсом ( themechanicalbride.blogspot.com/2009/07/introducing-rx-linq-to-events.html ). Сейчас расширение существует как часть Silverlight Toolkit (Rx framework), но в последствии станет частью .NET 4.0 (System.Reactive.dll).

Идея в том, чтобы стереть границы между IEnumerable и IObservable интерфейсами (читай между Iterator и Observer паттернами). Асинхронные события представляются как последовательность данных, возвращаемых будто бы по yield return. А это в свою очередь позволяет работать с данной последовательностью через LINQ в функциональном, декларативном стиле.

Например, можно использовать LINQ для формулирования выражений о перетаскивании контролов:

IObservable<Event<MouseEventArgs>> draggingEvent =
    from mouseLeftDownEvent in control.GetMouseLeftDown()
    from mouseMoveEvent in control.GetMouseMove().Until(control.GetMouseLeftUp())
    select mouseMoveEvent;


Выражение гласит следующее: для каждого нажатия на левую кнопку мыши получить каждое событие перемещения мыши до тех пор, пока левая кнопка мыши не будет отжата.

Таким образом from позволяет декларативно описывать последовательность событий. В противном случае, потребовалось бы создавать конечный автомат и устанавливать флаг нажатия на левую кнопку мыши. А в обработчике перемещения мыши тестировать этот флаг и изменять поведение обработчика в зависимости от него. Использование же Rx фреймворка позволяет описать последовательность событий декларативно и не вводить дополнительные переменные.

Подобным образом можно тестировать GUI где переходы из состояния в состояние не мгновенны, а происходят с анимацией, окончания которой необходимо дождаться прежде чем производить обращения к свойствам контрола.

Rating rating = new Rating();
IObservable<Unit> test =
   ObservableExtensions
      .DoAsync(() => TestPanel.Children.Add(rating)) // добавить контрол на панель
      .WaitFor(TestPanel.GetLayoutUpdated()) // подождать пока появится
      .DoAsync(() => rating.Value = 1.0) // установить свойство
      .WaitFor(
         rating
            .GetActualValueChanged() // ждать пока не установится
            .SkipWhile(actualValueChangedEvent => // новое значение свойства
               actualValueChangedEvent.EventArgs.NewValue != rating.Value))
      .Assert(() => rating.GetRatingItems().Last().ActualValue == 1.0); // Assert

// очистка ресурсов по завершению теста
test.Subscribe(() => TestPanel.Children.Remove(rating));


Автор оригинального поста обещает в ближайшее время осветить межпоточное взаимодействие с использованием этого фреймворка.

Области применения


  • Построение КА для визуального интерфейса пользователя.
  • Координирование событий Workflow.
  • Координирование сообщений с периферийными устройствами. В том числе с сетью (веб-службами) и с любым асинхронным IO.
  • Работа с цепочками событий.

Адаптация под WPF


silverlight.codeplex.com/SourceControl/ListDownloadableCommits.aspx
evain.net/blog/articles/2009/07/30/rebasing-system-reactive-to-the-net-clr

Похоже, ветки кода, адаптированной под WPF, пока нет, но обещают добавить в .NET 4.0. Однако уже сейчас можно взять сырцы и поковырять вручную.

Bindable LINQ


Развитие идеи — осуществление биндинга к декларативно описанным цепочкам событий. При изменении зависимого свойства, GUI перерисовывается чтобы отразить изменения. В Rx этого сейчас нет. Однако подобная связь с INotifyPropertyChanged есть в следующих проектах (сами проекты пока не смотрел):
Всего голосов 47: ↑32 и ↓15 +17
Просмотры1K
Комментарии 6

Встреча Уральской юзер-группы .NET

.NET
Вчера, 18 ноября 2009 года состоялась очередная встреча Уральской группы пользователей .NET. На встрече присутствовал гость – Никита Шамгунов разработчик из команды Sql Server. Никита рассказывал про перспективную технологию обработки данных в реальном времени StreamInsight и о работе в команде разработчиков в Microsoft.

Вторым докладчиком выступил Станислав Черничкин, который рассказал о нововведениях в ASP.NET MVC 2 и о некоторых аспектах функционального программирования и LINQ.
Подробнее о темах докладов под катом.
Читать дальше →
Всего голосов 12: ↑9 и ↓3 +6
Просмотры695
Комментарии 4

LINQ to Objects на примерах

.NET
Казалось бы .NET Framework 3.5 и революционный LINQ в частности появился у разработчиков достаточно давно, но не все мои коллеги еще четко представляют, что это такое и с чем это «едят». Поэтому я решил написать эдакую вводную статью для C# программистов, чтобы на наглядных примерах показать, как LINQ позволяет экономить время на рутинных вещах, таких как сортировка, аггрегация, поиск и т.д.

Сначала давайте определимся, что речь пойдет о LINQ to Objects. LINQ to SQL, XML, Entities и т.д. в этой статье не рассматриваются, хотя я уверен, что бОльшая часть приведенных примеров будет работать и там. Помимо этого, начиная с Silverlight 2.0, LINQ to Objects доступен и там.
Читать дальше →
Всего голосов 11: ↑8 и ↓3 +5
Просмотры43.3K
Комментарии 12

Лучшие посты Bart De Smet'а за 2009 год в PDF

Чулан
Bart De Smet порой пишет очень интересные и мозголомные вещи. Вот только одна беда, на то чтобы осилить один пост, может уйти достаточно много времени.

Недавно «подарил» себе на день рождения Pocket Book 301 (коим полностью доволен), а потому решил скачать любимые посты на читалку. Чтобы уже потом, никуда не спеша, разбираться, лёжа на диване.

Для конвертации сохранял whole page, открывал в Word 2007, убирал мусор, и сохранял в PDF. Получились очень аккуратные PDF'ки. Решил поделиться с сообществом, вдруг кому пригодится.

http://tinyurl.com/yhmgh6s

В папке лежат следующие посты:

(Mis)using C# 4.0 Dynamic – Type-Free Lambda Calculus, Church Numerals, and more

LINQ to Ducks – Bringing Back The Duck-Typed foreach Statement To LINQ

Type-Free Lambda Calculus in C#, Pre-4.0 – Defining the Lambda Language Runtime (LLR)

Taming Your Sequence’s Side-Effects Through IEnumerable.Let

Statement Trees With Less Pain – Follow-Up on System.Linq.Expressions v4.0

Expression Trees, Take Two – Introducing System.Linq.Expressions v4.0
Всего голосов 4: ↑3 и ↓1 +2
Просмотры203
Комментарии 2