我想在Windows服務上託管一個WCF服務。基本上WCF服務從同一臺機器上的後端數據庫讀取數據。現在從ASP.NET服務器在同一臺機器上,我想讀取WCF服務從數據庫中讀取的數據。任何人都可以提供正確的方法來執行此操作?而且還必須使用相同的綁定。ASP.net服務器連接與WCF服務託管在Windows服務
回答
從您的意見中可以看出,您的目標是讓相同的WCF後端擁有不同的用戶界面。下面是關於一些信息,以結合:
對於同一臺機器上訪問WCF服務,最好的結合將是named pipe binding。但是,命名管道綁定不能從其他機器訪問。
萬一您必須從其他機器訪問服務,您應該去TCP Binding。請注意,命名管道和TCP綁定將僅從.NET客戶端使用(這對您來說不應該是個問題)。最後,如果您不得不通過互聯網公開服務和/或他們需要互操作,您可以選擇BasicHttpBinding或WSHttpBinding或WSHttpBinding或WSHttpBinding。但是,我會爲內部/私人消費和外部/公共消費提供不同的服務接口。
最後,您可以通過配置輕鬆更改綁定,因此您可以選擇名稱管道,並可能將其更改爲tcp綁定。此外,它可能具有不同綁定的不同端點上的相同服務。
現在,在遠程託管WCF時,您可以將其託管在Windows服務或IIS中。 IIS的優勢在於您已經測試過可擴展的主機,可以通過UI提供很少的管理選項。另一方面,使用IIS(作爲Web服務器),您不能使用命名管道或tcp綁定。使用較新的Windows服務器,您甚至可以藉助WAS(Windows激活服務)消除這種不利因素。
最後,你有沒有考慮過使用常見的進程內層而不是像WCF這樣的進程外層?例如,您可以擁有一個通用庫(或一組庫),可以通過清晰的API提供業務邏輯/數據訪問。相同的庫可用於不同的UI,如ASP.NET和窗體 - UI必須使用接口和工廠(或DI框架)來訪問該層。優勢在於您可以通過進行中的調用獲得性能提升。另一方面,使用進程內層的桌面客戶端無法輕鬆縮放或無法通過互聯網使用。基於WCF的應用程序服務器解決了這些問題。我更喜歡創建將由基於服務器的UI(如ASP.NET)使用的進程內層,而基於客戶端的UI在同一進程內層使用WCF外觀。
從我瞭解你正在試圖做的會是這樣的:
ASP.Net應用程序 - > WCF服務 - > DB
應用程序調用的方法對WCF服務,它從數據庫讀取一些數據並創建一個報告並將其發送迴應用程序。如果這是意圖,應用程序和服務都在同一臺機器上,那麼你可以使用命名管道綁定,這是非常快的,並且是同一臺機器上系統的首選通信方式。你也可以使用更具擴展性的http綁定。但是WCF框架的巨大優勢在於,您可以輕鬆更改綁定而不影響功能。所以,我建議你使用命名管道(net.pipe://),然後在需要時切換到Http。
使用WCF只是爲了保持代碼分離的情況下,你希望或需要去另一個UI是不合邏輯的。你可以做的是將所有的邏輯寫入單獨的程序集。當你在WCF中實現它時,你最終會這樣做。 WCF只是一個託管框架,並將底層程序集託管在一個進程外主機中。如果您有一個服務使用者,並且您希望將其託管在同一臺計算機上(如後),則可能已在進程中使用它。您的代碼隱藏代碼可以引用單獨程序集中的數據訪問類。您通過代理訪問WCF服務時所做的同樣的事情。
- 1. IIS WCF服務託管與Windows服務
- 2. Windows服務與託管的WCF服務
- 3. 作爲Windows服務託管WCF服務
- 4. Windows服務託管的TCP WCF服務
- 5. WCF服務託管服務器
- 6. 託管在Windows服務託管的WCF服務
- 7. WCF和託管Windows服務
- 8. 託管的Windows服務中託管的WCF服務使用WCF服務應用程序連接
- 9. 安全到WCF服務託管在Windows服務與NetNamedPipeBinding
- 10. 從Windows服務連接到WCF服務
- 11. WCF服務與Windows服務
- 12. 託管WCF服務
- 13. WCF服務託管
- 14. 在Windows 2008的Windows服務中託管WCF(mex endpoint)服務
- 15. DI與Windows服務中的Castle Windsor託管WCF服務
- 16. Azure API App服務託管wcf服務
- 17. 託管Web服務/ WCF服務?
- 18. Ninject在WCF休息服務託管在Windows服務
- 19. 在託管WCF服務WAS
- 20. DataContractException在託管WCF服務
- 21. ASP.NET/SQL服務器託管
- 22. 在windows服務中託管的WCF服務的異步調用
- 23. wcf服務託管在Windows服務安裝錯誤
- 24. WCF服務託管在Windows服務通過網絡TCP
- 25. 託管在Windows服務上的WCF服務中的log4net
- 26. WCF服務託管在Windows服務+ Silverlight + Silverlight應用程序
- 27. 在Windows服務中託管的WCF服務(basicHttpBinding)的WSDL URL
- 28. 部署基於TCP的WCF服務,託管在Windows服務中
- 29. 我可以在Windows服務中託管WCF服務嗎?
- 30. 在Windows服務中託管多個Wcf服務
只需從您的ASP.NET應用程序調用該服務!?!?! –
默認情況下WCF是「每次通話」,例如,每次調用都將創建一個新的服務類,它將讀取一些數據,將其返回,然後進行處理。沒有「已經讀過的數據」在WCF運行時系統的任何地方徘徊...... –
@marc_s我的意思是我想要將後端數據庫的記錄讀入asp.netweb頁面,以通過此WCF服務生成報告。 –