0

私は本当に大きな (200 近くの Web メソッドを公開している) asp.net Web サービスを持っています。このサービスのほとんどの Web メソッド (2 つの Web メソッド) を使用する 2 つ目のアプリケーションを開発しています。Visual Studio を使用して最初の Web サービスのプロキシ クラスを生成すると、すべての Web メソッドに対して生成されます。選択した Web メソッドのプロキシ クラスと、それらの Web メソッドでのみ使用されるカスタム タイプを生成する方法はありますか。

4

2 に答える 2

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 に答える
0

1 つの方法は、手動で行うことです。

維持するのは非常に簡単ですが、もちろん、自動生成を使用するよりも手作業が多くなります。処分もいい意味で追加できます。

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 に答える