【问题标题】:Why "CodeBehind" on Web App or WCF App?为什么在 Web App 或 WCF App 上使用“CodeBehind”?
【发布时间】:2013-10-24 20:29:18
【问题描述】:

我想澄清一下 MSDN 文档中的矛盾之处。

MSDN 说得很清楚the distinction between a "web site" and a "web application." 例如,它说如果...,您应该使用“应用程序”而不是“站点”

您希望避免将源代码放在生产服务器上。

好的,听起来不错,但是当您创建 ASP.NET MVC“应用程序”或 WCF 服务“应用程序”时,您首先会得到一个带有 CodeBehind 的描述文件,该文件指定要引用的源代码。例子:

对于 ASP.NET MVC

<%@ Application Codebehind="Global.asax.cs" Language="C#" Inherits="Sample.MvcApplication" %>

对于 WCF 服务应用程序

<%@ ServiceHost CodeBehind="MyService.svc.cs" Language="C#" Service="Sample.MyService" %>

在这两个“应用程序”示例中,“代码隐藏”假定您已将源代码放置在生产服务器上。简而言之,您从 Visual Studio“应用程序”或“项目”模板收到的内容基本上与 MSDN 文档中的说法相矛盾。

让这更奇怪的是,至少在某些情况下,不需要这样。例如,另一种生成WCF服务描述文件的有效方式是这样的:

<%@ ServiceHost Language="C#" Debug="true" Service="Sample.AccountService"   %>
<%@ Assembly Name="Sample.AccountService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"  %>

使用“Assembly”指令,无需指定 CodeBehind 目标。如果 WCF 应用程序(与 WCF 站点相反,它也是 Visual Studio 选项)的目的是在生产服务器上没有源代码,那么为什么没有生成服务定义文件,如上面最后一个示例所示?

允许这种明显矛盾的理由是什么?

【问题讨论】:

  • 我不同意。代码隐藏被编译成程序集,这就是使用的,无论是否使用代码隐藏属性。没有矛盾。

标签: asp.net asp.net-mvc wcf visual-studio iis


【解决方案1】:

您希望避免将源代码放在生产服务器上。

这是指使用非编译代码的能力。通过网站,您可以将 aspx.csaspx.vb 文件(以明文形式)沿 aspx 文件复制,并且让他们跑。您也可以以明文形式修改它们,因为它们没有被编译。

Web 应用程序不同,因为必须编译,源代码 存在于 DLL 中。

【讨论】:

    猜你喜欢
    • 2014-08-12
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多