Silverlight & LOB applications
Dennis van der Stelt
Class-A
Introducing
• Class-A
– Kennisprovider
– Microsoft development
– Training & Coaching
– http://www.class-a.nl

• Dennis van der Stelt
– Trainer/ coach
– Blog: http://bloggingabout.net/blogs/dennis/
– Twitter: dvdstelt
Agenda
• SQL Data Services, or not…
• .NET RIA Services
• Demo
ACE vs RDBMS

SQL DATA SERVICES
SQL Data Services
SQL Data Services
SqlConnectionStringBuilder connStringBuilder = new
SqlConnectionStringBuilder();
connStringBuilder.DataSource = "myserver.data.dev.mscds.com";
connStringBuilder.InitialCatalog = "mydatabase";
connStringBuilder.Encrypt = true;
connStringBuilder.UserID = "flitsservice“;
connStringBuilder.Password = "****";
string createTableSql =
@"CREATE TABLE [dbo].[tbl_Person]
(
[FirstName] NVARCHAR(64) NOT NULL,
[LastName] NVARCHAR(64) NOT NULL
CONSTRAINT [personName_PK] PRIMARY KEY CLUSTERED
(
[FirstName] ASC,
[LastName] ASC
)
)";
SQL Data Services
using (SqlConnection conn = new SqlConnection(connStringBuilder.ToString()))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = createTableSql;
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
cmd.CommandText = "select * from tbl_Person where FirstName = 'Dennis'";
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine("First Name: {0}", reader["FirstName"]);
}
reader.Close();
}
}
SQL Data Services
Others

Ruby

PHP

Java

ODBC

SQL Applications

OleDb
Tabular Data Stream

SQL Data Services

Astoria
&
Entity Framework
ADO.NET
.NET RIA SERVICES
Vision and goals
• Simplify RIA development
– n-tier is hard, and un-natural

• Bring ASP.NET/RAD-style productivity to
RIA development
– Focus on end-to-end scenarios and solutions
End-to-End Data
• Beyond accessing and editing rows
– App-specific custom operations
– Data shaping (sorting, paging, filtering)
– Rules (validation, authorization, conflict
handing)
– Batching and offline
Multi tier application model
Services

Browser

HTML

Rich Internet Application Application
Web

Presentation
Network
Logic

App
Logic

Services
Data Access
Layer

Services

Other Applications

DB
DEMO
A Prescriptive Pattern
DomainContext: Bindable Data

DomainService: CRUD + App Logic

class Catalog
EntityList<Product> Products { get }
void LoadProducts(IQueryable<Product>)
void ToggleSale(Product)

Data Model +
Metadata +
Shared Code

class Product
Data members + Validation
void ToggleSale()

class Catalog
IQueryable<Product> GetProducts()
void UpdateProduct(Product, Product)
void ToggleSale(Product)
Validation and authorization rules,
Application workflows, …

Data Model
class Product
Application

Presentation
Logic

Network

Services
App
Logic

Data Access
Layer
DB
A Pattern that Scales and Grows
Databases
ADO.NET,
ORMs (LTS, EF, …)
App
Logic
CLR Lists/Objects
Repository
(nHibernate, …)
XML,
JSON,
Binary

Unit Test
Code

Services
REST/SOAP
(Azure, …)
What didn’t we cover?
• Authentication
– Both Windows & Forms based

• Enhanced SEO capabilities
– Not yet fully functional in current bits

• Business application template
• Linq2Sql & Azure capabilities
• OOB & Offline synchronization
Roadmap
• SQL Data Services
– Unknown, only that it supports TDS

• .NET RIA Services
– May CTP available, new one in July
– PDC09 bits will run on Astoria
– First part of 2010 : RTW
Summary
• .NET RIA Services offer
– Better n-tier support
– Rapid Application Development
– A pattern that scales and grows
– Services for additional features

And remember, this will run on SDS
questions
Resources:
• http://silverlight.net/
• .NET RIA Services forums
• http://bloggingabout.net/blogs/dennis/

Silverlight & WCF RIA

  • 1.
    Silverlight & LOBapplications Dennis van der Stelt Class-A
  • 2.
    Introducing • Class-A – Kennisprovider –Microsoft development – Training & Coaching – http://www.class-a.nl • Dennis van der Stelt – Trainer/ coach – Blog: http://bloggingabout.net/blogs/dennis/ – Twitter: dvdstelt
  • 3.
    Agenda • SQL DataServices, or not… • .NET RIA Services • Demo
  • 4.
    ACE vs RDBMS SQLDATA SERVICES
  • 5.
  • 6.
    SQL Data Services SqlConnectionStringBuilderconnStringBuilder = new SqlConnectionStringBuilder(); connStringBuilder.DataSource = "myserver.data.dev.mscds.com"; connStringBuilder.InitialCatalog = "mydatabase"; connStringBuilder.Encrypt = true; connStringBuilder.UserID = "flitsservice“; connStringBuilder.Password = "****"; string createTableSql = @"CREATE TABLE [dbo].[tbl_Person] ( [FirstName] NVARCHAR(64) NOT NULL, [LastName] NVARCHAR(64) NOT NULL CONSTRAINT [personName_PK] PRIMARY KEY CLUSTERED ( [FirstName] ASC, [LastName] ASC ) )";
  • 7.
    SQL Data Services using(SqlConnection conn = new SqlConnection(connStringBuilder.ToString())) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = createTableSql; cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery(); cmd.CommandText = "select * from tbl_Person where FirstName = 'Dennis'"; using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { Console.WriteLine("First Name: {0}", reader["FirstName"]); } reader.Close(); } }
  • 8.
    SQL Data Services Others Ruby PHP Java ODBC SQLApplications OleDb Tabular Data Stream SQL Data Services Astoria & Entity Framework ADO.NET
  • 9.
  • 10.
    Vision and goals •Simplify RIA development – n-tier is hard, and un-natural • Bring ASP.NET/RAD-style productivity to RIA development – Focus on end-to-end scenarios and solutions
  • 11.
    End-to-End Data • Beyondaccessing and editing rows – App-specific custom operations – Data shaping (sorting, paging, filtering) – Rules (validation, authorization, conflict handing) – Batching and offline
  • 12.
    Multi tier applicationmodel Services Browser HTML Rich Internet Application Application Web Presentation Network Logic App Logic Services Data Access Layer Services Other Applications DB
  • 13.
  • 14.
    A Prescriptive Pattern DomainContext:Bindable Data DomainService: CRUD + App Logic class Catalog EntityList<Product> Products { get } void LoadProducts(IQueryable<Product>) void ToggleSale(Product) Data Model + Metadata + Shared Code class Product Data members + Validation void ToggleSale() class Catalog IQueryable<Product> GetProducts() void UpdateProduct(Product, Product) void ToggleSale(Product) Validation and authorization rules, Application workflows, … Data Model class Product Application Presentation Logic Network Services App Logic Data Access Layer DB
  • 15.
    A Pattern thatScales and Grows Databases ADO.NET, ORMs (LTS, EF, …) App Logic CLR Lists/Objects Repository (nHibernate, …) XML, JSON, Binary Unit Test Code Services REST/SOAP (Azure, …)
  • 16.
    What didn’t wecover? • Authentication – Both Windows & Forms based • Enhanced SEO capabilities – Not yet fully functional in current bits • Business application template • Linq2Sql & Azure capabilities • OOB & Offline synchronization
  • 17.
    Roadmap • SQL DataServices – Unknown, only that it supports TDS • .NET RIA Services – May CTP available, new one in July – PDC09 bits will run on Astoria – First part of 2010 : RTW
  • 18.
    Summary • .NET RIAServices offer – Better n-tier support – Rapid Application Development – A pattern that scales and grows – Services for additional features And remember, this will run on SDS
  • 19.
    questions Resources: • http://silverlight.net/ • .NETRIA Services forums • http://bloggingabout.net/blogs/dennis/