我有一个Windows应用程序和一个Web服务。两者都有一个Linq to SQL映射器,上面有Customer表。来自同一数据库的同一个表,相同的一切。我尝试将winapp.Customer对象发送到Web服务,但webserviceReference.MyMethod()接受webservice.Customer对象,并且不接受winapp.Customer作为参数。试图将winapp.Customer投射到webservice.Customer但也没有工作。有没有办法实现这个目标?
答案 0 :(得分:3)
不,使用ASMX Web服务无法实现此目的。它们要求代理类型和实际类型是不同的类型。
您可以使用WCF完成此任务,但它打破了SOA的概念(客户端和服务器将通过公共类代码绑定在一起)。
最后,使用任何类型的Web服务将LINQ传递给SQL或Entity Framework类都存在问题。在层之间传递时,Microsoft搞砸了并序列化了与实现相关的数据。当这些层位于同一台计算机上时,这可能是有意义的,但当它们位于不同的计算机上时却没那么明显。
答案 1 :(得分:0)
在WinApp中,您可能需要编写从winapp.Customer到webservice.Customer的显式转换。