2008-12-02 70 views
1

我正在構建傳統的ASP.NET Web服務 - 使用asmx構建的樣式。這是一個非常簡單的服務。我開始爲我的持久層使用新的Ado.NET實體框架,並且遇到了一些問題:使用ADO.NET實體對象和基於Soap的Web服務

1)我不喜歡WSDL自動生成 - 複雜類型被定義爲所以:

<s:complexType name="TestObject"> 
     <s:complexContent mixed="false"> 
     <s:extension base="tns:EntityObject"> ... 

所以,我建立了自己的WSDL和使用Wsdl.exe工具來創建服務定義,其中包括一個新的類型定義,所以現在的WSDL的樣子,我覺得是一個比較橫 - 平臺設計:

<xsd:complexType name="TestObject"> 
    <xsd:sequence> 
    <xsd:element minOccurs="0" name="created" type="xsd:dateTime"/> ... 

我現在有ASPX生成一個不錯的WSDL文件。但是現在我不確定我應該在哪裏接受這個。我有兩種基本上與TestObject類型相同的類型: 1)用於實體持久性與ADO.NET實體框架 2)以及用於通過線路定義數據的類型。

我想弄清楚如何將它們合併爲一個。我對修改由Ado.NEt Entity框架自動生成的.cs文件感到有點緊張,因爲它似乎可能會被覆蓋。

任何有Ado.Net實體經驗豐富經驗的人都認爲值得使用?雖然我喜歡這個想法,我能夠很快建立到數據層的持久性,但我需要以一種非常自定義的方式定義實體對象如何通過網絡傳輸,所以我需要修改與它相關的屬性屬性。另外,在我的服務實現中,我並不想從EntityFramework.TestObject轉換爲WSDLDefenition.TestObject。

感謝您的任何意見。

+0

是否缺少一些例子? – RobS 2008-12-02 13:40:38

回答

1

您正面臨着我們許多人在嘗試在SOA架構中使用實體框架時所面臨的困境。

實體框架1.0版本,你在受傷的世界最終要管理對象上下文(並具有對它們進行緩存可能 )不會在你描述的情況下很好地工作。

我建議徹底閱讀EF小組發佈的以下(1)article關於實體框架的未來的文章。它還具有捕捉和討論當前一些不足的效果。

簡而言之,我不確定實體框架是否完全是您現在想要的解決方案,因爲在此階段處理EF實體(或外部服務邊界)時沒有「乾淨」的解決方案。

其他可不敢苟同......

PS你說得對,慎重對待手中的編輯生成的代碼 - 任何更新的數據模型將覆蓋任何修改(雖然你可以擴展它,因爲它們是在部分班級內)。如果你想爲屬性添加屬性,沒有什麼幫助。

的(a)http://blogs.msdn.com/efdesign/archive/2008/11/20/n-tier-improvements-for-entity-framework.aspx

0

感謝。這是我懷疑的,但不想花一整天的時間研究。我什麼都暫且做的是讓我的對象分開,這樣我可以保持乾淨WSDL,然後在數據訪問層,我的對象之間進行轉換的線材和ADO.NET實體框架。

可能不是最完善的方法,但是這將讓我通過了演示。

感謝您的鏈接的文章,我覺得我是缺少的關鍵概念是持久性的無知。我已經對Java Web服務工作,在那裏,你可以定義POJO(簡單Java對象),方便地傳輸他們在金屬絲,以及堅持到數據源...

...我現在爲什麼看你建議WCF,因爲支持持續無知。