Oren Eini

aka Ayende Rahien

Oren Eini

CEO of RavenDB

a NoSQL Open Source Document Database

Get in touch with me:

oren@ravendb.net +972 52-548-6969

Posts: 7,575
|
Comments: 51,188

Copyright ©️ Ayende Rahien 2004 — 2025

Privacy Policy · Terms
filter by tags archive
stack view grid view
  • architecture (606) rss
  • bugs (450) rss
  • challanges (123) rss
  • community (377) rss
  • databases (481) rss
  • design (893) rss
  • development (640) rss
  • hibernating-practices (71) rss
  • miscellaneous (592) rss
  • performance (397) rss
  • programming (1085) rss
  • raven (1442) rss
  • ravendb.net (526) rss
  • reviews (184) rss
  • 2025
    • May (7)
    • April (10)
    • March (10)
    • February (7)
    • January (12)
  • 2024
    • December (3)
    • November (2)
    • October (1)
    • September (3)
    • August (5)
    • July (10)
    • June (4)
    • May (6)
    • April (2)
    • March (8)
    • February (2)
    • January (14)
  • 2023
    • December (4)
    • October (4)
    • September (6)
    • August (12)
    • July (5)
    • June (15)
    • May (3)
    • April (11)
    • March (5)
    • February (5)
    • January (8)
  • 2022
    • December (5)
    • November (7)
    • October (7)
    • September (9)
    • August (10)
    • July (15)
    • June (12)
    • May (9)
    • April (14)
    • March (15)
    • February (13)
    • January (16)
  • 2021
    • December (23)
    • November (20)
    • October (16)
    • September (6)
    • August (16)
    • July (11)
    • June (16)
    • May (4)
    • April (10)
    • March (11)
    • February (15)
    • January (14)
  • 2020
    • December (10)
    • November (13)
    • October (15)
    • September (6)
    • August (9)
    • July (9)
    • June (17)
    • May (15)
    • April (14)
    • March (21)
    • February (16)
    • January (13)
  • 2019
    • December (17)
    • November (14)
    • October (16)
    • September (10)
    • August (8)
    • July (16)
    • June (11)
    • May (13)
    • April (18)
    • March (12)
    • February (19)
    • January (23)
  • 2018
    • December (15)
    • November (14)
    • October (19)
    • September (18)
    • August (23)
    • July (20)
    • June (20)
    • May (23)
    • April (15)
    • March (23)
    • February (19)
    • January (23)
  • 2017
    • December (21)
    • November (24)
    • October (22)
    • September (21)
    • August (23)
    • July (21)
    • June (24)
    • May (21)
    • April (21)
    • March (23)
    • February (20)
    • January (23)
  • 2016
    • December (17)
    • November (18)
    • October (22)
    • September (18)
    • August (23)
    • July (22)
    • June (17)
    • May (24)
    • April (16)
    • March (16)
    • February (21)
    • January (21)
  • 2015
    • December (5)
    • November (10)
    • October (9)
    • September (17)
    • August (20)
    • July (17)
    • June (4)
    • May (12)
    • April (9)
    • March (8)
    • February (25)
    • January (17)
  • 2014
    • December (22)
    • November (19)
    • October (21)
    • September (37)
    • August (24)
    • July (23)
    • June (13)
    • May (19)
    • April (24)
    • March (23)
    • February (21)
    • January (24)
  • 2013
    • December (23)
    • November (29)
    • October (27)
    • September (26)
    • August (24)
    • July (24)
    • June (23)
    • May (25)
    • April (26)
    • March (24)
    • February (24)
    • January (21)
  • 2012
    • December (19)
    • November (22)
    • October (27)
    • September (24)
    • August (30)
    • July (23)
    • June (25)
    • May (23)
    • April (25)
    • March (25)
    • February (28)
    • January (24)
  • 2011
    • December (17)
    • November (14)
    • October (24)
    • September (28)
    • August (27)
    • July (30)
    • June (19)
    • May (16)
    • April (30)
    • March (23)
    • February (11)
    • January (26)
  • 2010
    • December (29)
    • November (28)
    • October (35)
    • September (33)
    • August (44)
    • July (17)
    • June (20)
    • May (53)
    • April (29)
    • March (35)
    • February (33)
    • January (36)
  • 2009
    • December (37)
    • November (35)
    • October (53)
    • September (60)
    • August (66)
    • July (29)
    • June (24)
    • May (52)
    • April (63)
    • March (35)
    • February (53)
    • January (50)
  • 2008
    • December (58)
    • November (65)
    • October (46)
    • September (48)
    • August (96)
    • July (87)
    • June (45)
    • May (51)
    • April (52)
    • March (70)
    • February (43)
    • January (49)
  • 2007
    • December (100)
    • November (52)
    • October (109)
    • September (68)
    • August (80)
    • July (56)
    • June (150)
    • May (115)
    • April (73)
    • March (124)
    • February (102)
    • January (68)
  • 2006
    • December (95)
    • November (53)
    • October (120)
    • September (57)
    • August (88)
    • July (54)
    • June (103)
    • May (89)
    • April (84)
    • March (143)
    • February (78)
    • January (64)
  • 2005
    • December (70)
    • November (97)
    • October (91)
    • September (61)
    • August (74)
    • July (92)
    • June (100)
    • May (53)
    • April (42)
    • March (41)
    • February (84)
    • January (31)
  • 2004
    • December (49)
    • November (26)
    • October (26)
    • September (6)
    • April (10)
RavenDB - High-Performance NoSQL Document Database
  previous post next post  
Jun 05 2007

Obscuring HTTP

time to read 1 min | 86 words

Jeff Perrin do a really great job is sumrising what the biggest issue with WebForm is:

Now the first problem with Webforms is not that it’s an abstraction, or even that it’s a leaky one (they all are). The problem is that what Webforms attempts to abstract away is actually simpler than the abstraction!
Tweet Share Share 15 comments
Tags:
  • Bugs

  previous post next post  

Comments

Sergey Koshcheyev
05 Jun 2007
12:29 PM
Sergey Koshcheyev

Eh, certainly if your goal is to write "something that uses HTTP protocol", then you don't need any abstractions over HTTP. But I thought your goal is way above...

Ayende Rahien
05 Jun 2007
12:53 PM
Ayende Rahien

My goal is to respond to the user in some way, usually by sending specially crafted text that can be interpreted by a browser on the other end. Complicating the matter makes things worse needlessly.

Embracing the simplicity inherit in the request/response model means that you end up with very simple design.

El Guapo
05 Jun 2007
13:11 PM
El Guapo

Sorry for posting this again but I was wondering what your thoughts are.

In your screencast (hibernating rhinos #2) you dragged a customers table to the web form designer. Then you claimed that there isn't a way to filter the customers returned based on something like a permission (for example).

In reality this is simple. All you have to do is hook the RowDataBound event and hide the row. Surely you know this, I'm not sure why you made that argument since it only strengthens the other side when there is such an easy response.

Aaron Jensen
05 Jun 2007
15:58 PM
Aaron Jensen

Heh, Scott and I joked that if we were going to do a MonoRail workshop for ASP.NET users, we'd probably want to spend quite a bit of time explaining what GET and POST are. I guess that's not really a laughing matter though.

Ayende Rahien
05 Jun 2007
16:12 PM
Ayende Rahien

That is absolutely not a joking matter, sadly.

Sergio Pereira
05 Jun 2007
16:46 PM
Sergio Pereira

Come on, saying that the goal of WebForms is to abstract HTTP is like saying the goal of NHibernate is to abstract the SELECT statement.

I don't want to get into the merit of whether WebForms do it well or not, but there's a lot of things being abstracted and simplified (for the good and for the bad) there.

Steve
05 Jun 2007
16:58 PM
Steve

I wish MS used Monorail as an option.

For now, I'm stuck with Webforms since MS supports it and customers want it.

There is fear that when I leave no one would know Monorail.

But, until Monorail is not 'beta/RC' status I won't use it for production. I use NHibernate 1.2.4000 and want a corresponding Monorail installation (not from subversion, an installer like RC)

Sorry for this, but these are guidelines I must follow. The risk is too high if my customer knew I wasn't using a true release version.

(I thought Hammett was going to release it from a paying customer?)

Brennan Stehling
05 Jun 2007
18:28 PM
Brennan Stehling

Aaron,

I have worked with many developers who work with ASP.NET but do not even know how to make basic HTML and Javascript adjustments. They rely heavily on the visual designers and wizards. So that puts them an extra layer away from the protocol and network layers that they should understand for the sake of performance as well as reliability. For example, if they think a set of AJAX callback is guaranteed to return in the order it was sent out they come across some problems.

robert
06 Jun 2007
00:30 AM
robert

Day by Day front end web development is not really about HTTP. It is about doing a page after the other. I enjoy the state abstraction of web controls. I like the binding mechanics. Recently I was happy to find CSS-Adapters. May be I forget about the pains - but I am happy about web forms - they serve me well. (You have work with em, not against them ;-)

And isn't HTTP this TCP abstraction?

robert
06 Jun 2007
00:30 AM
robert

Day by Day front end web development is not really about HTTP. It is about doing a page after the other. I enjoy the state abstraction of web controls. I like the binding mechanics. Recently I was happy to find CSS-Adapters. May be I forget about the pains - but I am happy about web forms - they serve me well. (You have work with em, not against them ;-)

And isn't HTTP this TCP abstraction?

Jeff Perrin
06 Jun 2007
03:37 AM
Jeff Perrin

The point I was trying to make was that abstraction of HTTP is good, because working with the raw protocol is obviously not something any sane person would do. But the Webforms abstraction is so vastly different from the underlying model (HTTP) that there are far too many leaks. This is of course open to interpretation and debate.

Robert, don't even get me started on the ridiculous-ness of CSS-Adapters. An entire framework created to work around the fact that the default ASP.NET web controls often output horrible markup is just... Awesome. In a tragic way.

Ayende Rahien
06 Jun 2007
04:23 AM
Ayende Rahien

robert,

No, HTTP is not an abstraction of TCP, it is a communication mechanism that uses TCP, different thing all together.

Day by Day front end web development is not really about HTTP - If you really think that, then you are hitting the sweet spots of the WebForms framework, good for you.

But try to build a non trivial page and see what is going it then, when you need to manage the state and handle all sorts of "interesting" issues that occur as a result

Gian Maria
06 Jun 2007
10:27 AM
Gian Maria

I must admit that sometimes I love web forms, but sometimes I hate them....it is about 70% love and 30% hate :D. I have a basic concept of Castle Monorail, it seems to me far superior than web forms, but I cannot use for production code, the company where I collaborate wants to stay on the standard...so....no monorail for me :(.

Web forms are not that orrible, but they can be overabused, for example by developers that do everything in visual studio designer and really do not know well http basic concepts, post, get, form-urlencode..etc etc.

For the CSS adapters I must admit that they solve some problems, it is true that standard web forms control generates horrible html, but it's true also that with a CSS adapters you can make your site validate XHTML rules more easily.

Alk.

robert
06 Jun 2007
13:51 PM
robert

Ayende, "it is a communication mechanism that uses TCP",

if you go that way you could say, ASP.NET is not a abstraction of HTML but a web application development framework ;-)

Found on Wikipedia: “It is useful to remember that HTTP does not need TCP/IP. Indeed HTTP can be "implemented on top of any other protocol on the Internet, or on other networks. HTTP only presumes a reliable transport; any protocol that provides such guarantees can be used."” (HTTP for mobile phones does not rely on TCP?)

I had to work with php and asp and after these two ASP.NET felt so much better. I know the competition to ASP.NET are RoR and Monorails - and really, really, wish they are a so much better that they make me change the way I develop ;-)

Ayende Rahien
06 Jun 2007
14:25 PM
Ayende Rahien

ASP.Net has a lot of great things in it, but it is not WebForms.

WebForms takes that and make the stuff that used to be easy very hard. Some of the seemingly hard stuff become easier, but the hard stuff now requires stepping outside the framework comletely.

Do give it the Rail frameworks a chance, they pack both the ease of use of accepting the model with all the nice stuff that you like in ASP.Net

Comment preview

Comments have been closed on this topic.

Markdown formatting

ESC to close

Markdown turns plain text formatting into fancy HTML formatting.

Phrase Emphasis

*italic*   **bold**
_italic_   __bold__

Links

Inline:

An [example](http://url.com/ "Title")

Reference-style labels (titles are optional):

An [example][id]. Then, anywhere
else in the doc, define the link:
  [id]: http://example.com/  "Title"

Images

Inline (titles are optional):

![alt text](/path/img.jpg "Title")

Reference-style:

![alt text][id]
[id]: /url/to/img.jpg "Title"

Headers

Setext-style:

Header 1
========
Header 2
--------

atx-style (closing #'s are optional):

# Header 1 #
## Header 2 ##
###### Header 6

Lists

Ordered, without paragraphs:

1.  Foo
2.  Bar

Unordered, with paragraphs:

*   A list item.
    With multiple paragraphs.
*   Bar

You can nest them:

*   Abacus
    * answer
*   Bubbles
    1.  bunk
    2.  bupkis
        * BELITTLER
    3. burper
*   Cunning

Blockquotes

> Email-style angle brackets
> are used for blockquotes.
> > And, they can be nested.
> #### Headers in blockquotes
> 
> * You can quote a list.
> * Etc.

Horizontal Rules

Three or more dashes or asterisks:

---
* * *
- - - - 

Manual Line Breaks

End a line with two or more spaces:

Roses are red,   
Violets are blue.

Fenced Code Blocks

Code blocks delimited by 3 or more backticks or tildas:

```
This is a preformatted
code block
```

Header IDs

Set the id of headings with {#<id>} at end of heading line:

## My Heading {#myheading}

Tables

Fruit    |Color
---------|----------
Apples   |Red
Pears	 |Green
Bananas  |Yellow

Definition Lists

Term 1
: Definition 1
Term 2
: Definition 2

Footnotes

Body text with a footnote [^1]
[^1]: Footnote text here

Abbreviations

MDD <- will have title
*[MDD]: MarkdownDeep

 

FUTURE POSTS

  1. Scaling HNSW in RavenDB: Optimizing for inadequate hardware - about one day from now

There are posts all the way to May 14, 2025

RECENT SERIES

  1. RavenDB News (2):
    02 May 2025 - May 2025
  2. Recording (15):
    30 Apr 2025 - Practical AI Integration with RavenDB
  3. Production Postmortem (52):
    07 Apr 2025 - The race condition in the interlock
  4. RavenDB (13):
    02 Apr 2025 - .NET Aspire integration
  5. RavenDB 7.1 (6):
    18 Mar 2025 - One IO Ring to rule them all
View all series

RECENT COMMENTS

  • But in case you have nullability checks enabled (i.e. `<Nullable>enable</Nullable>`), then you'll have a compiler warning on ...
    By Samyon Ristov on The null check that didn't check for nulls
  • Grok wasn't *wrong*. It only said that `_items` can't be null for the condition to evaluate to `true`, but didn't say anythi...
    By Johannes Egger on The null check that didn't check for nulls
  • When I started enabling NRT, I remember I was initially confused when all variables (for reference types) declared with `var`...
    By riccardo on The null check that didn't check for nulls
  • That is surprising - I think of var as a shorthand that does not affect the final result of the compilation. I wouldn't expec...
    By Chris B on The null check that didn't check for nulls
  • "It is also about as friendly as a monkey with a sore tooth and an alcohol addiction." And I have to clean my monitor.
    By Tim on When racing the Heisenbug, code quality goes out the Windows

Syndication

Main feed Feed Stats
Comments feed   Comments Feed Stats
}