OK, so haben Sie eine komplette IGreatService Schnittstelle mit vielen Methoden, die auf einer MyGreatService Klasse implementiert werden.
Wie wäre es damit: Sie erstellen eine neue, zweite Schnittstelle IMyServiceB, die nur die wenigen Methoden enthält, die Sie der zweiten Benutzergruppe zugänglich machen möchten. Sie machen es so Ihren Dienst implementiert sowohl IGreatService und IMyServiceB (das ist absolut möglich, kein Problem):
public class MyGreatService : IGreatService, IMyServiceB
{
..
}
Service B im Grunde ruft dann nur diese wenigen Methoden in der Service-Implementierung, die Sie machen möchten - lassen Sie uns sagen, Sie haben MethodA auf IGreatService, die Sie auch auf IMyServiceB verfügbar machen möchten (wie MethodB) - implementieren es wie folgt aus:
public class MyGreatService : IGreatService, IMyServiceB
{
....
// as defined on IGreatService
public void MethodA (....)
{
}
....
public void MethodB (.....) // as defined on IMyServiceB
{
MethodA();
}
}
auf diese Weise erhalten Sie zwei separate Schnittstellen (= Dienste), aber im Grunde schreiben Sie Ihren Code nur Einmal.
Sie können IMyServiceB dann auf einem getrennten und separaten Endpunkt bereitstellen, sodass Benutzer, die nur IMyServiceB sehen sollen, nur eine Verbindung mit diesem separaten Endpunkt herstellen können und nur die für die Verwendung der Service-B-Vorgänge erforderlichen Komponenten erhalten .
Konnte das funktionieren?
Marc
Hallo Marc, es funktioniert ziemlich gut. Ich habe nicht den gleichen Dienst verwendet, da es als Singleton implementiert ist, sondern den zweiten Dienst erstellt hat, der sich wie ein Proxy verhält, aber trotzdem hat er mein Problem gelöst. –