在C#里,WebReference是.NET Framework 2.0到3.5时代用来调用传统ASMX Web服务的主要方式,它通过WSDL生成客户端代理类,能像调用本地方法一样访问远程服务。不过现在更推荐用Service Reference(基于WCF)或HttpClient来调用现代API,因为它们更轻量、灵活且支持RESTful风格。
1、核心概念
WebReference:是Visual Studio里的一个项目项,用于添加对ASMX Web服务的引用,自动生成代理类。
Service Reference:是.NET Framework 3.0+引入的更高级方式,基于WCF,支持更多协议和功能,但配置更复杂。
2、主要区别
特性 Web Reference Service Reference
基础 System.Web.Services System.ServiceModel (WCF)
适用服务 传统ASMX Web服务 WCF服务、部分ASMX服务
配置 在app.config或web.config中 在app.config中,但更复杂
灵活性 较低 较高,支持更多绑定和行为
现代性 已过时,不推荐用于新项目 已被HttpClient等取代,但仍在维护
使用场景
WebReference:维护或调用旧的ASMX Web服务。
Service Reference:调用WCF服务或需要高级功能时。
现代应用:优先用HttpClient调用RESTful API。
简单示例
添加WebReference:在Visual Studio中右键项目 -> "添加服务引用" -> "高级" -> "添加Web引用",输入ASMX服务URL。
调用服务:
// 假设服务名为 MyService
var client = new MyService.MyWebService();
var result = client.MyMethod("参数");
注意事项
WebReference:仅用于.NET Framework项目,.NET Core/.NET 5+不支持。
Service Reference:在.NET Core/.NET 5+中可用,但需配置。
性能:两者都比HttpClient重,频繁调用时注意性能。
总之,除非维护旧系统,否则新项目应避免使用WebReference。