2010-05-04 140 views
4

我是一個完整的WCF新手。我試圖構建一個非常非常簡單的IIS 7.0託管的Web服務。由於我不能控制的原因,它必須是WCF而不是ASMX。它是一個預先存在的Web應用程序的包裝服務,只需執行以下操作:沒有複雜序列化的簡單WCF服務(POX)

1)接收帶請求主體XML封裝表單元素的POST請求。有點像價值。這是無類型的XML,XML是原子(一種形式),而不是記錄/對象列表。

2)向請求XML添加一對標籤,並用一個簡單的POST +裸XML調用另一個基於HTTP的服務 - 這實際上會被一些內部SQL操作添加,但這不是問題。

3)接收來自第三方服務的XML響應和中繼它按照步驟1

客戶端的響應原始調用客戶端(步驟1)將是某種形式的基於網頁的腳本,但可以是任何.aspx,python,php等。

我不能擁有SOAP和通常基於WCF的REST示例與他們的合同和序列化讓我感到困惑。這在概念上似乎是一個非常普遍而且非常簡單的問題。在代碼中實現會很容易,但是需要IIS託管的WCF。

任何指針?

回答

0

奔有權視頻 - 不幸的是,該視頻「對於用戶只」關於Pluralsight網站現在:-(:-(:-(

幸運的是,幾乎所有的介紹視頻也可以從在MSDN WCF REST Developer Center - 除了一個奔提到....

但WCF REST開發中心應該還是有很多很好的介紹材料起牀方便,快捷地與WCF REST加快

+0

:(這是一個很好的視頻,但我同意MSDN上的那些視頻也是如此。 – 2010-05-04 23:23:39

4

構建一個POX服務!通常很簡單,只需在中添加一些屬性並更改一些設置即可。

首先,添加[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); 
+0

Aaron的回答看起來很有趣,但我是一個WCF的新手,所以我不知道從哪裏開始;即使在最簡單的步驟:創建什麼樣的項目;要包含哪些程序集;要創建的文件等等,這很可悲,是我創建一個網站,然後添加.svc和.cs文件?我使用的是一個WCF模板嗎?對不起,這是一個笨蛋 – 2010-05-05 18:44:11

+0

@jammer:只需使用「WCF服務應用程序」模板d添加'System.ServiceModel.Web'程序集。除了進行此處顯示的更改外,您不必做其他任何事情;它會爲您創建一個默認服務,您可以重命名/更改。 – Aaronaught 2010-05-05 19:08:36

1

我想你指的是視頻,可從here