【发布时间】:2010-09-24 22:30:15
【问题描述】:
我正在构建一个传统的 ASP.NET Web 服务——使用 asmx 构建的样式。这是一项非常简单的服务。我开始为我的持久层使用新的 Ado.NET Entity Framework,但遇到了一些问题:
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。
感谢您的任何意见。
【问题讨论】:
-
您是否遗漏了一些示例?
-
WSDL 旨在实现互操作性,而不是作为 .NET 类型的传输机制。基本上,您试图通过低保真信号 (ASMX+WSDL) 发送高保真内容(.NET 类型)。如果可以选择,请使用基于 WCF 的服务或 .NET Remoting。这不是一个真正的答案,所以我把它放在这里。
-
我解决了这个问题。你总结的基本正确。我正在尝试构建一个演示,所以我希望将您所说的高保真和低保真类型合二为一。
标签: .net web-services entity-framework