0

我有一个真正的大(暴露近 200 个 webmethods)asp.net web 服务。我正在开发第二个应用程序,它使用该服务的很少的 webmethods (2 webmethods)。当我使用 Visual Studio 生成第一个 Web 服务的代理类时,它会为所有 Web 方法生成它。有什么方法可以为选定的 Web 方法和仅在这些 Web 方法中使用的自定义类型生成代理类。

4

2 回答 2

0

One way would be to do it manually.

It is still pretty easy to maintain, but of course more manual effort than using the automatic generation. Also disposing can be added in a good way.

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;
        }
    }       
}
于 2012-12-13T09:06:59.607 回答
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);
    }

}
于 2012-12-13T09:03:58.620 回答