0

对于我在学校的项目,我必须在 C# 应用程序中使用 WCF 创建一些 SOAP Web 服务,以使其与 Java EE 应用程序交互。

我找不到任何教程告诉我如何使用 WCF 执行此操作。我应该怎么办?

4

3 回答 3

3

WCF 服务的 REST / SOAP 端点

您可以在两个不同的端点中公开服务。SOAP 可以使用支持 SOAP 的绑定,例如 basicHttpBinding,RESTful 可以使用 webHttpBinding。我假设您的 REST 服务将采用 JSON 格式,在这种情况下,您需要使用以下行为配置来配置两个端点

<endpointBehaviors>
    <behavior name="jsonBehavior">
        <enableWebScript/>
    </behavior>
</endpointBehaviors>

您的场景中的端点配置示例是

<services>
    <service name="TestService">
        <endpoint address="soap" binding="basicHttpBinding" contract="ITestService"/>
        <endpoint address="json" binding="webHttpBinding"  behaviorConfiguration="jsonBehavior" contract="ITestService"/>
    </service>
</services>

因此,该服务将在
http://www.example.com/soap http://www.example.com/json
上可用 将 [WebGet] 应用于操作合约以使其成为 RESTful。例如

公共接口 ITestService { [OperationContract] [WebGet] string HelloWorld(string text) }

注意,如果 REST 服务不是 JSON 格式,则操作的参数不能包含复杂类型。
对于作为返回格式的普通旧 XML,这是一个适用于 SOAP 和 XML 的示例。

[ServiceContract(Namespace = "http://test")]
public interface ITestService
{
[OperationContract]
[WebGet(UriTemplate = "accounts/{id}")]
Account[] GetAccount(string id);
}

REST 普通旧 XML 的 POX 行为

<behavior name="poxBehavior">
    <webHttp/>
</behavior>

端点

<services>
    <service name="TestService">
        <endpoint address="soap" binding="basicHttpBinding" contract="ITestService"/>
        <endpoint address="xml" binding="webHttpBinding"  behaviorConfiguration="poxBehavior" contract="ITestService"/>
    </service>
</services>

服务将在

http://www.example.com/soap http://www.example.com/xml
REST 请求在浏览器中尝试,
http://www.example.com/xml/accounts/A123

添加服务引用后 SOAP 服务的 SOAP 请求客户端端点配置,

<client>
    <endpoint address="http://www.example.com/soap" binding="basicHttpBinding"
  contract="ITestService" name="BasicHttpBinding_ITestService" />
</client>

在 C# 中

TestServiceClient client = new TestServiceClient();
client.GetAccount("A123");

另一种方法是公开两个不同的服务合同,每个服务合同都有特定的配置。这可能会在代码级别生成一些重复项,但是在一天结束时,您希望使其正常工作。

于 2013-11-11T07:59:02.053 回答
3

只需在 Visual Studio 中创建一个 WCF 项目,然后用 C# 编写所有代码。您将遇到的实际问题是从 Java EE 进行 SOAP 调用。

WCF 服务将托管在 IIS 中,而不是托管 WCF 的 Windows 服务中。

关于如何开始使用 WCF 的教程:

http://msdn.microsoft.com/en-us/library/dd936243.aspx

享受!

于 2012-12-04T16:48:16.877 回答
0

在这里更新了 WCF 的链接:http: //invalidcast.tumblr.com/post/52980598607/a-gentle-introduction-to-wcf

于 2013-09-12T08:08:49.727 回答