问题陈述:
我们使用WCF服务库(不是带有svc文件的WCF服务应用程序)构建了MVC 4应用程序。我们通过WCF SOAP服务库进行的所有MVC CRUD操作。一切正常。现在客户端突然改变了需求并要求我们将WCF SOAP转换为REST。
我经历了许多用于将WCF SOAP转换为REST的URL。在所有URL中,他们都提到将WCF SOAP服务应用程序转换为WCF REST而不是将WCF SOAP服务库转换为WCF REST。
我的问题是我们是否可以将SOAP中的WCF服务库转换为REST.??对于WCF服务库和WCF服务应用程序,转换是相同的。如果可能的话,它会影响太多,改变现有的代码??
如果有人能够通过一些URL和解释建议在MVC中将WCF SOAP转换为REST的更好方法,那就太棒了。
答案 0 :(得分:0)
不确定它是否有帮助,但我已经完成了同时暴露给Soap和REST的WCF库。 REST公开XML / JSON,返回类型取决于输入请求。 它可以通过配置文件配置,我看起来像这样:
<behaviors>
<serviceBehaviors>
<behavior name="BehaviourService">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="BehaviourEndPoint"></behavior>
<behavior name="BehaviourWebHttp">
<webHttp defaultBodyStyle="Wrapped" faultExceptionEnabled="True" automaticFormatSelectionEnabled="True"/>
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="NameSpace.MyClass" behaviorConfiguration="BehaviourService" >
<!--SoapUI-->
<endpoint name="Name" address ="soap" binding="basicHttpBinding" contract="NameSpace.IMyClass"></endpoint>
<!--Rest-->
<endpoint name="Name" address="" binding="webHttpBinding" behaviorConfiguration="BehaviourWebHttp" contract="NameSpace.IMyClass" ></endpoint>
<!--MEX-->
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="http://localhost:89/MyAddress"/>
</baseAddresses>
</host>
</service>
</services>
服务如:
[ServiceContract(Namespace = "http://www.mycompany.com", Name = "MyName")]
[DataContractFormat]
public interface IMyClass
{
[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "MyMethod", Method = "POST")]
bool MyMethod();
}