Web服务模型

时间:2013-09-13 10:51:38

标签: asp.net web-services serialization soap

我有1个站点(MySite.com)/ 1个Web服务(WebService.MySite.Com)和一个公共库(LibCommon)

公共库包含一个模型,例如UserModel = LibCommon.UserModel

网络服务有方法'Void CheckUser(LibCommon.UserModel model)'

但是,当我将'WebService'引用添加到'MySite.com'时,方法会发生变化,使其看起来像'Void CheckUser(WebService.MySite.Com.UserModel model)'

所以我认为我可以将一个对象强制转换为另一个对象,因为它们是相同的但.NET表示我不能这样做吗?

有解决方法吗?

干杯,

1 个答案:

答案 0 :(得分:1)

请注意,这适用于WCF,而不适用于ASMX Web服务:

您无法直接将原始数据类强制转换为WCF服务引用向导生成的代理类。但是,您可以在客户端中重用原始数据类:

  • 添加包含转移对象(即LibCommon)的库引用,作为对服务(WebService)和客户端(Mysite.com)的引用。在客户端上添加服务引用时,请选择高级选项卡,然后选择Reuse types in referenced assemblies。然后,这将重用公共数据传输类,而不是使用代理复制类型。

但请注意,通过消除代理数据类,您将在客户端和服务器之间引入直接耦合 - 只有在您同时控制客户端和服务器w.r.t时才应执行此操作。版本控制问题等(例如,能够同时部署客户端和服务器的新版本)

另外,通过将服务器端服务合同接口移动到单独的通用程序集中,然后使用this或{{3等技术,也可以消除共享服务接口。 }}