ServicedComponent Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет базовый класс для всех классов, используя службы COM+.
public ref class ServicedComponent abstract : ContextBoundObject, IDisposable, System::EnterpriseServices::IRemoteDispatch, System::EnterpriseServices::IServicedComponentInfo
[System.Serializable]
public abstract class ServicedComponent : ContextBoundObject, IDisposable, System.EnterpriseServices.IRemoteDispatch, System.EnterpriseServices.IServicedComponentInfo
[<System.Serializable>]
type ServicedComponent = class
inherit ContextBoundObject
interface IRemoteDispatch
interface IDisposable
interface IServicedComponentInfo
Public MustInherit Class ServicedComponent
Inherits ContextBoundObject
Implements IDisposable, IRemoteDispatch, IServicedComponentInfo
- Наследование
- Производный
- Атрибуты
- Реализации
Примеры
В следующем примере кода показано, как предоставить класс в качестве настроенного com-компонента.
[assembly:ApplicationName("Calculator")];
[assembly:ApplicationActivation(ActivationOption::Library)];
[assembly:System::Reflection::AssemblyKeyFile("Calculator.snk")];
public ref class Calculator: public ServicedComponent
{
public:
int Add( int x, int y )
{
return (x + y);
}
};
using System;
using System.EnterpriseServices;
[assembly: ApplicationName("Calculator")]
[assembly: ApplicationActivation(ActivationOption.Library)]
[assembly: System.Reflection.AssemblyKeyFile("Calculator.snk")]
public class Calculator : ServicedComponent
{
public int Add (int x, int y)
{
return(x+y);
}
}
Чтобы развернуть этот класс в качестве настроенного com-компонента, необходимо создать надежный ключ, скомпилировать класс как библиотеку и зарегистрировать библиотеку. Эти три шага выполняются с помощью следующих трех команд.
sn -k Calculator.snk
csc /t:library Calculator.cs
regsvcs Calculator.dll
Комментарии
При определенных условиях класс, производный от ServicedComponent класса, выполняемого в приложении COM+, может перестать отвечать на запросы. Эта проблема вызвана взаимоблокировкой действий. Действия могут взаимоблокировки в многопоточных приложениях из-за асинхронной очистки ссылок на компоненты. Чтобы обойти эту проблему, вызовите метод после завершения работы с объектами Dispose , производными от ServicedComponent.
Примечание
Клиентский код должен вызвать Dispose
на обслуживаемом компоненте, чтобы гарантировать правильную работу.
Конструкторы
ServicedComponent() |
Инициализирует новый экземпляр класса ServicedComponent. |
Методы
Activate() |
Вызывается инфраструктурой при создании объекта или его выделении из пула. Чтобы добавить для объектов пользовательский код инициализации, следует переопределить этот метод. |
CanBePooled() |
Этот метод вызывается инфраструктурой перед возвращением объекта в пул. Чтобы иметь возможность выбрать, возвращать объект в пул или нет, следует переопределить этот метод. |
Construct(String) |
Вызывается инфраструктурой сразу после вызова конструктора при передаче строки конструктора. Чтобы сделать возможным использование значения строки конструирования, следует переопределить этот метод. |
CreateObjRef(Type) |
Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом. (Унаследовано от MarshalByRefObject) |
Deactivate() |
Вызывается инфраструктурой перед тем, как объект будет отключен. Этот метод следует переопределить для добавления в объекты пользовательского кода завершения при использовании JIT-скомпилированного кода или пула объектов. |
Dispose() |
Освобождает все ресурсы, занятые модулем ServicedComponent. |
Dispose(Boolean) |
Освобождает неуправляемые ресурсы, используемые объектом ServicedComponent, а при необходимости освобождает также управляемые ресурсы. |
DisposeObject(ServicedComponent) |
Завершает объект и удаляет соответствующую ссылку COM+. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetLifetimeService() |
Устаревшие..
Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра. (Унаследовано от MarshalByRefObject) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
InitializeLifetimeService() |
Устаревшие..
Получает объект службы времени существования для управления политикой времени существования для этого экземпляра. (Унаследовано от MarshalByRefObject) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
MemberwiseClone(Boolean) |
Создает неполную копию текущего объекта MarshalByRefObject. (Унаследовано от MarshalByRefObject) |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Явные реализации интерфейса
IRemoteDispatch.RemoteDispatchAutoDone(String) |
Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода. Гарантирует, что в контексте COM+ для объекта класса ServicedComponent бит |
IRemoteDispatch.RemoteDispatchNotAutoDone(String) |
Не гарантирует, что в контексте COM+ для объекта класса ServicedComponent для бита |
IServicedComponentInfo.GetComponentInfo(Int32, String[]) |
Получает определенную информацию об экземпляре класса ServicedComponent. |