dotnetpowered.com - Brian Ritchie's .NET Development Site   [ Home ]

Application Server

I've been working on an application server that would host remoting, web, and other applications for the Mono project. 

Download

  • 0.2: Binary & Source Code
    • Completely Redesigned Administration UI. See icon credit below.
    • Supports deploying & mounting application packages (.zip,.tar)
    • Ability to "publish" applications directory via FTP.  You can then get, put, etc. to update files remotely.
    • Basic user manager
    • Modified Web Application to use the Mono XSP Server instead of Cassini.  Cassini is now an optional download (see below).
    • Many bug fixes.
  • 0.1: Initial alpha release 

Features 

  • Pluggable Application Architecture
    • Base application class allows an application type to be managed by the framework
    • Web Application class can serve ASP.NET pages utilizing the XSP Server developed by Daniel Lopez Ridruejo (daniel@rawbyte.com) and Gonzalo Paniagua Javier, Ximian Inc. (http://www.ximian.com)
    • Alternate Web Server is also availalbe based on the Cassini web server released by Microsoft.  [ Download ]
    • FTP Application class serves files to FTP clients.
      The ftp server was adapted from a
      server by Pramod Singh (and used with permission).  It was ported to the final release of .NET, modified to run outside the GUI, and integrated with the security framework.
    • Remoting Application class hosts .NET objects.  Check out my .NET Remoting Central page for links on custom channels, tips, etc.
    • Extendable for other services: LDAP, POP3, SMTP, etc.
  • Web-based Admistration Program
    • The server self-hosts an ASP.NET application for managing the applications allowing the settings to be editted.
    • Using icons designed by Jakub "Jimmac" Steiner from Miguel
    • Add/Edit/Delete Users within the Admin UI
    • View the Screenshots
  • Application Configuration/Installation
    • All configuration is stored in XML files either within the application directory (similar to web.config) or in the server directory.
    • Applications can be installed by placing them in the "applications" directory, or uploading a installation package (.zip or .tar) using the interface.  This form of deployment is similar to Tomcat.
  • Container Application
    • The container currently runs as a console applications (will run as a service in the future).  Similar to COM+/IIS applications but can be web, ftp, remoting, etc.
    • Publishes remote objects for mangement (unload, reload, etc.)
  • Other features
    • Integrated Security: maintains list of users and roles.  This is used to secure the applications, FTP access, and is available for hosted ASP.NET applications.
    • Logging: The container application listens to trace messages from the hosted applications and logs them into files.  These messages are then viewable within the admin site.

To-Do List

  • Administration UI 
    • Use interface within admin gui instead of classes:
      • IClientSessions (FTP App)
      • IWebServices (Web App, Cassini App)
    • Provide GetProperties() method to return name/value pairs to display. Change admin app to display this instead of reading properties directly off objects. (For first tab on application page)
    • GetWebServices() method should return WebServiceDescriptor objects
    • Add ReadTextFile, WriteTextFile. Update admin GUI to allow editting of text files.
    • Add ReadBinaryFile. Update admin GUI to display image files. - Add WriteFile. Update admin GUI to allow uploading of files into the application directories.
    • Support multiple roles within the admin GUI - Secure admin GUI with login page
  • User Administration
    • Role publishing- Allow installed applications to publish which roles they support. 
    • Add SQL-based user storage. 
  • Container Application
    • Run as service or console mode
    • Add more configurable option to server's .config file