Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Роль атрибута [OneWay]
Роль атрибута [OneWay]
Предположим, что CarProvider должен иметь метод AddCar(), принимающий в качестве входного параметра JamesBondCar и не возвращающий ничего. Здесь главное те, что метод не возвращает ничего. Из названия класса System.Runtime. Remoting.Messaging.OneWayAttribute можно догадаться, что в данном случае слой удаленного взаимодействия .NET передает вызов удаленной стороне односторонним способом, и не заботится о создании инфраструктуры, необходимой для возврата значения (отсюда и название one-way - односторонний). Вот соответствующая модификация класса.
// "Обитель" атрибута [OneWay].
using System.Runtime.Remoting.Messaging;
…
namespace CarGeneralAsm {
public class CarProvider: MarshalByRefObject {
…
// Клиент может вызвать соответствующий метод
// и 'забыть' о нем.
[OneWay]
public void AddCar(JamesBondCar newJBC) { theJBCars.Add(newJBC); }
}
}
Вызывающая сторона вызывает этот метод так, как обычно.
// Создание поставщика машин.
CarProvider ср = new CarProvider();
// Добавление новой машины.
ср.AddCar(new JamesBondCar("Zippy", 200, false, false));
С точки зрения клиента вызов AddCar() является полностью асинхронным, поскольку среда CLR обеспечивает использование фонового потока для запуска удаленного метода. Поскольку AddCar() сопровождается атрибутом [OneWay], клиент не может получить от вызова никакого возвращаемого значения. Но, поскольку AddCar() возвращает void, это не является проблемой.
Вдобавок к указанному ограничению, следует также знать о том, что при наличии у метода с атрибутом [OneWay] выходных или ссылочных параметров (определяемых с помощью ключевых слов out или ref) вызывающая сторона не сможет получить модификации вызываемой стороны. К тому же, если вдруг метод с атрибутом [OneWay] сгенерирует исключительное состояние (любого типа), вызывающая сторона ничего об этом не узнает. Удаленные объекты могут обозначить некоторые методы атрибутом [OneWay] только тогда, когда вызывающей стороне действительно позволяется вызвать эти методы и "забыть" об этом.
- Роль товарной категории и установление цены
- Роль папки Bin
- Контрольные вопросы
- Глава 14. Почему потребительский опыт играет важную роль в выстраивании клиентских взаимоотношений
- Запуск сценариев на удаленных машинах. Контроль за ходом выполнения таких сценариев
- З.1.2. Пароль BIOS не сбрасывается даже при удалении батарейки. Почему?
- Не хочу, чтобы компьютером пользовались в мое отсутствие. Как установить пароль и блокировать машину?
- Где лучше хранить свой пароль?
- Я забыл пароль входа в Windows, можно ли зайти в систему, не зная пароля?
- Есть ли возможность установить пароль на папку или файл?
- Роль типизации
- Во время загрузки появляется окно с запросом пароля, но раскладка используется русская, а у меня пароль на английском. К...