StackOverflowやその他の場所で具体的な実装について話している投稿をたくさん見ました。WCFをいじっているときに、次の行に出会いました。
サービス実装、または「サービス ベース」のクラスを具体的な実装に結び付けることは決して良い考えではありません。
具体的な実装とは何なのか説明できる人はいますか?
ベストアンサー1
これは抽象的なもの (抽象クラス、インターフェース) の実装です。具体的なクラスのオブジェクトのみをインスタンス化できることに注意してください。
たとえば、次のような場合です:
abstract class AbstractClass
{
.......
// Here you have some abstract methods
}
class ConcreteClass : AbstractClass
{
.......
}
WCF の場合、クラスに ServiceContract 属性をマークすることは許可されていますが、それを別のインターフェイス上に置き、そのインターフェイスを ServiceBehavior 属性でマークされた具体的なクラスに実装する方がよいと言えます。
このような :
[ServiceContract(Namespace = "MyNamespaceName")]
interface IMyInterface
{
[OperationContract]
int SomeMethod(.....);
......
......
}
[ServiceBehavior(......)]
public class SomethingConcrete : IMyInterface
{
// implementation of SomeMethod
}