2010-06-11 7 views
0

Предположим, я хочу создать службу (без состояния) WCF с тремя методами, открытыми в конечной точке: performSqlOperationA(), performSqlOperationB() и performSqlOperationC(). Каждый метод вставляет данные в базу данных SQL.Какова хорошая практика для обработки SQL-соединений в вызове WCF?

Способ, которым я видел вещи в моем офисе, каждый метод начинался с кода, чтобы инициализировать объект SqlConnection. Каждый метод заканчивается кодом, чтобы безопасно распоряжаться им.

Что такое хорошая практика для кодирования этих методов WCF, чтобы объект SqlConnection был инициализирован и размещен в каждом методе без необходимости выполнять эти действия в каждом методе? Я знаю, что у меня может быть инициализировано соединение в конструкторе для класса для методов WCF, но я не знаю об утилизации его ... Звонки не могут быть завернуты в блок using.

Одно из решений, с которыми я знаком, это PostSharp, что позволяет мне устанавливать атрибут, который автоматически запускает определенный код в начале и конце каждого вызова метода, но было бы очень желательно сделать это с помощью только .net framework.

ответ

3

Лучшей практикой является инициализация и размещение объекта SqlConnection в каждом вызове метода (или в частном методе доступа к данным, вызванном из вашей служебной операции WCF) с помощью инструкции using.

public void performSqlOperationA() 
{ 
    ... 
    using(SqlConnection connection = ...) 
    { 
     ... 
    } 
    ... 
} 

Что вам не нравится в этом?

+0

То, что мне не нравится в этом, заключается в том, что я должен делать это в каждом методе. Кажется, что должно быть какое-то отношение к этой избыточности. –

+0

Вы можете инкапсулировать различные биты (например, получить строку подключения и создать соединение), но нет лучшего способа сделать это. Вы также можете использовать ORM, но у вас все равно будет эквивалент. – Joe

+0

Я дал ответ +1, но похоже, что для OperationContract будет какой-то способ подключения, а некоторые - с параллелизмом. – Paparazzi

Смежные вопросы