Поделиться через


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 бит done устанавливается в значение true после удаленного вызова метода.

IRemoteDispatch.RemoteDispatchNotAutoDone(String)

Не гарантирует, что в контексте COM+ для объекта класса ServicedComponent для бита done устанавливается значение true после удаленного вызова метода.

IServicedComponentInfo.GetComponentInfo(Int32, String[])

Получает определенную информацию об экземпляре класса ServicedComponent.

Применяется к