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之后,修改才能生效。