私は、別のマシン上のWCF WindowsサービスにアクセスするWCF Webサービスを持っています。 Windowsサービスはすべてのデータにアクセスし、結果をWebサービスに渡します。 WCFサービスのサービスクライアントを正しく廃棄する方法についていくつかの記事を読んだことがありますが、Webサービスでこれを行うのが最善の方法であるかどうかはわかりません。 (このことができます場合は、WebサービスはPerCallはPerSessionではありません)WCF Webサービス内でWCF Windowsサービスクライアントを処理する
これは私が今やっているすべてです:
Public Class Service1
Implements IService1
Private p_oWindowsService As DataService.Service1Client
Public Sub New()
p_oWindowsService = New DataService.Service1Client
End Sub
Public Function GetData(ByVal value As Integer) As String Implements IService1.GetData
Return p_oWindowsService.GetData(value)
End Function
Public Function GetDataUsingDataContract(ByVal composite As CompositeType) As CompositeType Implements IService1.GetDataUsingDataContract
If composite Is Nothing Then
Throw New ArgumentNullException("composite")
End If
If composite.BoolValue Then
composite.StringValue &= "Suffix"
End If
Return composite
End Function
を私は何を私から、今ではすべてのサービスクライアントを配置していませんよこれは大きな問題です。私が探していますこの問題を回避するにはGetDataの関数の中、このようなものです:
Public Function GetData(ByVal value As Integer) As String Implements IService1.GetData
Using oWindowsService As New DataService.Service1Client
Return oWindowsService.GetData(value)
End Using
End Function
What is the best workaround for the WCF client `using` block issue?をオフに基づいて、私は私が実際に使用してブロックに依存すべきではありません知っています。しかし、私はすべての機能にサービスクライアントを作成して廃棄するべきですか?それが私の本当の疑問です。
ありがとうございます。
あなたは次のようにサービスクライアントを作成し、閉じてお勧めですかこれはすべての関数内でWebサービスがWindowsサービスを呼び出しますか? – cjw
@cjw編集された答えをご覧ください。 – CodingYoshi