我正在構建一個將部署到運行IIS的服務器的WCF服務。我可以從當前的解決方案中添加服務引用並使用它。何時添加服務參考?
如果我將該服務部署到該特定機器,我是否需要將該服務重新添加到使用該服務的應用程序?
我正在構建一個將部署到運行IIS的服務器的WCF服務。我可以從當前的解決方案中添加服務引用並使用它。何時添加服務參考?
如果我將該服務部署到該特定機器,我是否需要將該服務重新添加到使用該服務的應用程序?
不,您只需要更改服務URL以匹配其他機器。
添加服務引用時會生成代理,並且該代理將針對託管這些服務的所有服務器工作 - 它只需要正確的URL。
您只需在服務暴露發生變化時更新服務引用,例如,添加新的方法或更改參數。
不。它的工作方式是,當您添加對項目的引用時,它將查詢給定的服務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
長話短說,更改客戶端應用程序的配置文件中的服務地址指向新的服務器。
這將成爲部署過程的一部分。