Interoperability between VB and Python under ASP

Discussion in 'Python' started by Max Ischenko, Sep 3, 2003.

  1. Max Ischenko

    Max Ischenko Guest

    Hi,

    I've started to develop under Microsoft ASP framework, which allows
    different lang. used in a ActiveX page. I wonder about possible
    strategies to use Python modules from VBScript <%%> includes.

    Right now I'm thinking about this approaches:
    - create a COM server in Python to be able to call it from VB.
    Drawbacks: cumbersome and (probably) slow.
    - pure data exchange. Python code sets some data in global env. that is
    afterwards read by VB. Drawbacks: very limited in nature.
    - convert all VB pieces that need access to Python modules into Python.

    Have I missed something or could anyone comment on this?
    Discussion is wellcomed.

    --
    Regards, Max.
    Max Ischenko, Sep 3, 2003
    #1
    1. Advertising

  2. Max Ischenko

    bigdog Guest

    Max Ischenko <> wrote in message news:<bj46f2$kk2$>...
    > Hi,
    >
    > I've started to develop under Microsoft ASP framework, which allows
    > different lang. used in a ActiveX page. I wonder about possible
    > strategies to use Python modules from VBScript <%%> includes.
    >
    > Right now I'm thinking about this approaches:
    > - create a COM server in Python to be able to call it from VB.
    > Drawbacks: cumbersome and (probably) slow.
    > - pure data exchange. Python code sets some data in global env. that is
    > afterwards read by VB. Drawbacks: very limited in nature.
    > - convert all VB pieces that need access to Python modules into Python.
    >
    > Have I missed something or could anyone comment on this?
    > Discussion is wellcomed.


    I've mostly done option 3, converting what I needed to Python. It
    results in a lot cleaner code (you can't mix html elements and code
    very well, for example, in vb you can put a for loop around a section
    of HTML, whereas in Python you can't) and the time it took to convert
    the code (not much, really, it's a pretty clean port in most cases)
    has been more than paid back in maintainability.

    Another thing I've done, rather than just port all the code in a given
    piece, is to find things I can modularize and then move only the
    pieces to Python that I think make sense. For example, I've got a page
    set up that you can dynamically add content to, kind of like a wiki,
    but much more structured. The only part that is in Python is the
    script that edits the HTML file, as file access and manipulation is so
    much easier in Python than in an VBScript. All of the user elements
    are either in straight html pages or in asp with vbscript. I post my
    results to the Python page, update the file, then Response.Redirect to
    the page I'm interested in viewing after the file is updated.

    I think your next best bet is creating COM servers, or perhaps using
    Python within a CGI app for particular pieces of logic. I would avoid
    the data exchange route.

    I don't know if this will help, but it might be worth a shot.
    http://vb2py.sourceforge.net/ I've never used it myself, I only point
    it out as a curiosity I've heard of
    bigdog, Sep 3, 2003
    #2
    1. Advertising

  3. bigdog wrote:
    > Max Ischenko <> wrote in message news:<bj46f2$kk2$>...
    >
    >>Hi,
    >>
    >>I've started to develop under Microsoft ASP framework, which allows
    >>different lang. used in a ActiveX page. I wonder about possible
    >>strategies to use Python modules from VBScript <%%> includes.

    >
    > I don't know if this will help, but it might be worth a shot.
    > http://vb2py.sourceforge.net/ I've never used it myself, I only point
    > it out as a curiosity I've heard of


    Although it isn't (currently) targetted at VBScript, the CVS version of
    vb2py might help if you have reasonably sized blocks of VBScript code to
    convert. It hasn't been tested on VBScipt specifically but the parser
    should work for most things and I'd certainly be interested to hear of
    any specific problems with ASP scripts.

    Out of the box it won't even recognize code in a .asp page, but I threw
    together the following code. I'm not an expert on ASP or VBScript but
    even if this is not correct it might point you in the right direction if
    you want to try a convert-to-python route ....

    test = """
    <html>
    <%

    function factorial(x)
    if x = 0 then
    factorial = 1
    else
    factorial = x*factorial(x-1)
    end if
    end function

    %>
    </html>
    """

    from vb2py.vbparser import parseVB, VBCodeModule
    import re

    def translateScript(match):
    """Translate VBScript fragment to Python"""
    block = parseVB(match.groups()[0], container=VBCodeModule())
    return "<%%\n%s\n%%>" % block.renderAsCode()

    converter = re.compile(r"\<%(.*?)%\>", re.DOTALL + re.MULTILINE)
    print converter.sub(translateScript, test)


    .... which should output:

    """
    <html>
    <%
    from vb2py.vbfunctions import *

    def factorial(x):
    if x == 0:
    _ret = 1
    else:
    _ret = x * factorial(x - 1)
    return _ret

    %>
    </html>
    """

    You'll need the CVS version to get this to work - the v0.1.1 doesn't
    have the full parser and the v0.2 release is a couple of weeks off yet.

    If you do decide to try this route, I'd be very interested to hear of
    any specific issues that come up with translating ASP/VBScript to Python.


    Paul

    =========================
    Paul Paterson

    vb2py :: A Visual Basic to Python Conversion Toolkit
    http://vb2py.sourceforge.net
    Paul Paterson, Sep 4, 2003
    #3
  4. Max Ischenko

    Max Ischenko Guest


    > I've mostly done option 3, converting what I needed to Python. It
    > results in a lot cleaner code (you can't mix html elements and code
    > very well, for example, in vb you can put a for loop around a section
    > of HTML, whereas in Python you can't) and the time it took to convert
    > the code (not much, really, it's a pretty clean port in most cases)
    > has been more than paid back in maintainability.


    That's sounds encouraging, thanks. I'd probably go this route.



    --
    Regards, Max.
    Max Ischenko, Sep 4, 2003
    #4
  5. Max Ischenko

    Max Ischenko Guest

    Paul Paterson wrote:

    >> I don't know if this will help, but it might be worth a shot.
    >> http://vb2py.sourceforge.net/ I've never used it myself, I only point
    >> it out as a curiosity I've heard of

    >
    >
    > Although it isn't (currently) targetted at VBScript, the CVS version of
    > vb2py might help if you have reasonably sized blocks of VBScript code to
    > convert. It hasn't been tested on VBScipt specifically but the parser
    > should work for most things and I'd certainly be interested to hear of
    > any specific problems with ASP scripts.


    That's seems like an interesting idea!
    While I doubt that the conversion could (or, more appopriately, should)
    be done automatically, I'll check out your project, thanks.

    > If you do decide to try this route, I'd be very interested to hear of
    > any specific issues that come up with translating ASP/VBScript to Python.


    OK.


    --
    Regards, Max.
    Max Ischenko, Sep 4, 2003
    #5
  6. Max Ischenko

    Max Ischenko Guest

    Re: Using Python under ASP


    > Another thing I've done, rather than just port all the code in a given
    > piece, is to find things I can modularize and then move only the
    > pieces to Python that I think make sense. For example, I've got a page
    > set up that you can dynamically add content to, kind of like a wiki,
    > but much more structured. The only part that is in Python is the
    > script that edits the HTML file, as file access and manipulation is so
    > much easier in Python than in an VBScript. All of the user elements
    > are either in straight html pages or in asp with vbscript. I post my
    > results to the Python page, update the file, then Response.Redirect to
    > the page I'm interested in viewing after the file is updated.


    I got a question on this issue.
    When modularizing Python code, how does one handle data exchange between
    Python snippets?

    I mean, you can't store anything complicated in a Session (for
    instance). Yeah, I can pickle/unpickle any Python object but that feels
    like a kludge. Should I setup some global hash, keyed by SessionID to
    store data there?

    --
    Regards, Max.
    Max Ischenko, Sep 4, 2003
    #6
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Sascha Moellering
    Replies:
    2
    Views:
    2,831
    Sudsy
    Aug 11, 2004
  2. Mohammad
    Replies:
    0
    Views:
    569
    Mohammad
    Feb 21, 2006
  3. mc
    Replies:
    6
    Views:
    519
    Larry Bates
    Jan 11, 2007
  4. Evren Esat Ozkan
    Replies:
    3
    Views:
    709
    Paul Rubin
    Jul 17, 2008
  5. Replies:
    32
    Views:
    1,522
    Richard Maine
    Aug 24, 2009
Loading...

Share This Page