1、 Web應用程序中的WCF的源代碼會靜態編譯爲DLL文件放在bin目錄下,而Web網站WCF的代碼是放在App_Code文件夾下,會在網站訪問的時候進行動態編譯。
2、兩者處理*.svc文件的方式不一樣
Web應用程序的svc文件格式
<%@ ServiceHost Language="C#" Debug="true" Service="WebApplicationWCF.TestService" CodeBehind="TestService.svc.cs"%>
在Web應用程序生成網站時會把CodeBehind所指示的文件編譯成dll文件,之後在部署網站的時候CodeBehind就不起作用了,可以把這個內容刪除,同時其所對應的源代碼文件也可以刪除,只需知道WCF所對應的Service(名字空間+類)就可以了。
Web網站的svc文件格式
<%@ ServiceHost Language="C#" Debug="true" Service="Service" CodeBehind="~/App_Code/Service.cs" %>
Web網站中svc文件中Service和CodeBehind都是必不可少的,因爲在部署的時候,網站根據CodeBehind所對應的源文件(必須在App_Code文件夾下)進行動態編譯,訪問的時候則訪問Service所對應的類。
3、Web應用程序在修改WCF源代碼之後需要重新編譯,而Web網站在修改WCF之後需用重新編譯,在第一訪問的時候系統會自動進行動態編譯的
4、Web應用程序的WCF源代碼生成的DLL文件,而Web網站的源代碼是存放在網站上,兩者對源代碼的安全管理有所不同。對於代碼安全問題,可以採用一些其它方式規避
5、Web應用程序所對應的主文件夾可以直接以Web網站的形式部署到IIS中,但是若修改了其中的源代碼,則需要通過VS等工具重新編譯更新相應的DLL之後,修改才能生效。