我有一个真正的大(暴露近200个webmethods)asp.net Web服务。我正在开发第二个应用程序,该服务消耗很少的webmethods(2 webmethods)。当我使用visual studio生成第一个Web服务的代理类时,它会为所有Web方法生成它。是否有任何方法可以为选定的Web方法生成代理类,以及仅在这些Web方法中使用的自定义类型。
答案 0 :(得分:0)
我不相信这是可能的。但是,对此的经典解决方法是使用外观模式,仅向您的应用程序公开感兴趣的方法,并直接委派给真正的Web服务方法。
例如:
public interface IWebServiceWrapper
{
void DoStuffWith(Something something);
SomethingElse GetSomeThingElse(int id);
}
public class ServiceWrapper : IWebServiceWrapper
{
private TheRealWebService _realWebService = new TheRealWebService();
public void DoStuffWith(Something something)
{
_realWebService.DoStuffWith(something);
}
public SomethingElse GetSomeThingElse(int id)
{
_realWebService.GetSomeThingElse(id);
}
}
答案 1 :(得分:0)
一种方法是手动完成。
它仍然很容易维护,但当然比使用自动生成更多的手动操作。处理也可以很好地添加。
public class ServiceProxy : ClientBase<IService>, IService>, IDisposable
{
public Response DoAction(Request request)
{
return Channel.DoAction(request);
}
private bool disposed;
protected virtual void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
if (base.State == CommunicationState.Faulted)
{
this.Abort();
}
else if (base.State != CommunicationState.Closed)
{
try
{
this.Close();
}
catch (Exception exc)
{
this.Abort();
}
}
disposed = true;
}
}
}