Warum verwenden WCF-Dienste-Schnittstellen als Service-Vertrag anstatt einer abstrakten Klasse?
Diese Frage bekam ich in einem interview gefragt.
Beim erstellen eines WCF-service, erhalten Sie zwei Dateien, "IService.cs" und "Service.cs". Warum ist es eine Klasse die ein interface vs. Klasse erbt eine abstrakte Klasse. Nicht Antworten, die sagen, dass Sie nicht setzen eine [servicecontract] - Attribut über die abstrakte Klasse. Ich weiß, Sie können es nur die Schnittstellen, aber warum?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann man implementieren, die mehr als eine Schnittstelle. Man kann nur Erben von einer einzigen abstrakten Klasse.
WCF vollständig entkoppelt den client vom service, wenn Sie angeben, die Umsetzung der service als service haben Sie die eng gekoppelte client an den service.
Mehrere Gründe die ich mir denken kann:
[ServiceContract]
hat keine Implementierung, vergeuden Sie eine erbschaft slot haben Sie auf Sie? Zum Beispiel unsere service-Klassen Erben von einer abstraktenServiceBase
- Klasse, die gemeinsamen Kontext Staat und Methoden, zusätzlich zu der Umsetzung der[ServiceContract]
- Schnittstelle. Aber selbst wenn das nicht der Fall, ich würde immer noch verlassen Sie die Basisklasse slot frei für die zukünftige Verwendung.[ServiceContract]
gegebenenfalls.[ServiceContract]
von der anderen, dann das hinzufügen von service-Klassen auf die gleiche erbschaft Baum wird es ruinieren.