Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции OOP c#.doc
Скачиваний:
44
Добавлен:
22.09.2019
Размер:
3.38 Mб
Скачать

Литература

  1. R. Cameron, D. Michalk. Building ASP.NET Server Controls – APress, 2004.

  2. B. Hamilton, M. MacDonald. ADO.NET in a Nutshell – O’Reilly, 2003.

  3. Alex Homer et al. Professional ASP.NET 1.1 – Wrox Press, 2004.

  4. Hoang Lam, Thuan L. Thai. .NET Framework Essentials – O’Reilly, 2003.

  5. M. MacDonald, M. Szpuszta. Pro ASP.NET 2.0 in C# 2005 – APress, 2005.

  6. S. McLean, J. Naftel, K. Williams. Microsoft .NET Remoting – Microsoft Press, 2003.

  7. F. Muhammad, M. Milner. Real World ASP.NET Best Practices – APress, 2003.

  8. Jeff Prosise. Programming Microsoft .NET (core reference) – Microsoft Press, 2002.

  9. К. Ватсон. C#. – М.: Лори, 2005.

  10. Дубовцев А. В. Microsoft .NET в подлиннике. – СПб.: БХВ-Петербург, 2004.

  11. Рихтер Дж. Программирование на платформе Microsoft .NET Framework. – М.: Русская редакция, 2002.

  12. Сеппа Д. Microsoft ADO.NET. – М.: Русская редакция, 2003

1 Произносится как «дот-нэт».

1 Данные требования не продиктованы исполняющей средой, но заложены в компиляторы языков для .NET.

1 Если бы создавался только один объект, соответствующий атрибуту, то изменение данных в нем отразилось бы на всех запросах к атрибуту.

1 В C# 2.0 поддержка перебора реализуется при помощи итераторов.

1 Попытка работать с несуществующим элементом генерирует исключение ArgumentOutOfRangeException.

1 Данное правило можно обойти при помощи файла конфигурации сборки.

1 Метод Load() имеет несколько перегруженных версий.

2 Описание типа BindingFlags смотрите в параграфе, посвященном механизму отражения.

1 В Java имеется сходная технология – Remote Method Invocation (RMI).

1 Понятие форматера встречалось при рассмотрении сериализации в .NET Framework.

2 Вид активации определяется настройкой инфраструктуры Remoting, а не типом. Следовательно, объекты одного типа могут иметь различную активацию в разных приложениях.

1 Структура System.TimeSpan служит для представления временных интервалов. Время хранится с точностью до 100 наносекунд.

2 Диспетчер лицензий находится на сервере.

3 Диспетчер проверяет таблицу каждые 10 секунд. Однако время опроса можно изменить. В следующем фрагменте кода периодичность опроса устанавливается равной 5 минутам:

LifetimeServices.LeaseManagerPollTime = System.TimeSpan.FromMinutes(5);

1 Использование в качестве сервера консольного приложения – не лучшее решение. В примере таким образом мы поступаем исключительно для простоты.

1 Класс System.Exception реализует интерфейс ISerializable. Если создается класс для пользовательской исключительной ситуации, то этот класс должен быть помечен атрибутом [Serializable], а также включать конструктор следующего вида:

protected YourApplicationException(SerializationInfo info,

StreamingContext ctx):base(info,ctx) {...}

Если класс для исключительной ситуации добавляет к базовому классу ApplicationException какие-либо поля, требуется программно записать эти поля в поток сериализации. Для этого переписывается метод GetObjectData() и поля добавляются в объект SerializationInfo как показано в следующем примере (обратите внимание на пустые перегруженные конструкторы):

[Serializable]

public class ExampleEx: ApplicationException {

public ExampleEx(): base() { }

public ExampleEx(string message): base(message) { }

public ExampleEx(string message,Exception inner):base(message,inner){}

protected ExampleEx(SerializationInfo info, StreamingContext context):

base(info, context) {

m_strMachineName = info.GetString("m_strMachineName");

}

public override void GetObjectData(SerializationInfo info,

StreamingContext context) {

info.AddValue("m_strMachineName", m_strMachineName, typeof(String));

base.GetObjectData(info,context);

}

private string m_strMachineName = Environment.MachineName;

public string MachineName {

get { return m_strMachineName; }

set { m_strMachineName = value; }

}

}

Записанные поля доступны в конструкторе исключительной ситуации (параметр info). Методы класса SerializationInfo, такие как GetValue() или, например, GetString() позволяют прочесть их.

1 Инфраструктура Remoting создает на сервера для каждого типа с клиентской активацией SAO-объект, публикуемый по адресу http://<hostname>:<port>/<AppName>/RemoteActivationService.rem. Этот SAO-объект принимает запросы клиентов, создает CAO-объекты на сервере и передает ссылки на созданные объекты клиентам.

1 Настройка на стороне сервера не является обязательной, так как HTTP-канал на сервере автоматически использует два форматера и выбирает подходящий в зависимости от настроек клиента.

1 Если клиент использует объекты с клиентской активации более чем с одного сервера, требуется указать в конфигурационном файле несколько секций <client>.

1 Возможно программное подключение провайдеров, однако этот способ в лекциях не рассматривается.

1 Что обрабатывается – сообщение или поток – зависит от места канального приемника в цепочке: до форматера или после него.

1 Имена приведенных классов не точны. Точное имя специфично для поставщика. Так, поставщик данных для SQL Server содержит классы SqlConnection, SqlCommand, SqlDataReader, SqlDataAdapter.

2 Указаны типы данных, применяемые в Microsoft SQL Server 2000.

1 Следует учитывать, что пул существует в рамках одного домена. Разные домены приложения имеют разные пулы.

1 Более точно, вначале производится поиск соответствия с учетом регистра, если соответствие не найдено – повторный поиск без учета регистра.

2 С помощью метода ридера GetName() можно узнать имя конкретного столбца, указав его номер. Метод GetDataTypeName() принимает целое число, соответствующее порядковому номеру столбца, и возвращает в строковом представлении тип данных этого столбца.

1 Это имеет смысл в том случае, если выполняется команда, которая комбинирует несколько SQL-операторов. Например, команда с таким текстом:

SELECT * FROM Disks;

DELETE FROM Disks WHERE id = '1'

1 Для поставщика MS SQL Server таблица с описанием содержит следующие столбцы: ColumnName, ColumnOrdinal, ColumnSize, NumericPrecision, NumericScale, IsUnique, IsKey, BaseServerName, BaseCatalogName, BaseColumnName, BaseSchemaName, BaseTableName, DataType, AllowDBNull, ProviderType, IsAliased, IsExpression, IsIdentity, IsAutoIncrement, IsRowVersion, IsHidden, IsLong, IsReadOnly. За более подробной информацией обратитесть к справке по .NET Framework.

1 В MS SQL Server при помощи конструкции RETURN можно вернуть из хранимой процедуры только значения целого типа. Для возврата значений других типов следует использовать output-параметры.

1 В данном параграфе нас будет интересовать только команда для выборки данных.

1 Существует перегруженная версия метода Fill() для заполнения одной таблицы (вне набора):

DataTable dt = new DataTable();

da.Fill(dt);

1 При занесении информации в таблицу при помощи адаптера автоматически настраиваются следующие свойства: AllowDBNull, Caption, ColumnName, DataType, Ordinal, Table, Unique.

1 Класс System.DBNull соответствует понятию NULL в реляционных БД и имеет единственное статическое поле только для чтения Value.

2 Для столбцов с автоприращением можно принудительно указать произвольное целочисленное значение при занесении информации в строку таблицы.

1 Это значение получено из базы.

1 Метод Compute() не позволяет вычислять агрегатные значения на основе нескольких столбцов.

2 Как и в случае с использованием свойства Expression класса DataColumn, для подробного ознакомления с синтаксисом построения выражений отсылаем заинтересованных читателей к справке MSDN.

1 Подробный состав параметров утилиты xsd.exe изучите самостоятельно.

1 Классическим примером является типичный Интернет-магазин. Если пользователь на странице определяет некое условие фильтрации, то браузер должен отобразить список товаров, имеющихся в данный момент в магазине и удовлетворяющих фильтру. Естественно, подобный процесс подразумевает динамическую генерацию страницы с результатами на стороне сервера.

1 Если свойство страницы IsPostBack = false, то страница отображается в первый раз.

1 В данном контексте понятия «дочерний» и «родительский» следует понимать так: родительский элемент является контейнером для своих дочерних элементов.

1 Не устанавливайте свойства ControlToCompare и ValueToCompare одновременно. В противном случае, преймущество имеет свойство ControlToCompare.

1 Для того, чтобы установить или извлечь несколько выбранных элементов, используется булево свойство Selected отдельного объекта ListItem.

2 Элементы управления Repeater, DataList, DataGrid будут рассмотрены в отдельном параграфе.

1 Данный сценарий находится в главном каталоге .NET.

1 Методы аутентификации ASP.NET применяются для файлов, являющихся частью Web-приложения. HTML-страницы (*.htm или *.html) не включаются в число этих файлов автоматически. Такие страницы обрабатываются IIS, а не ASP.NET. Чтобы зарегистрировать HTML-страницы для обработки рабочим процессом ASP.NET, требуется соответствующим образом настроить IIS.

1 В Visual Studio можно начать новый web-проект, добавить в проект новый элемент Web User Control (файл LogonForm.ascx) и размещать элементы в дизайнере или ввести код.

315