IronPython for ASP.NET
바로 전 포스트에서 얘기했다시피 IronPython은 .NET으로 구현되어져있기때문에 IIS위에서 쌩쌩 잘 돌아간다. 돌아가게 하기위해서는 이런저런 작업이 필요하겠지만, Setting에 어려움이 있다고 느꼈는지 MS에서는 고맙게도 설치형(아직 CTP지만)으로 제공해주고 있다. 더욱 더 고맙게도 설치후에는 Visual Studio 2005 (혹은 Visual Web Develper 2005 Express)에 기능들이 추가된다.
IronPython for ASP.NET을 다운받으려면 여기를 클릭~
설치파일은 MWSetup.msi. 실행하고 완료하면 ProgramFiles에 Microsoft IronPython for ASP.NET폴더가 생긴다. 폴더로 가보면 “AddPyScriptMap.vbs”파일이 있다. 가볍게 실행~ 이 파일은 간단히 말해서 .py를 .aspx(.cs)돌리듯이 돌리게 하는 스크립트다.
자 이제 Visual Studio 2005로 가서 새 웹사이트를 만들면 언어에 IronPython이 생긴 것을 볼 수 있을 것이다.
![]()
프로젝트 생성하면 Bin폴더에는 IronMath.dll, IronPython.dll, Microsoft.Web.IronPython.dll가 생기고, 루트에는 Global.py도 있고 App_Script폴더도 있다. App_Code랑 비슷한 폴더인 듯 싶음.
기본 설정을 바꾸려면 아까의 Microsoft IronPython for ASP.NET폴더 밑의 WebAppTemplate를 바꿔주면 될듯하다. C#일때와 특별히 다른 것은 없으니 겁먹지 말고 아무거나 만들어보자.
<div>
<asp:Label ID=”lbl1″ runat=”server” Text=”Hello, IronPython” />
<asp:Button ID=”btn1″ runat=”server” Text=”Click ME!” OnClick=”btn1_Click”/>
</div>
</form>
굵은 이탤릭부분을 추가한 후 F7키를 눌러 소스코드로 이동.
소스코드에는 익숙한 네임스페이스들(System이나 System.Data등등)은 보이지만 쫌 낯설게 보인다. C#일때와 마찬가지로 Page_Load는 기본적으로 추가되어져 있다. 여기서 주의할 점은 C#에서처럼 “디자인모드”에서 버튼을 더블클릭한다거나 하지 마시길. 이벤트 추가 절대 안됨. 손으로해야함;; 또 주의 점. “.”을 아무리 찍어도 Intellisense(자동완성)은 안먹는다. 자자 그럼 하려던 btn1_Click를 추가. 모두 손노가다.
lbl1.Text = “Hello, IronPython For ASP.NET”
지겹게 따라붙던 “object sender, EventArgs e”는 안써줘도 된다. F5를 눌러 실행. 매우 잘 될것이다!!
그러면 지겹게 따라붙던 sender나 EventArgs가 필요하다면? 그냥 붙여주면 된다. 둘 다 붙여주면 당연히 잘되고, 둘 중에 sender만 붙여주어도 된다.
lbl1.Text = “Hello, IronPython For ASP.NET<br/>”+sender.ID
실행하면 역시나 너무너무~~ 잘된다.
여기서 특이할 만한점 하나
lbl1.Text = “Hello, IronPython For ASP.NET<br/>”+sender
이건 될까?
안타깝게도 안된다. “스트링+객체”의 경우 C#은 객체를 자동으로 ToString해주었는데 IronPython은 ToString()을 명시적으로 불러줘야한다.
그럼 Python의 기본 기능들은 잘되는지 확인
sum = 0
r = range(0,10)
f = add(5)
for x in r:
sum += f(x)
lbl1.Text = sum.ToString()
def add(n):
return lambda x: x + n
내용인즉 “0~9까지 리스트를 만들고, 각 값에 5씩 더한후 리스트의 값들을 모두 더한다”임. 종합하자면 5부터 14까지 덧셈을 구한다는 것.
검산 : (5+14) * 10 / 2 = 95
lambda, range 등등 다 잘된다!!!
마지막으로 하나만 더
lbl1.Text = dir(lbl1).ToString()
잘된다!!~~~
Comments(0)








