[Mono-list] Would mono support this kind of application?

Stefan Matthias Aust sma@3plus4.de
Sun, 5 May 2002 11:49:58 +0200


To familiarize myself with C#, I'm thinking about creating a wiki/blogger
application using C#.  While I'm working on XP, our servers here run Linux
and I want to keep it that way.  So, using C# for this application does only
make sense to me if I can use mono to eventually host the applicaion on a
Linux box.

I'd like to ask whether mono already supports the features needed.  If you
like, please also make suggestions if I might have forgotten to make use of
some better .NET feature.

On .NET I'm probably suppost to use ASP to create web applications.
Unfortunately I don't know anything about that (JSP and PHP are the only *P
technologies I know) and I don't know whether ASP.NET is supported by mono
yet (would it use Apache as Webserver, similar to Tomcat?).

So I'm thinking about using CGI here.   It seems that I can access the
Environment via


and parsing a query string isn't that difficult.  FileUpload would be,
however.  So is there any class from System.Web, I could use?  HttpRequest
and friends all look like there're just for ASP usage.

Actually, I'd love to have something similar to Java Servlets.  ASP ist
probably very similar, but I know Servlet programming very well and a
compatible API would be a big plus.

I think, I'd keep pages as XML files, removing the need for a database.
FileIO and XML processing is part of mono already, isn't it?  Instead of
using XSLT to translate XML data into HTML applications, I think about using
a template macro system similar to jakarta Velocity.  This is probably
something I have to create myself.

A very common feature for wiki servers is that the user need not use HTML.
So I have transform the wiki syntax into HTML. I'd like to make heavy use of
regular expressions here.

BTW, in Java, I'd have used an anonymous inner class to create a regex
replace method, something that enumerates a string and applies some code to
any occurence of a regex.  Ruby has a very similar method.

 String re_replace(String s, String re, IBlock block) {
    // apply re on s and for each match, call block with the match result
    // combine a new string where matches are replaced by the the result
    // of the called block and return that string
 String s = re_replace("a$A, $B", "(\\$\\w+)", new IBlock() {
   public String call(Match m) {
     return macros.get(m.group(1));

In C#, I don't have anonymous classes (aka poor man's closures).  Am I
suppost to use delegates here?  Or do I have to create a Ruby.NET first?
;-)  (Aside, there's already juch a project, but its documentation is mostly

Stefan Matthias Aust   //
www.3plus4software.de // Inter Deum Et Diabolum Semper Musica Est