Feel Good.

27 мая 2010

XML elements или XML attributes

Всегда проектируя структуру XML файла, Вы наверняка задумывались, где хранить данные: в атрибуте (XML attribute) или все-таки в узле (XML element). Это довольно важный вопрос, который нужно решить раз и навсегда еще на этапе проектирования XSD схемы, иначе последующее переделывание XSD схемы не есть хорошая практика. Обратите внимание на два XML файла:

<?xml version="1.0" encoding="utf-8" ?>

<!-- Храним данные в атрибуте -->

<root>

    <child data="some data"></child>   

</root>

 

 

<?xml version="1.0" encoding="utf-8" ?>

<!-- Храним данные в узле -->

<root>

    <child>

        <data>

            some data

        </data>

    </child>

</root>


14 мая 2010

Thread-safe events

Если Вы пишите многопоточное приложение, то всегда стоит задумываться о потоко-безопасности (thread safe). Сегодня затронем важную тему про то, как правильно возбуждать событие (event raise), доступ к которому осуществляется в нескольких потоках.

class SomeClass

{

    // Доступ к данному событию происходит

    // в нескольких потоках.

    public event EventHandler SomeEvent;

}


Стандартный, потоко-безопасный (thread safe) шаблон вызова события выглядит следующим образом:

// Потоко-безопасный вызов.

public void OnSomeEventThreadSafe(EventArgs args)

{

    // Очень важно, сделать копию события:

    EventHandler handler = SomeEvent;

 

    // И далее работать только с ней:

    if (handler != null)

    {

        handler(this, args);

    }           

}


11 мая 2010

Совместное использование Repository с Unit Of Work.

В этом посте я решил поделиться мыслями о том, как можно применить паттерн Repository совместно с паттерном Unit Of Work (UOW). Рассмотрим это на конкретном примере. Для этого введем две сущности: Customer и Order, состоящим в отношении один-ко-многим соответственно.

04 мая 2010

Domain-Driven Design: создание домена

На днях прочитал полезную статью от Александра Бындю Domain-Driven Design: создание домена, подумав, я решил поделиться своим мнением и рассказать о том, как обычно разворачиваю домены в своих проектах, в частности рассказать о том, как для этого можно задействовать Entity Framework.