Nachteile
Prozessinterne Server bieten den Geschwindigkeits- und Größenvorteil eines Objekthandlers mit der Bearbeitungsfunktion eines lokalen Servers. Warum würden Sie sich also jemals dafür entscheiden, Ihre OLE-Anwendung als lokalen Server und nicht als prozessinternen Server zu implementieren? Es gibt mehrere Gründe:
- Sicherheit. Nur ein lokaler Server verfügt über einen vom Client isolierten Adressraum. Ein Prozessserver teilt den Adressraum und den Prozesskontext des Clients und kann daher bei Fehlern oder böswilliger Programmierung weniger robust sein.
- Granularität: Ein lokaler Server kann mehrere Instanzen seines Objekts auf vielen verschiedenen Clients hosten und den Serverzustand zwischen Objekten auf mehreren Clients auf eine Weise freigeben, die bei der Implementierung als Prozessserver schwierig oder unmöglich wäre, bei dem es sich einfach um eine dll handelt, die in jeden Client geladen wird.
- Kompatibilität. Wenn Sie sich für die Implementierung eines prozessinternen Servers entscheiden, verzichten Sie auf die Kompatibilität mit OLE 1, das solche Server nicht unterstützt. Dies wird für viele Entwickler nicht berücksichtigt, aber wenn dies der Fall ist, dann ist es von entscheidender Bedeutung.
- Unfähigkeit, Links zu unterstützen. Ein Prozessserver kann nicht als Linkquelle dienen. Da eine DLL nicht selbst ausgeführt werden kann, kann sie kein Dateiobjekt erstellen, mit dem verknüpft werden soll.
Trotz dieser Nachteile kann ein prozessinterner Server eine hervorragende Wahl für seine Geschwindigkeit und Größe sein – wenn er allen anderen Anforderungen entspricht.