在App_Code脚本中,使用 C#

分享于 

5分钟阅读

Web开发

  繁體 雙語

提供了几个酷而有用的特性,使 C# 与PHP之间的互操作性更加容易。 在这篇文章中,我将展示其中的一个。

用例

设想几个用例。

  • 你拥有由许多. php 脚本组成的PHP网站,你希望扩展它的功能,或者完全重写它的后端到 C#。 你已经习惯了,你可以将你的C# 代码写到特殊的App_Code 文件夹。
  • 你已经拥有 ASP.NET 网站。 你将添加一些PHP脚本,因为你的程序员更容易,或者你已经在PHP中使用了表示层。 你仍然必须在这些PHP脚本中使用现有的C# 对象。
  • 你有PHP网站,你将慢慢迁移到 C#。 接下来必须将PHP代码的关键部分重写为 C#,而web的其他部分仍在PHP中。 这个混合网络必须在正常工作过程中工作。

所有这些情况都有共同的架构。 web上都有脚本,App_Code 文件夹中有。 并且你希望在PHP代码中无缝地使用所有的C# 方法和类,反之亦然。

设置

在发布版本之前,需要在独立的类库项目中编写 C# 代码,将它编译成程序集并将它的添加到 Web.Config 文件中。 这个过程使用中,但是开发要比它必须要慢得多。

现在这个过程由 ASP.NET 和Phalanger来处理。 你不需要配置任何东西,事情就像预期的那样。

用. NET 语言编写并在PHP代码中编写的任何 public 类,用标准的PHP语法在你的PHP代码中无缝可见。

演示

我在这里创建了简单的演示: App_Code互操作性。 演示由一个PHP页面组成,包含表示层,使用 C# 编写的。 注意,这两个世界中没有链接这两个世界的配置,它们将在任何它的他 ASP.NET 站点。

这个演示利用了Phalanger和 ASP.NET.的几个特性

  • web应用程序将记住最后请求的文本和请求数量。 这是非常容易的感谢( 真实) static 变量生活在 ASP.NET AppPool实例中。 这里技术可以用于实现非常有效的内存缓存。
  • PHP脚本自动编译到. NET 程序集中,如果更改,则自动重新编译。
  • 应用程序后端很容易用 C# 编写,或者部分写在 C# 中。 这样,web应用程序的关键部分可以在 C# 中有效实现,而在PHP中保留现有代码。
  • 最后,App_Code文件夹中的C# 代码自动在PHP代码中可见,包括命名空间。常量。属性和方法。
<b>Camels created: </b><?= Class1::$CamelsProcessed ?><br/><b>Previous camel: </b><?= Class1::$LastCamel ?><br/><?php$x = new Class1;$growncamel = $x->MakeCamelFromGet(); // $x->Camel( $_GET['babycamel'] );if ($growncamel):?><h2><?= $growncamel?></h2><?endif;?>

上面的代码显示了简单的用法,在PHP代码中无缝使用了 C# 类。 它实际上不使用任何. NET 类,但是 Class1 是用 C# 编写的。 它是从 App_Code 文件夹自动装载的。

它如何工作

App_Code利用 ASP.NET advantage自动编译特殊 /App_Code 文件夹中的所有代码。 生成的程序集放置在 HttpRuntime.CodegenDir ( 临时 ASP.NET 文件)。 可以在XML文件" App_Code.compiled"中找到程序集 NAME,在XML元素 preserve 中,属性 assembly ( 如果未以不同方式配置)。

Phalanger本身能够在之前引用. NET 程序集。 但是现在它自动加载 App_Code 程序集,不需要其他配置和编译。

App_Code 程序集在编译时加载。 这将导致几个编译时间优化,因此使用此类类自然是快速的。 另外,当更改 App_Code 内容 Phalanger automatically自动重新编译PHP脚本。

结束语

在本文中,我试图演示如何轻松地在 C# 中编写一个 PHP。 通过这种方式,你可以将现有的C# 代码库与PHP表示层集成,或者随后将PHP代码的关键部分转换为 C# 类。 你可以尝试 ASP.NET 网站我已经准备了(。 App_Code互操作性)。 插件只需要安装 Phalanger 3.0和 ASP.NET web服务器( 最简单的方法是打开 Visual Studio 2010,点击File-Open-Web站点,浏览包含演示文稿的文件夹)。 按F5并运行。


PHP  Using  scripts  
相关文章