c#-在WCF中,拥有多个操作协定或仅具有一个多态数据协定的操作更好吗?
作者:互联网
我想知道在WCF中使用多个操作协定还是只将一个操作协定与多态数据协定一起使用会更好.
让我举一个小例子:
[OperationContract]
action1Answer action1(action1data a);
[OperationContract]
action2Answer action2(action2data a);
要么
[OperationContract]
actionAnswer action(actionContract a);
动作契约将是action1Contract和action2Contract都将继承的抽象类.操作协定将在其接口中指定do()成员函数,而该子函数又必须在子类中重载
我认为,第二种方法更有趣,因为它使您可以很好地将数据和操作封装在派生的actionContract中,从而使添加新操作更加容易.但这是我第一次使用WCF,所以您可能了解得更多!
解决方法:
这个问题与OO多态性和SOA的圣战的边缘有关,但我将提供我的两分钱:
当您考虑开发服务层时,服务的最终用户应该清楚该传递什么以及期望什么.方法2处理得不好. (此外,当使用WCF进行SOAP然后在其他.NET项目中从wsdl进行加载时,它没有正确标记抽象类,也没有传递接口.WSDL无法描述非实例化的基类, )
但是,我必须承认,我认为使用KnownTypeAttributes的第二个过程很棒(正如我刚才看到的marc_s已发布)-我在允许未知的未来需求时就使用了它.
标签:operationcontract,datacontract,wcf,c 来源: https://codeday.me/bug/20191024/1917374.html