逐步改用 IronPython 开发你的 ASP.NET 应用程序

IronPython for ASP.NET 的 CTP 已经发布有一段时间了,我们在看了官方提供的范例之后,相信对一个 ASP.NET 应用程序中完全使用 IronPython 开发还是有一些担心的。毕竟目前仅仅是 CTP 版本,并且缺乏 Visual Studio 的 Intellisence 的支持,在调试方面也有一些不足。

不过,今天我做了一些实验,发现可以在已有的 C# 的 ASP.NET 项目中引入 IronPython,而不会影响到原先程序的功能,这样,我们就可以混合使用 C#, IronPython 两种语言来开发 ASP.NET 了。

具体的步骤是这样的:

1. 首先,我们用通常的方式建立一个 C# 的 ASP.NET website 项目,或者 Web Application Project. 这两种我都做过实验,并且都可以支持 IronPython. 下面我就拿 Web Application Project 来举例。

2. 然后,添加对 IronPython.dll, IronMath.dll, Microsoft.Web.IronPython.dll 三个 dll 的引用。这三个 dll 都可以在官方发布的 IronPython for ASP.NET 例子里找到。

csipydemo1.JPG

3. 在 web.config 中添加对 IronPython 语言的一些支持。

<configuration>
  
<appSettings/>
  
<connectionStrings/>

  
<system.web>
    
<!-- 修改页面的 Parser 以便支持 IronPython -->
    
<pages pageParserFilterType="Microsoft.Web.IronPython.UI.NoCompileCodePageParserFilter" compilationMode="Auto" />

    
<authentication mode="Windows" />

    
<compilation debug="false">
      
<assemblies>
        
<add assembly="Microsoft.Web.IronPython, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      
</assemblies>
    
</compilation>

    
<!-- 添加 httpModule -->
    
<httpModules>
      
<add name="DynamicLanguageHttpModule" type="Microsoft.Web.IronPython.DynamicLanguageHttpModule"/>
    
</httpModules>

    
<!-- 添加用于处理 python 程序的 http handler -->
    
<httpHandlers>
      
<add path="Web_*.py" verb="*" type="Microsoft.Web.IronPython.SimpleHandler" />
      
<add path="*.py" verb="*" type="System.Web.HttpForbiddenHandler" validate="true" />
    
</httpHandlers>
  
</system.web>
</configuration>

上面的文件中我做了一点注释。关于详细的原理描述,请参阅我翻译和摘要的白皮书。想了解详细原理的朋友,可以用 Reflector 查看 Microsoft.Web.IronPython.dll,会有很多收获的。

4. 在项目下添加 App_Script 文件夹。

然后你就可以在这下面添加一些 .py 文件了。其作用就像 App_Code 一样。

csipydemo2.JPG

在这个 demo 里面,我写了一个简单的 foo.py:

def Foo():
    
return 'foo'


5. 现在,可以用 IronPython 创建页面了。但是由于当前建立的是 C# 类型的项目,我们有一些动作需要手工来调整。
首先添加一个普通的 WebForm,比如命名为 ipy1.aspx, 然后将其 .aspx.cs 和 .aspx.designer.cs 文件删除。下面我们需要对 ipy1.aspx 的 Page Directive 做一些调整:

<%@ Page Language="IronPython" Codebehind="ipy1.aspx.py" %>

接下来,我们手工给这个页面附加后台代码文件 ipy1.aspx.py,需要注意的是,用 IronPython 建立的 aspx 页面和后台代码文件之间,并不是类的继承关系。关于这一点,在白皮书中也有详细的描述。
这个文件的内容如下:

from System import Random
import foo

def Page_Load():
    Response.Write(foo.Foo())

这里我们引用了刚才定义的 foo.py 模块中的函数。

6. 打开 IE 看一下:

csipydemo3.JPG

同时,在这个项目下用 C# 编写的程序不受任何影响:

csipydemo4.JPG

通过上面的例子可以看到,在我们对 IronPython for ASP.NET 仍然不够放心的情况下,可以通过这种方法,在已有的应用程序中逐步使用 IronPython,来简化一些常规页面开发过程!(毫无疑问,IronPython 是简单的,不是吗? :) )

这里附上例子的代码

 

出处:http://www.cnblogs.com/RChen/archive/2006/12/02/cs_ipy_aspnet.html

posted on   jack_Meng  阅读(842)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2014-12-02 C# 实现程序只启动一次(总结)
2014-12-02 C# 实现程序只启动一次(实现程序自重启)
2014-12-02 C# 实现程序只启动一次(多次运行激活第一个实例,使其获得焦点,并设置窗口在最前端显示)
2014-12-02 C#检测应用程序重复启动----函数检测(可以在多用户登录情况下检测)
2014-12-02 C#防止程序多次运行
2014-12-02 给System.Timer类的Elapsed事件加锁
2014-12-02 手缝针法大全--缝补衣服针法(图文讲解,转自汉服制作研习吧)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

支付宝打赏

主题色彩