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