ADO.NET Data Service:RESTfulな実装について5(2の補足)

こんにちは、こだかです。

本来は「ADO.NET Data Serviceのリンク(接続性)」について書く予定だったのですが、改めて以前の書き込みを見直してみると、ちょっと誤解されるような内容がありましたので、今回は、ADO.NET Data Service:RESTfulな実装について2の補足を書きたいと思います。

ADO.NET Data Service:RESTfulな実装について2の中で、アドレス可能ではない物として、Ajaxを例に出したのですが、実は、Ajaxを使っているサイトでもブックマーク可能である場合もあります。
例えば、Google Mapなどは、クライアントが地図を操作した場合でも、そのときブラウザに表示してある地図のURLを表示することができるようになっています。
そして、それをブックマークすればよいわけです。ですので、まぁ典型的な例としてAjaxがあるのですが、絶対不可能ではないと言うことです。ちょっと言葉足らずでした、すみません。

もう一つ。
ブックマークすると、同じ切り口でリソースが取得できるとありました。
これはどういうことでしょうか?
例えば以下は前回の例です。

CategoriesテーブルのID=3レコードのCategoryNameフィールドの値を取得
https://localhost/Northwind.svc/Categories(3)/CategoryName

ここから得られる結果の元ネタは、Northwindデータベースにあるデータです。
したがって、そのデータは変化している可能性があります。今日取得した結果と明日取得した結果は異なるかもしれないと言うことですよね。

この辺りでちょっと混乱するかもしれません。
リソースにアドレスがあるからこそ、ブックマークも可能であったはずです。
なのに、同じ結果が得られない??

実は、リソースには状態(state)と言う考え方があり、時間や条件により内容が変化することがあるのです。
リソースで普変であるのは、その「意味」になります。前回「同じ切り口で~」と書いた部分がこれにあたり、この「状態」の話は別の機会にするつもりだったのですが、これも誤解を招くように思いましたので、書かせていただきました。

したがって、上記の例では「CategoriesテーブルのID=3レコードのCategoryNameフィールドの値」と言う意味自体は当然変わりませんが、データ(状態)は変化するかもしれないと言うことになります。

RESTと言う言葉の意味は「Representational State Transfer」であり、その意味は「表現可能な状態の転送」となります。まさに、リソースの状態を転送することを指しているのですね。

こだかたろう