Когда добавить ссылку на сервис? - PullRequest
0 голосов
/ 14 октября 2010

Я создаю службу WCF, которая будет развернута на сервере с IIS. Я могу добавить сервисную ссылку из текущего решения и использовать ее нормально.

Если я разверну службу на этом конкретном компьютере, нужно ли мне повторно добавлять службу в приложение, которое ее использует?

Ответы [ 3 ]

3 голосов
/ 15 октября 2010

Нет, вам просто нужно изменить URL-адрес службы, чтобы он соответствовал другому компьютеру.

Когда вы добавляете ссылку на службу, создается прокси, и этот прокси-сервер будет работать со всеми серверами, на которых размещены эти службы - он простонужен правильный URL-адрес.

Обновлять ссылку на службу нужно только тогда, когда изменяются службы, например, добавляется новый метод или изменяется параметр.

1 голос
/ 15 октября 2010

Короче говоря, измените адрес службы в файле конфигурации клиентского приложения, чтобы он указывал на новый сервер.

Это будет частью вашей процедуры развертывания.

1 голос
/ 15 октября 2010

Нет.Это работает так: когда вы добавляете ссылку на ваш проект, он запрашивает заданный URL-адрес службы и создает через XML через SOAP список всех классов и методов вашей конкретной службы.

класс .NET.

Удалить и прочитать ссылку нужно только в том случае, если вы добавили дополнительные методы в свою службу.

Например, веб-служба службы отчетов 2005:

Выдобавьте ссылку на ваш проект, затем импортируйте пространство имен.

Imports ReportingServiceInterface.ReportingService2005_WebService

Вы создаете экземпляр объекта этого класса и передаете ему URL.Затем вы вызываете метод WebService через экземпляр этого класса.

См. Ниже:

Public Shared Sub CreateDataSource(ByVal strPath As String, ByVal strDataSourceName As String, ByVal strConnectionString As String, ByVal strDescription As String, ByVal strUserName As String, ByVal strPassword As String)
            Dim rs As ReportingService2005 = New ReportingService2005

            rs.Credentials = ReportingServiceInterface.GetMyCredentials(strCredentialsURL)
            rs.Timeout = ReportingServiceInterface.iTimeout
            rs.Url = ReportingServiceInterface.strReportingServiceURL


            Dim dsdDefinition As DataSourceDefinition = New DataSourceDefinition
            dsdDefinition.CredentialRetrieval = CredentialRetrievalEnum.Store
            dsdDefinition.ConnectString = strConnectionString
            dsdDefinition.Enabled = True
            dsdDefinition.EnabledSpecified = True
            dsdDefinition.Extension = "SQL"
            dsdDefinition.ImpersonateUserSpecified = False
            dsdDefinition.UserName = strUserName ' "UserName"
            dsdDefinition.Password = strPassword ' "Password"
            dsdDefinition.Prompt = Nothing
            dsdDefinition.WindowsCredentials = False


            'Dim PropertyArray As ReportingService2005_WebService.Property() = New ReportingService2005_WebService.Property(0) {}
            'PropertyArray(0) = New ReportingService2005_WebService.Property
            'PropertyArray(0).Name = "Description"
            'PropertyArray(0).Value = "Automatically added DataSource"

            Dim PropertyArray() As ReportingService2005_WebService.Property = { _
                New ReportingService2005_WebService.Property() With {.Name = "Description", .Value = "Automatically added DataSource"} _
            }


            Try
                If String.IsNullOrEmpty(strDescription) Then
                    rs.CreateDataSource(strDataSourceName, strPath, False, dsdDefinition, Nothing)
                Else
                    PropertyArray(0).Value = strDescription
                    rs.CreateDataSource(strDataSourceName, strPath, False, dsdDefinition, PropertyArray)
                End If
            Catch ex As System.Web.Services.Protocols.SoapException
                Console.WriteLine(ex.Detail.InnerXml.ToString())
            End Try
        End Sub ' End Sub CreateDataSource
...