带有 Notification Services 的 COM Interop
所有 Notification Services API 都是使用托管代码开发的。但是,已开发的许多 Notification Services 类是要通过非托管代码以及 COM interop 使用的。如果要将 Notification Services 集成到现有的非托管应用程序中,则可能需要继续在订阅管理界面中使用非托管代码。COM interop 就是为此目的而提供的。
不支持 COM Interop 的命名空间
以下 Notification Services 命名空间中的类不支持 COM interop:
- Microsoft.SqlServer.NotificationServices.Rules,在支持基于条件的订阅的订阅管理界面中使用该类。此命名空间在
Microsoft.SqlServer.NotificationServices.Rules.dll
程序集中。 - Microsoft.SqlServer.Management.Nmo,可以将该类用于以编程方式定义 Notification Services 应用程序,以及用于配置、部署和管理 Notification Services 实例。此命名空间在
Microsoft.SqlServer.Smo.dll
程序集中。
Microsoft.SqlServer.NotificationServices 命名空间
Microsoft.SqlServer.NotificationServices 命名空间中的以下类至少部分支持 COM interop:
- ApplicationEnumeration
- DeliveryChannel
- DeliveryChannelEnumeration
- Event
- EventClass
- EventClassEnumeration
- EventCollector
- IEventProvider
- InstanceEnumeration
- NotificationClass
- NotificationClassEnumeration
- NSApplication
- NSInstance
- NSInstanceDescription
- Subscriber
- SubscriberDevice
- SubscriberDeviceEnumeration
- SubscriberEnumeration
- SubscriberLocale
- SubscriberLocaleEnumeration
- Subscription
注意: Condition 属性不支持 COM interop。 - SubscriptionClass
- SubscriptionClassEnumeration
- SubscriptionEnumeration
- TimeZone
- TimeZoneEnumeration
这些类都提供默认的构造函数和 Initialize 方法,用于以非托管代码创建和初始化对象。对于这些类中的重载方法,最广泛的是提供给 COM 调用方的重载。方法中的参数都是可选的,以提供对等功能。
如果安装了多个版本的 Notification Services,并且使用的是 COM interop,那么代码将使用最近安装的 Notification Services 版本中的 API。这不一定是最高版本的 Notification Services。之所以可能发生这种差异,是因为程序 ID(在 HKEY_CLASSES_ROOT 下)是 Microsoft.SqlServer.NotificationServices.NSInstance 窗体的 ID,并且始终指向最近安装的版本。
有关使用 COM interop 的详细信息,请参阅 Microsoft MSDN(R) 库中的 COM Interoperability in Visual Basic and Visual C#。
请参阅
概念
Notification Services 体系结构
Notification Services 编程框架
Notification Services 部署选项
其他资源
生成通知解决方案
部署 Notification Services
管理 Notification Services