We announced Microsoft Codename Astoria at Mix this week, and we did two sessions on the technology during the event. This was great because we got a chance to talk 1:1 with a lot of folks that were interested in the topic. We also got a ton of feedback online through blogs and emails.
Here are some of the most common questions we got since we announced Astoria. Again, this is a very early release, so not all is nice and baked and fully designed yet. Also, there are some topics that need some in-depth discussions, and I’ll tackle those separately in future posts in the next few days.
Can Astoria expose data from data sources other than databases?
Astoria is built on top of the Entity Framework. Currently the EFx only works on top of databases (or things that have ADO.NET providers and look at lot like databases), so Astoria has this restriction as well for its default data services. Astoria also has ability to expose service operations (which are just WCF service operations); those can gather data from anywhere (we won't look at the code inside the operation implementation) but you don't get the nice automatic URI mapping for entities and relationships, and you don't get automatic create/modify/delete support.
How tightly integrated is Astoria to SQL Server?
It is not. I do have an emotional attachment with SQL Server as I worked (still do) in the product for several years :), but Astoria hasn't really anything specific to SQL Server. As I mentioned in the previous answer, Astoria builds on top of the ADO.NET Entity Framework, so if you have an up-to-date ADO.NET provider for your database you should be able to use Astoria with it.
This looks really similar to SQLXML. What is the relationship between the two technologies?
They way I see it, these are very similar technologies that are designed to tackle quite different scenarios. The goal of SQLXML was to provide an XML view on top of a SQL Server database, preserving many (all?) aspects of the XML data model. The goal of Astoria is to provide a service for data that can be web facing and AJAX/RIA applications can use as their back-end.
This difference in goals surfaces in many forms. For example, SQLXML used XPath for queries, where in Astoria we’ve specifically stayed away from it. SQLXML was, well…about XML, where as Astoria is about data services and formats come second (Astoria currently does XML, RDF+XML and JSON, and I was given some great ideas for new formats at Mix). As a last example, Astoria has several mechanisms built-in for introducing business logic in the data service, so it results in a web-facing entry point that client agents can interact with without compromising the integrity of the application.
On a more practical note, I work in what would be the current form of the team that created SQLXML among other things. I regularly talk with the folks that built it, such as Andy Conrad and Michael Rys. We'll "reuse" as many good ideas as we can, and we’ll avoid things that didn’t turn out that well.
The documents say "semantics" all over the place, but not "semantic web", is there any relationship between Astoria and the semantic web?
The "semantic web" is a broad space of specifications, technologies and concepts. The goals of the semantic web are far-reaching.
Astoria does heavily rely on understanding more semantics on the data it handles than a flat "blob store". In Astoria we get semantics off of the Entity Data Model schema that a given data service uses. However, Astoria doesn’t not currently tackle all of the elements that would be required to say that it’s a tool to directly support semantic web constructs.
It does have some pieces though. The fact that everything is pointed at by a URI and looks like a resource is an important building block. The fact that it supports RDF+XML, with entities modeled as sets of triplets and associations modeled as resources, is also another step there.
Now, there are things such as not supporting RDF Schema or OWL ontologies that will quickly come up when you look at this with a semantic web perspective. You could imagine generating ontologies based on the EDM schema information (we have information about types, inheritance, associations, etc.). Astoria also does not support SPARQL or any other RDF query language.
Bottom line: I do think Astoria brings a small little contribution to the goal of adding semantics to the web, but it’s not a full on semantic web tool. Whether it will evolve into something closer to it or not it’s something that time will tell, and user feedback will influence.
What is the security model for Astoria?
I’m putting this here for completeness, but let me defer the answer to a future post.
No business logic? Data directly exposed? How do you architect applications on top of Astoria?
Same as above. I’ll do a write up soon.
If you have more questions feel free to send them, I'll do another round of FAQs once I get a few more together.