Pull to refresh

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

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

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

Lumber room
Майкрософот предоставило новое легкое в освоении и очень мощное и гибко расширение языков .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-уровневой архитектуре
Total votes 5: ↑5 and ↓0 +5
Views 1.9K
Comments 29

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

Programming *
Меня поразило то, что так много людей в комментариях к предыдущей статье высказывают мнение о том, что кодогенерация — это неправильная техника. Давайте посмотрим на некоторые примеры того, как она используется сейчас.
Читать дальше →
Total votes 24: ↑20 and ↓4 +16
Views 8.7K
Comments 47

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

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

Создадим базу для ведения каталога аудиозаписей.
Читать дальше →
Total votes 32: ↑30 and ↓2 +28
Views 127K
Comments 66

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

.NET *
LINQ – замечательная вещь, которая обладает огромным потенциалом. Всем заинтересованным программистам известны LINQ to SQL или LINQ to XML. Я бы хотел расширить этот список и привести простейший пример другого применения LINQ.
Читать дальше →
Total votes 24: ↑19 and ↓5 +14
Views 4.5K
Comments 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
Total votes 8: ↑7 and ↓1 +6
Views 4.6K
Comments 2

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

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

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


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

Перейти к статье
Total votes 16: ↑13 and ↓3 +10
Views 1.9K
Comments 0

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

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

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

кросс-пост с персонального блога
читать далее
Total votes 38: ↑29 and ↓9 +20
Views 6K
Comments 29

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

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

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

Читать дальше →
Total votes 42: ↑27 and ↓15 +12
Views 1.4K
Comments 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.
Читать дальше →
Total votes 36: ↑29 and ↓7 +22
Views 53K
Comments 25

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

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

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

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

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

Читать дальше →
Total votes 80: ↑77 and ↓3 +74
Views 44K
Comments 59

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

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

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

.NET *

Что это?


Это некоторая форма компьютерных языков, разрабатываемых для специфичной предметной области. Это то, что позволяет вам (разработчикам ПО) лучше взаимодействовать с носителями “доменных знаний”. А так же позволяет более лаконично оформлять бизнес-логику. Это то, что представляет собой, к примеру, SQL, Linq, многое из синтаксиса Ruby On Rails.
Читать дальше →
Total votes 18: ↑10 and ↓8 +2
Views 2.5K
Comments 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 есть в следующих проектах (сами проекты пока не смотрел):
Total votes 47: ↑32 and ↓15 +17
Views 1.1K
Comments 6

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

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

Вторым докладчиком выступил Станислав Черничкин, который рассказал о нововведениях в ASP.NET MVC 2 и о некоторых аспектах функционального программирования и LINQ.
Подробнее о темах докладов под катом.
Читать дальше →
Total votes 12: ↑9 and ↓3 +6
Views 744
Comments 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 доступен и там.
Читать дальше →
Total votes 11: ↑8 and ↓3 +5
Views 45K
Comments 12

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

Lumber room
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
Total votes 4: ↑3 and ↓1 +2
Views 293
Comments 2