The Open RIA Services Blog: General

Posts in category General

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. 

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. 

7/12/2013 At the moment, Open RIA Services is 87% cross platform

Categories: Open RIA Services, General

Using Xamarin tools, we know that the RIA Services Native Client is 87% cross platform ready and what parts of it need to be modified. And we don't even have the code yet!

This content has not been rated yet.