All blog posts


10/20/2014 Beta Tooling Update

Categories: Open RIA Services

This is a beta version of the Open RIA Services Tooling. I would like to get a few people trying it out before I upload it to the Visual Studio Gallery as a full release. If everything goes well, this will be the same version I push out to the gallery so you would not need to uninstall/reinstall it after I release it to the gallery.

UPDATE: The previous beta release had a missing namespace in the Domain Service, the below file corrects the problem.

This content has not been rated yet. 

4/6/2014 Open RIA Services Tooling Released: April Project Update

Categories: Open RIA Services, Project Lead

The tooling for Open RIA Services was soft released a week ago on the Visual Studio Gallery. As of this writing, I see that it has been downloaded 48 times and I have heard of any issues. 

The new RIA Link utility that has made the release possible was written by Eric Schultz from Outercurve. Eric decided not to use NuPattern to create the new RIA linker, but I will keep NuPatterns capabilities in mind for the future.

The new Open RIA Services Link is not part of the Silverlight tab of the project properties, that drop down is the original WCF RIA Services link and use of it will automatically reference the WCF RIA Services dlls causing conflicts with Open RIA Services.

In other news:
NHibernateDomainService has needed additional work done and is not ready for release yet. There are three programmers in different countries currently working on this effort. 

There have been many changes made to the base WCF RIA Services code. These include:

  • Enum.Flags support in queries
  • A fix for client only properties being wiped during load and commit operations
  • Async DomainContext implementation
  • Support long queries by switching to POST instead of GET automatically when the query is long
  • A PCL client for DomainService

Some of these changes are in the already released NuGet packages and some are not. Now that Open RIA Services is fully operational with working tooling I feel much more comfortable making and releasing real substantial changes to the functionality Open RIA Services. I will be releasing new Prerelease versions of the NuGet packages later this week with the above changes fully documented.

I am currently working on getting the DomainController code written, after the events of last week I have decided that my personal priority needs to be getting Open RIA Services working for Universal Apps. The PCL client for DomainService is proving that trying to support the DomainService in newer platforms is going to be difficult and unwieldy. I made a breakthrough this last week when I found the original code for DataController in the history of ASP.NET's source code. DataController was Microsoft's own port of DomainService to Web API and since it was released as Apache 2 we can go ahead and clone that code into Open RIA Services.

Rated 4.00, 1 vote(s). 

1/13/2014 January Status

Categories: Open RIA Services, Project Lead, General

The release of tooling has been pushed back to early February. The part of the tooling that I thought would be the easiest, replacing the WCF RIA Services Link drop down on the Silverlight tab, turned out to be extremely difficult. Countless hours were wasted in the last several weeks attempting different ways to solve the problem, I had one solution completely written but it is failing to work due to a bad cast in unmanaged code deep inside Visual Studio where I can't see what is happening.

A solution has been found in another Outercurve project, NuPattern, which makes extending Visual Studio much easier to do. However, we have to wait for a new version of NuPattern that supports Visual Studio 2013 before our own tooling can be released which is what is pushing us to February.

When the tooling is released it will be complete with the business application, Open RIA Services Class Library, and a Domain Service Wizard that supports EF 6. If anyone is interested in trying the new templates and wizard and doesn't want to download the code to compile it for themselves please let me know and I will give you a download link. Just keep in mind that you will need to manually uninstall anything I give you before you can install the release version.

4.3.0.0 release

When the tooling is released version 4.3.0 of Open RIA Services will be pushed out to NuGet with the prerelease flags removed. There are a few minor fixes included in the 4.3.0 release but otherwise it is identical to the current MyGet release.

4.3.1.0 release

Probably a day after the 4.3.0.0 release I will be pushing the initial 4.3.1-pre1 release to MyGet. Long term I plan to use this same cycle of moving stable releases to NuGet and keeping the prerelease versions on MyGet.

Change Log

4.3.0

1) Move to EF 6 as the baseline for entity framework support

2) Move to Silverlight 5

3) .NET 4.0 and 4.5 dlls for Entity Framework

4) Tooling moved to .NET 4.5 and Visual Studio 2013

5) Compile time code generation triggered for LinkedOpenRiaServerProject instead of LinkedServerProject

6) Compile time support fully triggered by NuGet packages. No external resourced needed for build servers outside of NuGet.

7) Enum.HasFlags support for queries to server (danneesset)

4.3.1-pre1

1) Async interface implementation (danneesset)

2) Fix client properties being wiped (koimad)

Near Future releases

Maher Jendoubi is working on NHibernate support for Open RIA Services. The plan is to get the DomainService working first then we will work on adding support to the Domain Service Wizard.

Once the tooling is working I will be moving my attention to the SignalR based change notification system.

I have had several people ask me about M2M. M2M support is Merijn's and he hasn't been able to work on it yet. He hopes to work on it in the future, in the meantime anyone is welcome to look at his original M2M4RIA code in RIA Services Contrib.

After I get change notification done I need to change my focus to working on the DomainController. Getting the DomainService replaced with the DomainController will be key to getting Open RIA Services working on platforms other than Silverlight. I briefly looked into porting the existing Client.Web project to Portable Class Library but there was too much WCF functionality missing to do an easy port.

This content has not been rated yet. 

12/9/2013 Porting from WCF RIA Services to Open RIA Services

All Open RIA Services components are installed from NuGet packages. Those packages are currently available from a MyGet feed. You can add the MyGet feed in Visual Studio on the Tools->Library Package Manager->Package Manager Settings->Package Sources screen. The URL is https://www.myget.org/F/openriaservices/

UPDATE: Open RIA Services has been released, NuGet packages are now available from NuGet,


  1. Remove all WCF RIA Services NuGet packages and DLLs. Look for DLLs with the System.ServiceModel.DomainServices and Microsoft.ServiceModel.DomainServices namespaces.
  2. Install the OpenRiaServices.Server package for all project that previously referenced System.ServiceModel.DomainServices.Server
  3. If you are using Entity Framework 6, install the OpenRiaServics.EntityFramework package.
  4. If you are using Entity Framework 4 (ObjectContext), install the OpenRiaServices.EntityFramework.EF4 package.
  5. If you are using Entity Framework 5, you will need to upgrade to 6.
  6. Install the OpenRiaServices.Silverlight package in the Silverlight projects that previously had the System.ServiceModel.DomainServices.Client DLL.
  7. The OpenRiaServices.Silverlight package includes the OpenRiaServices.Silverlight.Core, OpenRiaServices.Silverlight.CodeGen, and OpenRiaServices.ViewModel packages in one install.
  8. Unload the Silverlight project and edit the project file.
  9. Find the LinkedServerProject tag inside the project file. Rename the tag to LinkedOpenRiaServerProject and then reload the project. Repeat for any other projects that are RIA Linked.
  10. Added 4/14: If you are using the RiaClientUseFullTypesNames in the project file, rename it to OpenRiaClientUsefullTypesNames.
  11. Find all references to the System.ServiceModel.DomainServices namespace in your solution and replace them with OpenRiaServices.DomainServices.
  12. In the web.config, the PublicKeyToken for the RIA Services dlls needs to be changed to null in addition to changing form System.ServiceModel.DomainServices to OpenRiaServices.DomainServices
  13. If you are using the DomainDataSource, then remove the System.Windows.Controls.DomainServices dll and install the OpenRiaServices.Silverlight.DomainDataSource package. The namespace changes match the dll changes.








Breaking Changes

  • DbDomainService does not support older version of Entity Framework.
  • Open RIA Services dlls are not strongly signed.
  • Open RIA Services does not support partial trust.

This content has not been rated yet. 

12/7/2013 4.3 Alpha NuGet Packages Released

I am pleased to announce that alpha versions of the Open RIA Services 4.3 Alpha1 has been released on our MyGet feed.

The MyGet feed can be found at https://www.myget.org/F/openriaservices/

These packages represent an initial working version of Open RIA Services. Up to this point, the source code has been going through massive waves of refactoring making it very difficult for anyone other than myself to make changes to the code. That refactoring is mostly complete. Most of the changes will now be happening in the OpenRiaServices.VisualStudio.* projects as I work to get the templates, wizard, and RIA Link replacement screen in place. Once that is done I will revise the dlls to beta status instead of alpha status.

It is important to note that the 4.3 dlls are the foundation of the 4.3 branch of Open RIA Services, not the final result of the 4.3 branch. For example, M2M support is not currently built into these packages. However, now that these packages are functioning it should be possible for M2M support to be worked on by others.

I will be writing and posting preliminary documentation for the new packages tomorrow. In the meantime, here are example solutions showing the new packages being used to support EF 4/5 ObjectContext, EF 6 ObjectContext, and EF 6 DbContext. The one thing that will not be immediately apparent is that Open RIA Services code generation is activated by changing the name of the RIA Link's tag inside the project file. In WCF RIA Services the tag was named LinkedServerProject. For Open RIA Services you rename it to LinkedOpenServerProject. There is no UI to automate the setting of the Open RIA Link, that will be part of the beta release. 

Rated 5.00, 4 vote(s). 

11/25/2013 Project Lead Status Report

Sorry for the delay between updates. There hasn't been much to say other than I have been working on getting the Visual Studio tooling migrated to Visual Studio 2013.

Some of you may have seen my comments elsewhere setting certain date goals. Those are:

Open RIA Services 4.3 NuGet packages will be ready for use by the end of next week (12/6)

Open RIA Services tooling (the templates and Domain Service wizard) for Visual Studio 2013 will be ready for use by the end of December.

Open RIA Services 5.0 will be beta quality by the beginning of May for .NET/Mono clients.

Breaking Change:

Open RIA Services will not support limited trust environments. ASP.NET and Entity Framework no longer support limited trust so I had to remove it from RIA Services as well.

Rated 5.00, 1 vote(s). 

10/21/2013 Project Lead Status Report

  1. Visual Studio projects (the Domain Service wizard, etc.) have been dropped from the main solution for now. They compile against VS 2010 dlls and need more work.
  2. Unit tests now compile and are 52% functional.
  3. The solution now compiles without any manual changes needed as long as latest NuGet is installed.

This content has not been rated yet. 

10/14/2013 Project Lead Status Report

Categories: Open RIA Services, Project Lead

How to build Open RIA Services

  1. Open RiaServices.sln
  2. Right click the Test folder and unload all of the projects inside it
  3. Build. The solution is using NuGet so if you have the newest version of NuGet installed then all other needed packages should be downloaded automatically.

Pretty simple, except that having to unload all of the unit tests is a bit distressing. The unit tests have two major problems. The refactoring on them is not complete to get them moved off of Microsoft's namespaces. Second, the unit tests themselves are out of date and we non-functional even before I started changing all of the namespaces. I am working on fixing the remaining namespace issues but once that is complete I am looking for advice from the community on how to proceed with modernizing the unit test code.

NuGet feed: https://www.myget.org/F/openriaservices/

  • We do have a nightly build NuGet feed that is being hosted for us by MyGet. As of today the only package available is RiaServicesContrib.EntityFramework

    RiaServicesContrib.EntityFramework
    The first package that we will be releasing will add EF 6 support to Microsoft's WCF RIA Services. At the moment the package compiles and is available from our MyGet feed. However, I would not recommend the package be used until we can get the unit tests that can confirm its functionality working.

    Directories
    The Open RIA Services solution generates code  four different directories: Test, Desktop, Silverlight, and Portable. Test is where you will find the compiled unit tests, Desktop is where you will find the server assemblies and the WPF client assemblies, Silverlight is where you will find the Silverlight client, and Portable is where you will find the new Portable Class Library assemblies as they are created. Long time users of WCF RIA Services may be wondering why there are WPF client assemblies, they are there only for unit testing purposes. As far as I know, they have never actually been used to create a WPF application using RIA Services.
  • Timeline
  • By next week I will have the refactoring of the Unit Tests complete and will be working on getting the Unit Tests to actually run. Once we have some unit tests running we will be able to look at getting NuGet packages on the feed for all of the other pieces of the solution.

This content has not been rated yet. 

10/14/2013 Opening Day

Categories: Open RIA Services, Project Lead

As some people may already have noticed, the source code for Open RIA Services is available on the Codeplex site (http://openriaservices.codeplex.com) and as of today the project is officially open. I have populated the Issues list at Codeplex and almost everything on the issues list is currently listed as up for grabs. If you are interested in working on an issue please take a look at the code, come up with a plan, and then discuss here at the project site.

Later today I will be posting a more comprehensive status of the solution with technical details of the current state of the code, the location of our NuGet feed, and a some general timeframes. If you are interested in contributed to the project I encourage you to contact contributions@outercurve,org and let them know you want to sign the CLA agreement for Open RIA Services. They will send you details and ask which version of the CLA you need to sign.

This content has not been rated yet. 

8/20/2013 First glimpse of DomainController

Categories: Open RIA Services, Project Lead, General

We are still waiting for the code to be released by Microsoft, but in the meantime I thought I would post up an extremly preliminary idea of what the DomainController might look like. In this case, it is the DbDomainController:

public class AddressBookDomainController : DbDomainController<AddressBookContext> 
  protected override void OnDomainCreating(DbDomainBuilder<AddressBookContext> domainBuilder) 
  
    domainBuilder.Repositories.Add<AddressRepository>()
      .RequiresRole(OperationType.All, "AddressEditor")
      .RequiresRole(OperationType.Read, "ContactViewer"); 
    domainBuilder.Repositories.Add<PersonRepository>()
      .RequiresRole(OperationType.All, "PersonEditor")
      .RequiresRole(OperationType.Read, "ContactViewer"); 
    }     
}

The DomainController can look just like the DomainService does with all of the individual CRUD methods in the body, but you will also be able to register repositories with the DomainController and have the CRUD methods picked up from the repository. This is what the repository would look like:

public class PersonRepository 
  AddressBookContext Context {get;set;} 
  public PersonRepository(AddressBookContext context) 
  
    Context = context; 
  
  public IQueryable<Person> GetPeople 
  
    return Context.Persons; 
  
  public void InsertPerson(Person entity) 
  
    DbEntityEntry<LoadRating> entityEntry = this.Context.Entry(entity); 
    if ((entityEntry.State != EntityState.Detached)) 
    
      entityEntry.State = EntityState.Added; 
    
    else
    
      this.Context.People.Add(entity); 
    
  
  public void UpdatePerson(Person currentPerson) 
  
    this.Context.People.AttachAsModified(currentPerson, this.Context); 
  
  public void DeletePerson(Person entity) 
  
    DbEntityEntry<Person> entityEntry = this.Context.Entry(entity); 
    if ((entityEntry.State != EntityState.Detached)) 
    
      entityEntry.State = EntityState.Deleted; 
    
    else
    
      this.Context.People.Attach(entity); 
      this.Context.People.Remove(entity); 
    
  
}


This content has not been rated yet. 
1 2