History
Anthem was originally written as an exercise for myself during one of the ASP.NET
classes I (Jason Diamond) teach for DevelopMentor. A student had showed me how he
was using Michael Schwarz' Ajax.NET which seemed cool but had one serious limitation
(in my opinion): it did not integrate with the page lifecycle which prevented you
from accessing the server-side controls on your page during call backs.
So I spent some time during our labs that week to write what I was originally calling
"My Ajax.NET". I gave it to my student who started using it on his project. I also
posted about it on my weblog where other people found it (I have no idea other people
were even reading my weblog) and started using it.
Eventually, I realized the name "My Ajax.NET" was too confusing so renamed the project
to "Anthem". It's now hosted on SourceForge with a small, but active, community
of users.
How It Works
Anthem is actually really simple. When you trigger a call back from your page, the
XMLHttpRequest object is used to POST back to the page. I try, as much as possible,
to emulate what a normal POST request would look like. This means that the request
contains the values for all of the form controls on the page including the ASP.NET
specific hidden field like __VIEWSTATE. As far as the page on the server is concerned,
a normal post back is occuring. The page fires its Init event, transfers state into
the controls, fires its Load event, performs validation, etc. I even let it go through
its normal rendering process.
After the page on the server does its thing, I capture the HTML of all the "Anthem"
controls on the page and "return" that to the client which uses innerHTML to update
those controls right there in the browser. This is, admittedly, a hack but it works
surprisingly well. And, for the most part, you can just pretend you're working with
"normal" ASP.NET pages and controls without having to learn a whole new set of APIs.
Support
I work on Anthem because I enjoy it. I'm not charging anybody any money for it which
means that nobody has the right to expect me to support them. If you want my help,
I'll be happy to do so but you'll have to wait until I can find the time. Note that
you'll have a better chance of me not "losing" your bug report by submitting via
the tracker on SourceForge. I get a lot of email and have a really hard
time trying to reply to it all. I try but often fail.
To help me help you, please submit your bug reports as a single-page example (much
like the pages in the project you're staring at right now). If there are any dependencies
on databases, web services, or code that I can't run, I'll immediately push your
request to the end of my queue which means I'll probably never get to it.
There are two mailing lists specific that you can subscribe to via the Anthem project
summary page on SourceForge. One is intended for users of Anthem and the other is
intended for developers. Feel free to subscribe to either or both. All SourceForge
tracker items and CVS commit messages get emailed to the developer list which makes
it easy for you to keep updated on how Anthem is changing.