我有一些简单的代码:
[DataContract]
[KnownType(typeof(SpecialEvent))]
public class Event
{
//data
}
[DataContract]
public class SpecialEvent : Event
{
//data
}
[ServiceContract]
public interface IService
{
[OperationContract]
List<Event> GetEvents();
}
[ServiceBehavior]
public class Service : IService
{
public List<Event> GetEvents()
{
List<Event> events = new List<Event>();
events.Add(new Event());
events.Add(new SpecialEvent());
return events;
}
}
我知道如果wcf为wcf,它的工作正常。
但互操作性呢?
是生成标准的wsdl,任何客户端都可以使用该服务吗?
答案 0 :(得分:2)
是的,这是可互操作的。我编写了一个以类似方式使用已知类型的服务,并且有几个第三方从各种客户端调用该服务,包括Java和PHP。
编辑:WCFExtras
我学到的一件事是,并非所有非WCF客户端都能理解WCF的默认WSDL。问题是WCF将其WSDL分成几个部分而不是使用单个文件。您可以通过使用WCFExtras之类的东西将WSDL合并回单个文件来解决此问题。