Симон Робинсон - C# для профессионалов. Том II

Здесь есть возможность читать онлайн «Симон Робинсон - C# для профессионалов. Том II» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2003, ISBN: 2003, Издательство: Лори, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

C# для профессионалов. Том II: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «C# для профессионалов. Том II»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

C# для профессионалов
Для кого предназначена эта книга
Основные темы книги Платформа .NET предлагает новую среду, в которой можно разрабатывать практически любое приложение, действующее под управлением Windows, а язык C# — новый язык программирования, созданный специально для работы с .NET.
В этой книге представлены все основные концепции языка C# и платформы .NET. Полностью описывается синтаксис C#, приводятся примеры построения различных типов приложений с использованием C# — создание приложений и служб Windows, приложений и служб WWW при помощи ASP.NET, а также элементов управления Windows и WWW Рассматриваются общие библиотеки классов .NET, в частности, доступ к данным с помощью ADO.NET и доступ к службе Active Directory с применением классов DirectoryServices.
Эта книга предназначена для опытных разработчиков, возможно, имеющих опыт программирования на VB, C++ или Java, но не использовавших ранее в своей работе язык C# и платформу .NET. Программистам, применяющим современные технологии, книга даст полное представление о том, как писать программы на C# для платформы .NET.
• Все особенности языка C#
• C# и объектно-ориентированное программирование
• Приложения и службы Windows
• Создание web-страниц и web-служб с помощью ASP NET
• Сборки .NET
• Доступ к данным при помощи ADO NET
• Создание распределённых приложений с помощью NET Remoting
• Интеграция с COM, COM+ и службой Active Directory

C# для профессионалов. Том II — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «C# для профессионалов. Том II», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

IncreaseUnits(2, 10);

// шаг 2 - Сократить запас продукта ID=2 на 10 единиц

ReduceStock(2, 10);

} else {

// Эта транзакция должна быть отменена

// шаг 3 — Увеличить число единиц продукта ID=5 на 5

IncreaseUnits(5, 5);

// шаг 2 — Сократить запас продукта ID=5 на 5

единиц ReduceStock(5, 5);

}

// Если все прошло хорошо, закончить транзакцию.

ContextUtil.SetComplete();

return true;

}

// Этот код выполняется, если встречается ошибка.

catch (Exception e) {

// Отменить работу, которую выполнила эта функция.

ContextUtil.SetAbort();

return false;

}

}

public void ReduceStock(int ProductID, int amount) {

string source = "server ephemeral;uid=sa;pwd=garysql;database Northwind";

SqlConnection conn = new SqlConnection(source);

string command =

"UPDATE Products SET UnitsInStock = UnitsInStock - " +

amount.ToString() + " WHERE ProductID = " + ProductID.ToString();

conn.Open;

sqlCommand cmd = new SqlCommand(command, conn);

cmd.ExecuteNonQuery();

conn.Close();

}

public void IncreaseUnits(int ProductID, int amount) {

string source = "server=ephemeral;uid=sa;pwd=garysql;database=Northwind";

SqlConnection conn = new SqlConnection(source);

string command =

"UPDATE Products SET UnitsOnOrder = UnitsOnOrder +

" amount.ToString() + " WHERE ProductID = " + ProductID.ToString();

conn.Open();

SqlCommand cmd = new SqlCommand(command, conn);

cmd.ExecuteNonQuery();

conn.Close();

}

public void Restore() {

// Восстановить запас продукта ID=2

ReduceStock(2, -10);

// Восстановить единицы продукта для ID=2

IncreaseUnits(2, -10);

// Не требуется восстанавливать запас или единицы продукта для ID=5,

// так так транзакция должна быть отменена

}

}

}

Можно создать клиента для тестирования этой библиотеки классов. Здесь клиент создан так, что он ожидает, пока пользователь проверит содержимое базы данных, прежде чем восстановить базу данных в исходное состояние. Это позволяет увидеть результаты транзакций.

statiс void Main(string[] args) {

Purchase order = new Purchase();

Console.WriteLine("\nThis transaction should commit");

Console.WriteLine("ProductID = 2, ordering 10 items");

if (Order.PlaceOrder(true)) Console.WriteLine("Transaction Successful");

else Console.WriteLine("Transaction Unsuccessful");

Console.WriteLine("\nThis transaction should roll back");

Console.WriteLine("ProductID = 5, ordering 5 items");

if (Order.PlaceOrder(false)) Console.WriteLine("Transaction Successful");

else Console.WriteLine("Transaction Unsuccessful");

Console.WriteLine(

"\nTake a look at the database then hit enter to

+ "return database to original state");

Console.ReadLine();

Order.Restore();

}

Другие полезные методы ContextUtil

Рассмотрим еще пару методов класса ContextUtilкоторые могут оказаться полезны при программировании на C#.

Первый метод IsCallerInRole()предназначен для безопасности на основе ролей. В качестве входной переменной этот метод получает строковую переменную, содержащую имя определенной роли системы безопасности Windows 2000. Он возвращает булево значение, указывающее, является или нет пользователь, который в данный момент вызывает объект, членом указанной роли.

В примере кода ниже добавлена проверка, чтобы убедиться, что пользователь, пытающийся вызвать PlaceOrder(), является авторизованным членом роли Administrators. Если пользователь не является членом этой роли, то PlaceOrder()порождает исключение.

[AutoComplete]

public bool PlaceOrder(bool CommitTrans) {

if (!ContextUtil.IsCallerInRole("Administrators") {

throw new AccessViolationException("User is not authorized to place" + "orders.");

}

// Поместить код транзакции здесь

}

Вторым полезным методом класса ContextUtilявляется IsInTransaction(). Этот метод возвращает булево значение, указывающее, участвует ли объект в данный момент в транзакции.

Профессиональным программистам C# приходится иногда разрабатывать транзакционные компоненты для удаленной установки, которую они не контролируют. Чтобы убедиться, что сборки, требующие транзакционной поддержки, правильно для нее сконфигурированы, можно вызвать свойство IsInTransactionкласса ContextUtilи инициировать ошибку, если это свойство задано как false.

В примере кода ниже свойство IsInTransactionиспользуется для гарантии, что сборка правильно сконфигурирована, прежде чем ей будет разрешено ей начать какую-либо работу. Код порождает исключение, если IsInTransactionимеет значение false. Можно протестировать это, изменяя атрибут класса на TransactionalOptionDisabled.

[AutoComplete]

public bool PlaceOrder(bool CommitTrans) {

if (!ContextUtil.IsInTransaction) {

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «C# для профессионалов. Том II»

Представляем Вашему вниманию похожие книги на «C# для профессионалов. Том II» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «C# для профессионалов. Том II»

Обсуждение, отзывы о книге «C# для профессионалов. Том II» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x