What is .NET RIA Services?


Yesterday at Mix we announced .NET RIA Services…  We are very early in the development cycle for .NET RIA Services and we are eager to get your feedback and thoughts.  


The marketing blurb catches the key points:



Microsoft .NET RIA Services simplifies the traditional n-tier application pattern by bringing together the ASP.NET and Silverlight platforms. The RIA Services provides a pattern to write application logic that runs on the mid-tier and controls access to data for queries, changes and custom operations. It also provides end-to-end support for common tasks such as data validation, authentication and roles by integrating with Silverlight components on the client and ASP.NET on the mid-tier.


image 


(shamelessly stolen from Nikhil’s talk)


Our thinking on the RIA Services work really grow out of the LINQ project a few years ago.  LINQ integrates query semantics into the languages (C#, VB, etc) providing a common abstraction for working with data; whether that data is in memory CLR objects, XML, relational data,  or anything else.   With RIA Services we are extending this pattern by offering a prescriptive model for exposing your domain logic over LINQ. We think of domain logic as that part of your application that is very specific to your domain – that is the particular business problem you are solving.    By following this pattern we are able to provide a number of features that help you focus on your domain logic rather than the plumbing in your code.  For example, we offer a great way to write application logic on the server and display, validate the data,  as well as supporting authorization,  querying, sorting, filtering, paging, etc, not to mention providing a clean way to mock out the data layer to do testing (a la TDD, etc).  All regardless of what data store you use (Entity Framework, Linq2Sql, nHibernate, Xml file, REST service, WCF-server, etc).  


We think this pattern is useful in a wide verity of application types… a couple that we are talking a lot about here at Mix09:



N-Tier Access – By following the RIA Services pattern, we can make it very easy for you to build out a n-tier silverlight or AJAX application.  We aim to make it nearly as simply as building traditional 2 tier applications.   In this space, you should think of RIA services as a more perceptive layer on top of ADO.NET Data Services and WCF.   For the data querying and updating aspects of the model we will be using ADO.NET DataServices… this means that you will be able to just “Add Web Reference” to your domain logic and get the standard REST and JSON based access that ADO.NET DataServcies offers.  We also expect to eventually provide full access to all the power and flexibility from the underlying WCF services such as highly optimized binary serialization. 


Another great benefit of this model is that you can use it directly within your ADO.NET Data Services. We believe this provides a more productive way of writing your domain logic than using the current interception-based patterns. We are hard at work on this now, look for this in a future CTP.


ASP.NET Access – By following the RIA Services pattern, you will also be able to build ASP.NET applications easily while taking advantage of all the built in features of RIA Services such as data validation, authorization, etc.   In the March preview, we are offering a asp:DomainDataSource control that enables very easy ASP.NET WebForms access to your domain logic.  Building on top of that is a future version of ASP.NET Dynamic Data that makes it very easy to generate common, standard UI based on your domain logic. 


Back in Redmond, we are working on provide a very clean access to your domain logic via ASP.NET MVC.  The pattern here is very cool, and I can’t wait to talk about it in a future CTP. 


If you combine the verity of data sources with the variety of presentation options we are aiming for with .NET RIA Services… 


image[4]


What what is in the .NET RIA Services March ‘09 Preview? 


I highly recommend going through the detailed walkthrough that we have


But few the geeky among us, let me break down what we have in the package by assembly…


Enhancements to the .NET Framework on the Server:



System.Web.DomainServices.dll – This assembly contains the core DomainService classes that handle the validation, query, etc. 
System.Web.DomainServices.Providers.dll  – the LINQ2SQL and EF provider… we hope between us and the community to provide much more in the future such as Azure, Dataset, nHibernate, etc
System.Web.DomainServices.Tools. dll – the VS support for building DomainServices


System.Web.DomainServices.WebControls. dll – the ASP.NET support for DomainServices (asp:DomainServiceDataSource and friends)


System.Web.DynamicData.dll – Update to the ASP.NET Dynamic Data support to work with Domain Services.


System.Web.Ria.dll – RIA Specific services such as authtication, user profiles, etc.

System.ComponentModel.DataAnnotations.dll – Updates to the .NET Framework 3.5 SP1 set of data annotations. This is shared with Dynamic Data. 


Microsoft.Web.Extensions.dll – Some additional support for patterns such as SEO, these will be folded more deeply into the platform in future previews.


Enhancements to Silverlight on the client (other clients such as WPF and Ajax coming soon)



System.Windows.Ria – Client data model for the DomainService.. handles change tracking, validation, etc


System.Windows.Ria.Controls.dll – DomainDataSource control that provides Xaml based control for accessing DomainService (layers on top of the client data model). 


Again, we are early the development cycle for RIA Services and we’d love your feedback and thoughts on the model!


Check out DineshKu’s  .NET RIA Services is now public post…  the great walk through and samplesBeta News has a good overview as well.   Check out my Mix09 talk on RIA Services for a full example…


Update 3-19:
  here is a live demo of a web admin site in Silverlight\.NET RIA Services .
  a few of “How Tos”:   Part 1, Part 2, Part 3.
More information on RIA Services


Update: 3-21:
Check out some talks and demo walkthroughs



Please let me here your thoughts!

Comments (80)

  1. Over the last year I have been working on .NET RIA Services , a preview of which just went public at

  2. Vukoje says:

    Ah, another technology issue that will be finished one year too late. I hate building things that will soon be included in technology. At least there is a implementation challenge.

  3. Mark Campion says:

    This looks great, but do you think there will be a dataset provider?

    We’ve written a middle-tier that handles data access, security, validation etc, exposing that data via WCF services as datasets.  We’re now hooking these services up to a new Silverlight UI. The querying, sorting, filtering and paging are all functions that we need to achieve, and this seems to do it all. Is this something you think is suited to .NET RIA services?

  4. What's New says:

    Yesterday at Mix we announced .NET RIA Services…  We are very early in the development cycle for

  5. Thank you for submitting this cool story – Trackback from DotNetShoutout

  6. Aaron says:

    will it include anything to push data to silverlight (not silverlight polling the server) ?

  7. Thanigainathan@hotmail.com says:

    Hi,

    This is a great news . We are happy to use them in the projects. Does that supports the offline support of applications like we have in the Google gears ?

    I suppose RIA here means Rich Internet Applications which are smart clients . How you are saying this will make us RIA rwally ?

    Thanks,

    Thani

  8. andrex says:

    Can be used RIA Services with WinForms?

  9. URL : http://blogs.msdn.com/brada/archive/2009/03/19/… Here at MIX09, the world got its first view

  10. Lots of catching up to do. Windows Azure/Cloud Computing Windows Azure Tools and SDK March 2009 CTP Released ASP.NET MVC/AJAX ASP.NET MVC 1.0 is Now Live! Phill Haack’s post ASP.NET MVC 1.0 Released! Microsoft Ajax 4.0 Preview 4 now available Silverlight/RIA/MIX

  11. Pat Gannon says:

    Where can we see a simple code sample leveraging this stuff? I’m having a hard time wrapping my head around this without seeing any code.

  12. Julius Ganns says:

    Hi Brad,

    unfortunately I wasn’t able to attend Mix this year, but after reading your posts and documents about .NET RIA Services, I really appreciate the work that is being done in that particular field by your team. As my company is developing several RIA applications, that combine the strengths of ASP.NET, ASP.NET AJAX and Silverlight, we hat major problems in bringing our business functionality to the client without bringing our business logic to the client. We finally chose a similiar approach by introducing a universal service facade that can be used by any client assembly, regardless of its position (local using a reference to the core assembly or remote using wcf). I’m currently writing an article series about the topic for a leading .NET magazine is Germany and how we solved the problem of effectively transporting entity graphs to the client using DTO’s. You can find a shorter, conceptual version at http://jgnk.spaces.live.com/blog/cns!457F4BDBA1A371A5!327.entry. Tell me what you think and maybe how Microsoft is going to solve the problem with lazy loading-enabled object graphs that are transported across the wire.

    Best,

    Julius

  13. Håkan Forss says:

    How would use RIA Services if you where using a Domain Model architecture style in your business layer where there are very few record sets or datasets?

  14. BradA says:

    Andy – Yes, we are well aligned with ADO.NET Data Services… you should think about WCFADO.NET Data Services as providing the over-the-wire format and REST based URL format, etc.  

    Check out http://mschannel9.vo.msecnd.net/o9/mix/09/pptx/t36f.pptx for more information

  15. BradA says:

    Hakan Forss – If you are building out a formal business logic layer for you application (which is a best practice for larger apps) it is best to think of RIA Services as a way to encapsulate the views… So you’d define types for "CustomerView" that has excatly the shape of customer you need for your client UI.  then in your DomainService you’d work against your Business Logic Layer to return the "CustomerView" to the client…  We’d love your feedback and thoughts on how that works for you.

    ..brad

  16. Dévoilé au grand jour la semaine dernière, Silverlight 3 apporte son lot de nouveautés (support de l’accélération

  17. What is .NET RIA Services? まだ116ページもあるPDFは読み終わってません。 試すための環境も、どうも英語版のVSからインストールしないといけないっぽいので、まだできてません。…

  18. Michael says:

    About aligning with ADO.Net Data Services ,mentioned link is broken "Check out http://mschannel9.vo.msecnd.net/o9/mix/09/pptx/t36f.pptx for more information"

    What is the current status ? I didn’t find any reference to ADO.Net Data Services in walkthrough doc. Would it possible to see any examples  related to  "Another great benefit of this model is that you can use it directly within your ADO.NET Data Services."

  19. GaryA says:

    I’m still trying to understand – exactly what problem are you trying to solve?

  20. shaggygi says:

    Is RIA Services the best approach on using with WPF apps, as well?  Do you have examples on how to use with WPF app?  Thanks in advance.

  21. ChrisLamont says:

    It’s exciting to hear that RIA Services is on the roadmap!

    Could this mean that we are closer to getting Virtual mode to enabled in the datagrid?  

    On New Years Eve, Yifung Lin [MSFT] commented that a virtual mode is a scenario that is being worked on @ http://silverlight.net/forums/t/59990.aspx

  22. BradA says:

    shaggygi>  Are RIA Services good for WPF apps?  I’d say that RIA Services are good for any client technology that is a projection of the server.. I can totally see that being true from some WPF apps (XBaps, ClickOnce installed apps, etc)  but others (MSI installed) maybe not.  

     As far as samples, no, we don’t have all the tooling bits working for WPF just yet, but it is on our roadmap…  

  23. #.think.in says:

    #.think.in infoDose #22 (16th Mar – 20th Mar)

  24. JuanS says:

    All I can say is wow. As a gov’t programmer I’ve been waiting a lifetime for something like this guys. I’m finally a happy camper. This will make creating biz apps SOOOO much faster. And now I get to pick my flavor of client or create more than one depending on my needs. The same validation logic for all. I’m so happy. And the best thing, creating search pages will be a breeze now with the dynamic filters. Congrats guys. This will make it easy for me in many business arguments I have for picking .net.

  25. Brad,

    You can email me on this if it’s better, but I’d really like to see an example of RIA with NHibernate, even if just really simple.

    I’ve walked through using EF and Linq2SQL – fairly straightforward.

    I’d really like to see how RIA can leverage NHibernate in the same manner…

    Any chance of seeing something like this?

    Thanks

  26. koistya says:

    Interesting technology.. I am keen to see WPF, ASP.NET MVC and AJAX client suport in it.

    The only concern I have so far is security.. will it be able to restrict unauthorized quering and update operatoins based on user roles? That would be great to set these access rules on per entity as well as per property basis using metadata.

    For example (per property):

    [Authorize({"Administrators", Permissions = Permissoins.ReadWrite }, {"*", Permissions = Permissions.ReadOnly })]

    public string Name { … }

  27. Håkan Forss says:

    Hi Brad

    If I understand you right the value the RIA Services would add in a Domain Model

    architecture style would be paging, sorting and some validation. If I am not using the ADO.Data Service how would I add the meta data for validation formatting and such? On my view objects as attributes? I fail to see how this would add value for me building RIA applications if my applications is more than forms over data.

    If the RIA Service would add some MVVM pluming that would abstract the communication between the RIA client and the application server then where could be some value. But isn’t that what WCF is for?

  28. BradA says:

    Hakan — Yes, the attributes would go on the View Objects…   .NET RIA Services value is really focused on data-centric applications.. if you are building something else, there maybe other technologies with more value for you..

    Yes.. I hear you on ViewModel we will get a sampe out shortly on that pattern..    But again RIA Services is just a layer on top of WCFADO .NET Data Services, so if WCF works for you, by all means use it!

  29. BradA says:

    Koistya `Navin – Glad you are interested.  Yes, we have WCF, WPF and Ajax clearly on the roadmap.

    Yes, you can restrict access to methods on the DomainServices based on what role a user is logged in as..   THat is covered in the walk through..  

  30. Steve says:

    I agree with Hakan on the MVVM pattern, I would also like to see MS embrace this pattern and use it when demo’ing Silverlight   🙂

    As far as :

    "System.Web.DomainServices.Providers.dll  – the LINQ2SQL and EF provider… we hope between us and the community to provide much more in the future such as Azure, Dataset, nHibernate, etc"

    from my question above on NHibernate:

    Sounds like more information will need to be reviled on ‘how to build your own domain service provider’.

    Outside of NHibernate, I would think developers who have a DAAB DAL layer would also be interested in this.

    Great stuff as always Brad – thanks!

  31. Phil Turtle says:

    Yes it looks like it might be great stuff in a year’s time. But here’s a list that folk will recognise:

    DbLib, ODBC,DAO, RDO, ADO, ADO.NET, LINQ, Entity Framework, Domain Services, MVC etc etc etc. In the real world people are busy trying to deliver projects for their customers. Constantly having to learn a new way of solving the same problem every 6-9 months just isn’t an option. Can we please have a period of stability?

  32. BradA says:

    Phil — you have a really good point.  Microsoft has been shipping Data Programming models very quickly and I get it is hard to keep up.  This is something we talk a lot about internally.  For example with RIA Services we are trying hard to be complimentory to most of the existing technologies, rather than replacing them.  We are also trying to come out a bit early with RIA Services and get your feedback on the model so that it can be more solid by the time we ship it.

  33. BradA says:

    Steve –   I just talked to the P&P guys and they are working on a MVVM example that uses RIA Services..  Hopefully we will see that in the next few weeks.

    By DAAB you mean http://msdn.microsoft.com/en-us/library/cc309504.aspx? That is a good suggestions..  

    Yes, we expect to have a sample of how to build your own Domain Service provider soon.  Nikhil has an example on his blog http://www.nikhilk.net/RIA-Services-MIX09.aspx doing Azure that can help you get started.  Also, if you want to help on the NHibernate one, let me know I can connect you to the right people working on this in the community.  

  34. noamarbel says:

    This is great stuff. Started to work with it and have some feedback. Where do I post that? Is there a site for that? a user group, etc.?

  35. BradA says:

    Great Noamarbel… there is a feedback forum here: http://silverlight.net/forums/53.aspx

  36. Two weeks ago we held our MIX conference in Las Vegas.  MIX is my favorite conference of the year

  37. Two weeks ago we held our MIX conference in Las Vegas.  MIX is my favorite conference of the year

  38. progg.ru says:

    Thank you for submitting this cool story – Trackback from progg.ru

  39. MIX 09Scott Guthrie gave the MIX keynote again this year, and talked about some new Microsoft web development…

  40. 【原文地址】 MIX 09 【原文发表日期】 Tuesday, March 31, 2009 11:37 PM 二个星期前,我们在拉斯维加斯举办了 MIX大会 。MIX是我最喜欢的年度大会,因为它把开发和设计方面的主题在一个会议中很好地整合在一起

  41. 【原文地址】 MIX 09 | MIX 09 【原文发表日期】 Tuesday, March 31, 2009 11:37 PM 二个星期前,我们在拉斯维加斯举办了 MIX大会 。MIX是我最喜欢的年度大会,因为它把开发和设计方面的主题在一个会议中很好地整合在一起,而且通常还附带一些非常酷的产品宣布。

  42. 先日、Mixでの Silverlight3 発表は刺激的なニュースでしたね~。 LOB向けのコントロールの追加や3D・GPU対応はなんとなく予想できていましたが、ブラウザの枠から飛び出てクライアント上にインストールできてしまう

  43. Burak says:

    Hey everyone I am having difficulty to load "System.Windows.Ria.Controls.dll" to my toolbox items because I am geting an error saying "System.ComponentModel.dll" version 2.5 can not be found, I have version 3.0. Did anyone had luck loading these conrols ?

  44. Burak says:

    Please disregard my previous comment, I found why it as not working when adding these controls I was not navigating to the SilverLight Controls Tab, so once I go this tab and browse for the Ria.Controls.dll I was able to add it to the toolbox 🙂

  45. Duas semanas atrás nós tivemos nossa conferência MIX em Las Vegas. MIX é a minha conferência favorita

  46. A chegada do padrão MVC para o ASP.Net tem sido bastante comentada entre arquitetos. Temos recebido questões

  47. Brad,

     what binary format does the RIA Service to send data to and from the server? In Flex you have remoting via AMF, so what is this Silverlight solution using?

    cheers,

    justin

  48. BradA says:

    >>  what binary format does the RIA Service to send data to and from the server? In Flex you have remoting via AMF, so what is this Silverlight solution using?

    Justin,

    Yes,  a future release of .NET RIA Services will benefit from the binary format WCF recently added..

    http://blogs.msdn.com/silverlightws/archive/2009/03/20/what-s-new-with-web-services-in-silverlight-3-beta.aspx

  49. John says:

    Brad,

    Could I repeat Aaron’s question about whether there are any plans for data push?

    Thanks for taking the time to answer all of these questions. Getting it from the horses mouth is just so reassuring.

    Thanks,

    John

  50. BradA says:

    >>Could I repeat Aaron’s question about whether there are any plans for data push?

    Yes, this is on the roadmap..  our current thinking for server push in V2… but we are always open to feedback.  There is Duplex support in WCF for Silverlight 3… check it out here: http://silverlight.net/forums/t/18912.aspx

  51. You’ve been kicked (a good thing) – Trackback from DotNetKicks.com

  52. Some of you have probably heard about the Microsoft .Net RIA Services, if not you can find some info

  53. Some of you have probably heard about the Microsoft .Net RIA Services, if not you can find some info

  54. Brad Abrams : What is .NET RIA Services?Source: blogs.msdn.comYesterday at Mix we announced .NET RIA Services… We are very early in the development cycle for .NET RIA Services and we are eager to get your feedback and thoughts. The marketing blurb catche

  55. I’ve been asked whether it is time to invest in WPF and Silverlight. What is the future of these platforms

  56. Many thanks to Shawn Wildermuth for giving us all some insight into what’s coming for Silverlight 3.

  57. Julien says:

    Just released a sample social game (tetris) based on Ria Services and Silverlight 3, for demo purpose.

    You can play here : http://www.twipot.com

  58. Thanks again to Marc Schweigert for hosting last night’s DevDinner in Reston. My blog is at http://www.irritatedVowel

  59. Alexander says:

    Brad,

    it hasn’t been stated explicitely and I just want to make sure: Are RIA Services ultimately tied to Silverlight 3 or do you plan to support Silverlight 2 eventually?

    Regards,

    Alexander

  60. BradA says:

    > Are RIA Services ultimately tied to Silverlight 3 or do you plan to support Silverlight 2 eventually?

    .NET RIA Services require Silverlight 3 and above..  

  61. Matt says:

    Just an observation…this all looks great, but one thing that worries me about frameworks that try to hide everything is that folks sometimes (often?) forget that there is a cost associated with certain operations (network access, query times, etc.).  I’ve seen this happen with web services, LINQ to SQL, and any other abstraction that people treat as a black box.  I’m not opposed to this new stack, but what steps will be taken as RIA Services matures to drive home the point that just because it "looks like" you data is local, under the hood there may be round trips that could kill any hope for performance?

    Sure – we can all hope that everyone "gets it"…unfortunately, this just isn’t the case in the wild.

    Many thanks,

    Matt

  62. Great preview on the .NET RIA services. I’m a bit confused on the integration of .NET RIA Services, Silverlight and ASP.NET MVC.

    Let’s hope to get these clouds clear out quickly!

  63. PaulC says:

    I am in the midst of architecting a large line of business application serving a global user base.  We’re targeting Silverlight 3 as the main user interface.  We trying to understand if RIA Services fits in our architecture.  We were planning to have a suite of WCF web services that talk to both a DAL and Velocity (caching) layer.  The DAL layer is to be EF-generated classes (based upon multiple back-end data sources: Oracle, SQL Server, etc).  From what I’ve been able to understand about RIA Services is that it surfaces the DAL classes all the way to the client.  Is that correct?  This isn’t what I wanted to do.  I really need a clear separation between the services and the DAL, not only to allow for hooking into the Velocity servers but so that in later dev phases there is nothing to modify in the UI as the back-end data sources get ported to SQL Server.

    In speaking with an Azure guru at Microsoft, he confirmed our target architecture would position us for the cloud when it was ready for LOB.

    Am I misunderstaning RIA Services?  Do they really surface the DAL classes to Silverlight?

    Thanks.

    Paul

  64. BradA says:

    Paul — With RIA Services we are targeting making N-tier development much easier.  For some smaller, departmental level apps flowing DAL types through to the client is a fine path, and as you say, .NET RIA Services does support that.  But for larger apps, clearly this is not the best path.  So .NET RIA Services fully supports providing view-specific types that you flow down to the client.   In my personal app building with .NET RIA Services I have found this to be the most common pattern.   You often want to closely customize the types used by the client to have just the shape you need for the UI.   In this case .NET RIA services becomes the layer that maps from your DAL types to your view types.   Check out the Silverlight store as an example of this sort of pattern.  http://code.msdn.microsoft.com/RiaServices/Release/ProjectReleases.aspx?ReleaseId=2390

  65. Jonathan says:

    Well I for one, would like to see enum support in RIA Services.  Although it isn’t directly supported in Entity Framework, there are ways to expose your enum properties via partial classes.  having enum types on your client generated classes seems like a must.  I mean, what are the alternatives?  Manually comparing strings?

  66. .NET RIA says:

    I agree with Jonathan,. support is needed with enum properties.  Very nice post, I’m looking forward to monitoring going forward.

  67. NET RIA Service, #Part1 install.

  68. Jonathan says:

    This just doesn’t work for me and I have tried it on 4 different computers!  Here is a description of my problem:

    http://silverlight.net/forums/p/98998/226078.aspx#226078

    Any ideas?

  69. Две недели назад прошла наша MIX-конференция в Лас-Вегасе. Это моя самая любимая конференция года – ведь

  70. Phil says:

    Brad, first off I want to say that RIA services rocks!  I can see how this will reduce the development effort by 10 fold once it is stable.  What time frame does MSFT plan on pushing a beta and then a release?  We are considering it on a major enterprise application.  However, the current release has given me a few VS2008 crashes and seems a little finicky at design time.  It appears to be related to codegen since i was abble to remove the last [Include] that I made and it stopped crashing.

    Can you put me in touch with someone that can answer questions about complex type mapping?  That seems to be causing the codegen crashes.

    All in all, tell the team they did a fantastic job.  I see this as the future of Silverlight 3 domain driven business apps. Great work!

    Thanks,

    Phil

  71. Phil,

    I would love to get more details on the issue you are running into. Ideally we would like to be able to repro it at our end.

    Would it be possible for you to mail me directly through my blog so we can work on resolving your issue.

    Saurabh

  72. Phil says:

    Saurabh,

    I will email you the details first thing Monday morning. Thanks for taking an interest in this issue.

    Phil

  73. Brad Abrams : What is .NET RIA Services?Source: blogs.msdn.comYesterday at Mix we announced .NET RIA Services… We are very early in the development cycle for .NET RIA Services and we are eager to get your feedback and thoughts. The marketing blurb catche

  74. Brad Abrams : What is .NET RIA Services?Source: blogs.msdn.comYesterday at Mix we announced .NET RIA Services… We are very early in the development cycle for .NET RIA Services and we are eager to get your feedback and thoughts. The marketing blurb catche

  75. mladen says:

    Hello, we have started new project which will use SL+RIA services and we ran in some problems.

    We have list of users on server side shown as a grid on client.

    Scenario is: I call operation CreateNewUser on ViewModel, this calls CreateUser on server which will create new User and add it to list of users.

    After this I’m calling LoadUsers on VieModel._userContext to load new list and to show it in UI.

    Problem is that Load method on server is called first (actually method is called GetUsers).

    Problem is as I can see in synchronization but what is solution?

  76. 逆援助 says:

    セレブ達は一般の人達とは接する機会もなく、その出会う唯一の場所が「逆援助倶楽部」です。 男性はお金、女性はSEXを要求する場合が多いようです。これは女性に圧倒的な財力があるから成り立つことの出来る関係ではないでしょうか?

  77. VS2010学习 says:

    In .NET 3.5 SP1, the ASP.NET team introduced a new DLL named System.ComponentModel.DataAnnotations, in