Astoria FAQ from MIX


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.


-pablo


 

Comments (8)

  1. diegov says:

    Hello again Pablo! I have downloaded the bits today, and have been watching your MIX session and also taking a look at the sample code. I am under the impression that Astoria will be really big 🙂 Congratulations!

    I still need to play much more with it, but I already have a few questions that I would like to ask you, mostly about using Astoria on the client side:

    First, I see you can get the full list of entities directly at the service entry point but, is there a way to retrieve the full EDM schema from the service in one shot?

    As I understand it from your session, if I own both the service and the client, I can always share the entity model definition among the two, and there is even a tool that will help me get CLR types (very much like entities) on the client side of the pipe.

    However, I am thinking that exposing the full schema could also make much sense for a public web data service (unless the service owner prefers security by obscurity).

    Could something like the CSDL file be used as the equivalent of WSDL for an Astoria services? Could a code generator tool be adapted so I can use it the same way I can add a Web reference today (or perhaps in a more dynamic way)?

    Could this be supported also for Silverlight applications?

    Sorry if I have too many questions. I trying to get up to date 🙂

  2. diegov says:

    I learned about codename Jasper today. So, Jasper is the answer to most of my questions, right? 🙂

  3. Diego: we do not have a fully-baked mechanism for exposing metadata yet; that said, since we needed for the client-side code-gen tool as you mentioned, we do have a way of obtaining an EDM schema for a given service. It’s definitely not the final plan long term (I’m not sure if EDM/XML is the right way of describing a service), but it enabled the scenario for the CTP. The short story is that you can use a "special" option that is "/$sys_GetEdmSchema" (against a given svc/rse service entry point) and you get the schema. I’ll drill down a bit more on this in a future post.

    -pablo

  4. Dennis' Blog says:

    At MIX07 I’ve seen a presentation by Pablo Castro from the ADO.NET team on a new project codenamed "Astoria".

  5. diegov says:

    I agree, EDM/XML doesn’t seem good for this. On one side, there is the advantage of reuse. But on the other side, EDM/XML is full of CLR types (Astoria aims to output neutral formats, I think). Also, the original EDM/XML would not contain any operations you could have added to the service.

  6. Last week at Mix07 Microsoft announced a project code named Astoria. The technology code named Astoria

  7. Last week at MIX07 Microsoft announced a project code named Astoria. The technology code named Astoria

  8. Pablo

    I just wanted to say how much I enjoyed your Mix07 session. Even though it was the last session of the conference for me, it was wonderful to see this RESTful approach for getting at data.

    I understand that people will look at the issues raised by this, but I just see a lot of opportunities for encouraging RESTful data access and making it easier to build web services to access business data.

    I’ll definitely keep Astoria on my radar screen going forward.