Сохранить объекты между вызовами wcf? - PullRequest
0 голосов
/ 13 декабря 2010

Это должно быть довольно просто, но, скажем, у меня есть свойство Public в качестве локальной переменной в моей службе WCF, и я установил это в один вызов службы. Есть ли способ сохранить эти данные для другого вызова службы? (Без записи данных в xml или db и повторной ссылки на них или что-то в этом роде)

Выполнение вызовов из Winform:

Public Class ClientSideWinForm

    Private proxy As ServiceReference.Client

    Private Sub Client_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        proxy = New ServiceReference.Client
    End Sub

    Private Sub btnStartTests_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStartTests.Click
        addToTxtResults("Try Chk Program Valid...")
        Try
            addToTxtResults(proxy.RequestChkValidProgram("Some-serial-number")) 'returns true or false and instanciates the object server side

            addToTxtResults(proxy.RequestFirstName()) ' returns nothing
        Catch ex As Exception
            addToTxtResults(ex.ToString)
        End Try
    End Sub
End Class

Сам сервис (немного тупой, но поведение все еще существует):

Public Class Service
    Implements IService

Public Property X As String

Function RequestChkValidProgram(ByVal strSerialNumber As String) As Integer Implements IService.RequestChkValidProgram
        X = "hello"
End Function

Function RequestFirstName() As String Implements IService.RequestFirstName
    Return X
End Function

End Class

Ответы [ 2 ]

1 голос
/ 13 декабря 2010

Если я правильно понял вопрос, состояние реализации вашей службы теряется между вызовами службы. Вы должны посмотреть на установку InstanceContextMode ServiceBehavior вашей реализации службы - похоже, в настоящее время она установлена ​​на PerCall, так что каждый вызов службы получает свой экземпляр. PerSession или Single могут быть лучшими альтернативами.

И хотя я не всегда согласен с @John Saunders, что это плохая идея, было бы полезно получить больше информации о том, чего вы пытаетесь достичь. :)

1 голос
/ 13 декабря 2010

Если у вас есть только один экземпляр вашего сервиса, вы можете сохранить данные от одного звонка до следующего. Вы должны рассмотреть вопрос о том, почему вы хотите это сделать, поскольку это звучит как плохая идея.

...