ASP.NET Container-Like Framework
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Nalarium.Web.Processing
.gitignore
Nalarium.Web.Processing.sln
README.md

README.md

Themelia Pro website on Azure

Themelia (aka Nalarium.Web.Processing; historical) - now defunct project about drove me mad in 2008. It's the largest project I've ever worked on. It's ASP.NET on crack (a concept inspired by my collegue/mentor). I like to think of my ASP.NET MVP being my reward for this waste of time. I know how to design and build things, but I have ZERO clue how to do marketing, so I let it die.

Wonder how huge this project was? Go look: http://themeliapro.azurewebsites.net. Click on "Read documentation" on the left. All the docs are there. I didn't update all the images. Don't care. My goal was to reinvent web development in .NET. It was a success, but I didn't know what to do with it.

So... the most low-level component was the HTTP module: everything ran through a master HTTP module brain. You could define a website, then inherit one site from another (multi-tenancy through OOP XML config). You controlled your website via a surface area (i.e. white-listing): You controlled how you wanted your site to be accessed; locked down by default. Want /contact? Define it. It also ran off "web domains" (like app domains, but for your web site; think of lightweight virtual applications.) Then there was the component model (programmatic packages of stuff analagous to the following XML). It was crazy huge. I wanted to reinvent web development in .NET.

Just for fun, below was one website's config file:

View samples as ThemeliaProSamples.

Totally random Themelia Pro sample

  <web.processing>
    <webDomains>
        <add default="/Page_/Home/Root.aspx" catchAllMode="RedirectToRoot">
            <endpoints>
                <add text="purchase" type="Page" parameter="/Page_/Home/Purchase.aspx" />
                <add text="howto" type="Page" parameter="/Page_/Home/HowTo.aspx" />
                <!---->
                <add text="sample/" type="Sequence" parameter="{Sample}" />
                <add text="account" type="Sequence" parameter="{Account}" />
                <add text="license" type="Sequence" parameter="{License}" />
                <add text="register" type="Sequence" parameter="{Register}" />
                <add text="support" type="Sequence" parameter="{Contact}" />
                <add text="problem" type="Sequence" parameter="{Contact}" />
                <add text="contact" type="Sequence" parameter="{Contact}" />
                <add text="verify" type="Sequence" parameter="{Verification}" />
                <!---->
                <add text="license/info" type="Page" parameter="/Page_/License/Info.aspx" />
                <add text="register/check" type="Registration" />
                <add selector="EndsWith" text="emailsend/" type="EmailProcessing" />
            </endpoints>
            <factories>
                <add type="NalariumWS.Web.Processing.HandlerFactory, NalariumWS.Web" />
            </factories>
            <security defaultAccessMode="Allow"
                      loginText="login"
                      loginPage="/Page_/Security/Login.aspx"
                      defaultLoggedInTarget="/"
                      validatorType="NalariumWS.Web.Security.SecurityValidator, NalariumWS.Web">
                <exceptions>
                    <add key="account" />
                    <!--<add key="contact" />-->
                    <add key="support" />
                    <add key="license" />
                </exceptions>
            </security>
        </add>
        <add default="{Sample}" name="SimpleContent" path="sample/simplecontent">
            <endpoints>
                <add text="process" type="NalariumWS.Web.DownloadHttpHandler, NalariumWS.Web">
                    <parameters>
                        <add name="FilePath" value="C:\_REFERENCE\PUBLIC\JampadTechnologySimpleContentViewer.zip" />
                        <add name="OutputName" value="JampadTechnologySimpleContentViewer.zip" />
                        <add name="ContentType" value="application/zip" />
                        <add name="Size" value="31036" />
                    </parameters>
                </add>
            </endpoints>
            <!--<accessRules>
                <add type="HttpReferrer" text="{blank}" actionType="Write" parameter="" />
            </accessRules>-->
        </add>
        <add default="/Page_/Home/Download.aspx" name="Download" path="download">
            <endpoints>
                <add text="process" type="NalariumWS.Web.DownloadHttpHandler, NalariumWS.Web">
                    <parameters>
                        <add name="FilePath" value="C:\_REFERENCE\RELEASE\Beta1\ThemeliaPro.Beta1.zip" />
                        <add name="OutputName" value="ThemeliaPro.Beta1.zip" />
                        <add name="ContentType" value="application/zip" />
                        <add name="Size" value="271509" />
                    </parameters>
                </add>
                <add type="File" text="source/lib/trace-latest.js">
                    <parameters>
                        <add name="target" value="/Resource_/Source/Client/Lib/Trace-1.5.js" />
                        <add name="extra" value="text/javascript" />
                    </parameters>
                </add>
            </endpoints>
            <!--<accessRules>
                <add type="HttpReferrer" text="{blank}" actionType="Write" parameter="" />
            </accessRules>-->
        </add>
        <add name="ImageRendering" path="image/render/download" default="{Handler NalariumWS.Web.TextRenderHttpHandler, NalariumWS.Web}">
            <parameters>
                <add name="ImageName" value="NalariumWS.Web._RESOURCE.Image.Download.png" />
                <add name="Text" value="Version 2.0 Beta 1" />
                <add name="TextColor" value="#ffffff" />
                <add name="TopPosition" value="32" />
                <add name="LeftPosition" value="87" />
                <add name="FontFamily" value="Calibri, Arial" />
                <add name="FontSize" value="12" />
            </parameters>
            <!--<accessRules>
                <add type="HttpReferrer" text="{blank}" actionType="Write" parameter="" />
            </accessRules>-->
        </add>
        <add name="forum" path="forum" default="/Sequence_/Forum.aspx" catchAllMode="PassToDefault">
            <components>
                <add type="Nalarium.Content.Processing.ContentComponent, Nalarium.Content">
                    <parameters>
                        <add name="domainGuid" value="9A04ACDC-55B9-4085-9FAD-A913FBC29324" />
                    </parameters>
                </add>
            </components>
            <security defaultAccessMode="Block"
                      loginText="login"
                      loginPage="/Page_/Security/Login.aspx"
                      defaultLoggedInTarget="/forum/"
                      validatorType="NalariumWS.Web.Security.SecurityValidator, NalariumWS.Web" />
        </add>
        <add name="blog" path="blog" default="{Blog}" catchAllMode="PassToDefault">
            <!--<components>
        <add type="Jampad.SimpleContent.Processing.ContentComponent, Jampad.SimpleContent">
          <parameters>
            <add name="physicalFolder" value="{AppSetting docsPhysicalFolder}" />
          </parameters>
        </add>
      </components>-->
        </add>
        <add name="docs" path="docs" default="{Documentation}" catchAllMode="PassToDefault">
            <components>
                <add type="Jampad.SimpleContent.Processing.ContentComponent, Jampad.SimpleContent">
                    <parameters>
                        <add name="physicalFolder" value="{AppSetting docsPhysicalFolder}" />
                    </parameters>
                </add>
            </components>
        </add>
        <add name="reference" path="reference" default="{Documentation}" catchAllMode="PassToDefault">
            <!--<components>
        <add type="Jampad.SimpleContent.Processing.ContentComponent, Jampad.SimpleContent">
          <parameters>
            <add name="physicalFolder" value="{AppSetting referencePhysicalFolder}" />
          </parameters>
        </add>
      </components>-->
        </add>
    </webDomains>
    <!--<sequences>
        <add name="Register">
            <views>
                <add name="Input" />
                <add name="VerificationSent" />
                <add name="VerificationSuccess" />
                <add name="VerificationError" />
            </views>
        </add>
    </sequences>-->
</web.processing>