没有复杂序列化的简单WCF服务(POX)

时间:2010-05-04 20:27:37

标签: xml wcf

我是一个完整的WCF新手。我正在尝试构建一个非常非常简单的IIS 7.0托管Web服务。出于我无法控制的原因,它必须是WCF而不是ASMX。它是预先存在的Web应用程序的包装服务,它只执行以下操作:

1)接收带有请求体XML封装表单元素的POST请求。像valuevalue这样的东西。这是非类型化的XML,XML是原子(表单)而不是记录/对象列表。

2)向请求XML添加几个标签,并使用简单的POST +裸XML调用另一个基于HTTP的服务 - 实际上这将由一些内部SQL操作添加,但这不是问题。< / p>

3)从第3方服务接收XML响应并将其作为对步骤1中原始呼叫客户端的响应进行中继。

客户端(步骤1)将是某种基于Web的脚本,但可以是任何东西.aspx,python,php等。

我不能拥有SOAP,并且通常基于WCF的REST示例与他们的合同和序列化让我感到困惑。这在概念上似乎是一个非常普遍且非常简单的问题。在代码中实现起来很容易,但是IIS托管的WCF是必需的。

任何指针?

5 个答案:

答案 0 :(得分:4)

构建POX服务通常很简单,只需添加一些属性并更改web.config中的一些设置。

首先,将[WebInvoke]添加到服务合同的POX方法中:

[ServiceContract]
public interface IMyService
{
    [OperationContract]
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare)]
    MyResult MyOperation(MyClass c);
}

有时您还必须为数据协定指定XML命名空间:

[DataContract(Namespace = "http://example.com/myclass")]
public class MyClass { ... }

然后设置web.config以使用webHttpBindingwebHttp行为:

<system.serviceModel>
    <services>
        <service behaviorConfiguration="MyApp.MyBehavior" name="MyApp.MyService">
            <endpoint address="" binding="webHttpBinding"
                      contract="MyApp.IMyService" behaviorConfiguration="POX"
                      bindingNamespace="http://example.com/">
                <--! More endpoint configuration here -->
            </endpoint>
            <endpoint address="mex" binding="mexHttpBinding"
                      contract="IMetadataExchange"/>
        </service>
    </services>
    <behaviors>
        <serviceBehaviors>
            <!-- Behavior config here -->
        </serviceBehaviors>
        <endpointBehaviors>
            <behavior name="POX">
                <webHttp/>
            </behavior>
        </endpointBehaviors>
    </behaviors>
</system.serviceModel>

就是这样。它似乎比实际更难。

注意:如果您确实希望接收无类型XML而不是序列化类,请将方法更改为接收XElement,如下所示:

[WebInvoke(...)]
MyResult MyOperation(XElement element);

答案 1 :(得分:1)

我会看看WCF REST入门套件@ http://www.asp.net/downloads/starter-kits/wcf-rest/和PluralSite HowTo @ http://www.pluralsight-training.net/microsoft/olt/howtovideo.aspx?a=aaron-skonnard&n=http-plain-xml-services。那些应该让你开始并指出正确的方向。

答案 2 :(得分:1)

我认为您所引用的视频可从here

获取

答案 3 :(得分:0)

Ben拥有正确的视频 - 不幸的是,该视频现在是Pluralsight网站上的“仅限订阅者”:-(: - : - - (

幸运的是,几乎所有这些介绍视频都可以从MSDN WCF REST Developer Center获得 - 除了Ben提到的那个....

但是WCF REST开发人员中心应该还有很多优秀的介绍材料,可以轻松快速地使用WCF REST!

答案 4 :(得分:0)

NET 4.0 here

中有一个例子