2010-10-14 128 views
0

我正在構建一個將部署到運行IIS的服務器的WCF服務。我可以從當前的解決方案中添加服務引用並使用它。何時添加服務參考?

如果我將該服務部署到該特定機器,我是否需要將該服務重新添加到使用該服務的應用程序?

回答

3

不,您只需要更改服務URL以匹配其他機器。

添加服務引用時會生成代理,並且該代理將針對託管這些服務的所有服務器工作 - 它只需要正確的URL。

您只需在服務暴露發生變化時更新服務引用,例如,添加新的方法或更改參數。

1

不。它的工作方式是,當您添加對項目的引用時,它將查詢給定的服務URL,並通過SOAP創建一個包含特定服務的所有類和方法的列表。

這是一個.NET類。

如果您向服務中添加了其他方法,則只需刪除並讀取引用。

E.g.報告服務2005 Web服務:

您將引用添加到項目中,然後導入命名空間。

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 
1

長話短說,更改客戶端應用程序的配置文件中的服務地址指向新的服務器。

這將成爲部署過程的一部分。