650 likes | 951 Views
Microsoft Development Platform and Services. Ivan Pavlovi ć, Hive Studios Visual C# MVP, MCSD, MCDBA, MCT paki@hive-studios.com http://msforge.net/blogs/paki. Agenda. BizLayer. Communication + Workflow + Services "Dublin" Server Enhancements Azure .NET Services Software Factories.
E N D
Microsoft Development Platform and Services Ivan Pavlović, Hive Studios Visual C# MVP, MCSD, MCDBA, MCT paki@hive-studios.com http://msforge.net/blogs/paki
BizLayer • Communication + Workflow + Services • "Dublin" Server Enhancements • Azure .NET Services • Software Factories
Microsoft Development Platform In the Cloud On Premise Client & UI Composition User Interface & Interaction Business Layer Composition .NET Framework Azure Services, .NET Framework WCF WCF, WF Windows Azure Azure .NET Services Data Layer Access to Back-end
Unified Programming Model .NET Remoting ASMX Interop with other platforms Extensibility Location transparency Managed COM+ APIs Message- Oriented Programming WS-* Protocol Support Enterprise Services System.Messaging WSE
Client Service A B C A B C C B A A B C Address Where? Contract What? Binding How? Endpoint Address, Binding & Contract • A Service Endpoint has an Address, a Binding, and a Contract (ABC). • An Address is a network address indicates where the service is located. • A Binding specifies how a client can communicate with the endpoint including transport protocol, encoding, and security requirements. • A Contract identifies what operations are available to the clients.
Service Addresses • Every service is associated with a unique address. • Base address format [transport]://[host name][:optional port]/[optional path] • Base address describes where it provides the metadata for the service (WSDL) • Endpoint address format [base address]/[optional path] • Endpointaddress is where the service is actually listening. This can be an absolute URI or relative to the baseaddress. • Build-in transports: HTTP/S, TCP, P2P, IPC and MSMQ • Examples http://localhost:8001/MyService/BP http://localhost:8001/MyService/WS net.tcp://localhost:8002/MyService net.pipe://localhost/MyPipe net.msmq://localhost/private/MyQueue
Security Channel TCP Transport Security Channel CLR Type Integration CLR Type Integration Transaction Behavior Transaction Behavior Instancing Behavior TCP Transport Messaging Layer Service Model Layer Influences and adds to the programming model based on incoming messages Moves messages back and forth and adds transfer semantics (channels) WCF Composable Architecture Service Code
Error Handling Behavior Security Channel Security Channel CLR Type Integration CLR Type Integration Concurrency Behavior Throttling Behavior Custom Behavior Transaction Behavior Transaction Behavior Instancing Behavior Instancing Behavior Metadata Behavior HTTP Transport Queue Transport HTTP Transport TCP Transport TCP Transport Custom Channel Custom Channel Named Pipes Reliable Messaging Reliable Messaging MSMQ Integration WCF Composability in Action Service Model Layer Messaging Layer Behaviors Channels
Type Integ. Behavior … MetadataBehavior ErrorBehavior TransactionBehavior Instance Behavior Throttling Behavior ConcurrencyBehavior ASP.NET WPF WAS NT Service COM+ WinForm WCF Architecture Detail Application Hosting Environments ServiceModel Messaging Text/XML Encoder … Secure Channel Reliable Channel Binary Encoder TCP Channel HTTP Channel Queue Channel
WCF Contracts • Service • Describes the operations a service can perform. Maps CLR types to WSDL. • Data • Defines data structures (complex types) that will be sent on the wire. Maps CLR types to XSD. • Message • Defines the structure of the message on the wire. Maps CLR messages to SOAP messages • “ContractDescription” class represents WCF Contract
WCF Contracts Sample Contract defines the operations of a service [ServiceContract] public interface IMyContract { [OperationContract] string Hello(string name); } Implementing the service public class MyService : IMyContract { public string Hello(string name) { string greeting = "Hello " + name; Console.WriteLine(greeting); return greeting; } }
Windows Activation Service (WAS) NP Listener Adapter HTTP Listener Adapter (IIS7) TCP Listener Adapter Named Pipes Transport Listener TCP Transport Listener HTTP.SYS WCF Hosting Options • Manual hosting in any managed application • ASP.NET, COM+, EXE, WindowsService, Windows Forms, WPF • Hosted in IIS • Windows Activation Service • Used for hosting in IIS7 or outside IIS7
.NET 4.0 WCF Improvements • Increased developer productivity • Serialization, web prog. model, debugging • Support for syndication • Performance and scalability Improvements • IIS7 performance increase (5-10×) • Data platform support • Support for ADO.NET Entity Framework in WCF services • WCF Tools improvements • Testclient, Config editor, Single-click publish
Building WCF ServicesSimple Echo Service Duplex Communication
What is WF? Tooling VS Designer VS Debugger Rehosted Designer • WF is a way to coordinate work with minimal ceremony • Activities • Runtime • Tooling Host Process (.exe, IIS, "Dublin", Strata, …) Workflow Activity Library WF Runtime Extensions Persistence Tracking …
Why WF? • Coordinate Asynchronous (Distributed?) Work • Write Persistable Applications • Customizable Vocabulary & Design Experience • Gain Visibility into your Application
Activities Activities execute in pulses of work – which can result in the scheduling of other activities Activities are the primitive abstraction for behavior Activities are composable Sequence Activity State Machine Activity • Send • Message • Activity • Assign • Activity • Receive • Message • Activity • Delay • Activity WF Runtime Execution, State Management, Persistence
Activities An Activity may contain user-defined Variables for data storage Arguments can be bound to Variables up the parent chain Activities define arguments to declare the type of data that can flow into or out of an Activity Sequence Variables InArgument<object> OutArgument<object> State Machine • Send • Message • Assign Variables Variables OutArgument<Message> InArgument<TimeSpan> • Receive • Message • Delay WF Runtime Execution, State Management, Persistence
WF over the years… WF 3.0 WF Rules 3.0 • Independent Technologies WF 3.5 WF Rules 3.5 WF + WCF 4.0 WCF 3.5 WCF 3.0 • Deep Integration • Unification of Activities and Rules • Fully Declarative Workflow Services • Performance • Rich Workflow Host • Correlation • Workflow as WCF Service
Activity Library Custom Activities <YOUR CODE HERE> Base Activity Library BPEL Utilities Expressions Error Handling WCF Messaging Database WF Primitives PowerShell Interop Control Flow Activities Flowchart Sequential State Machine Rules Activity Model & Runtime
Workflow Service in .NET 3.5 .cs DataContracts MessageContracts ServiceContract Workflow code .svc .dll .xaml .config WorkFlowServiceHost .xaml Workflow Implementation .config Bindings Behaviors 24
Future of Workflow Services .xaml Addresses Bindings Contracts Workflow Activities Implementation Behaviors .xaml Workflow ServiceHost
Why XAML? • Developer / BA collaboration • Declarative expression • Application transparency • Custom tooling • Deployment flexibility
Other WF 4.0 Improvements • Activity • Usability (80% Code Reduction) • Alignment across Expressions, Rules, and Activities • Completely Fractal Composition Model • Fully declarative workflows and activities • Runtime • 10-100X Performance Improvements • Integrates with App Models (WCF/WPF/ASP.NET) • Flow-in Transactions • Partial Trust Support • Full control over persistence • Tools • Designer Performance and Usability • Rehosting Improvements • Unified Debugging Experience • And much much more….
Writing WCF Services with Workflow? • Consider Workflow Services if your service does any of the following: • Calls a database, Calls another service, or Uses the File system • Coordinates parallel work • Coordinates messages with application state • Is long running • Requires rich tracking information • Prefer code services when your service • Is a set of independent operations w/ no shared state
Workflow Services Workflow Service Host Instance Store Workflow Runtime Service Dispatcher Workflow Instance Channel XAML 30
Integrated Framework Services are the unit of modularity for “loosely-coupled” composition Service Activity Service Activity Activity Service Activities are the unit of modularity for “tightly-coupled” composition
WCF 4.0 Improvements • Rest toolkit • Channels: UDP, InProc • Standards: SOAP over UDP, WS-Discovery, WS-BA, BP 1.2 • Standard Endpoints • Durable Duplex • Config • …
Workflow 3.5 to 4.0 Path • Prefer XAML • Think about designing models and storing models in a repository/database • Build custom activities • Code won't port, custom activities will • Prefer WCF 3.5 send and receive • WCF/WF integration is even tighter Microsoft .NET 4.0 • Use WorkflowServiceHost even when not exposing workflows as services • NetNamedPipesBinding
Microsoft Servers& Tools In the Cloud On Premise Client & UI Composition User Interface & Interaction Business Layer Composition Azure .NET Services Windows Server (“Dublin”) Biztalk Server, SQL Server Visual Studio Team System Data Layer Access to Back-end
BizLayer • Communication + Workflow + Services • "Dublin" Server Enhancements • Azure .NET Services • Software Factories
What is “Dublin” • Host for WF and WCF • Managabiltiy • Supportabilty • Scaleabily • Extensions to IIS/WAS Visual Studio Oslo Windows Server “Dublin” Administration Tools System Center WF and WCF services .NET Framework IIS/WAS
Microsoft's Application ServerToday Process Activation Management Logging HealthMonitoring Request Pipeline Caching • (For web applications only) ProcessManagement Configuration ASP.NET System Center Visual Studio Expression Web Designer Internet Information Services XML Communications Workflow Web UI Security Transactions Data .NET Framework 3.5 Virtualization Resource Management Management Scripting Queuing Networking Stack Windows Server
Microsoft's Application ServerTomorrow Services and Workflows Runtime Persistence WorkflowActivation MessagingServices MonitoringServices App Hosting “Dublin” Process Activation Management Management Logging HealthMonitoring Request Pipeline Caching • (For web applications only) ProcessManagement Configuration ASP.NET System Center Visual Studio Expression Web Designer Internet Information Services XML Communications Workflow Workflow Web UI Security Transactions Data Communications .NET Framework 4.0 Virtualization Resource Management Management Scripting Queuing Networking Stack Windows Server
Dublin Software Stack Partners Dublin Fx Windows Oslo Visual Studio IIS Manager WCF and WF Templates WCF and WF IIS Manager Modules Management APIs (PowerShell command-lets) Runtime Services & Components Hosting Monitoring Persistence Instance Recovery Service Error Handling Behavior Lock Retry Behavior Auto-Start Provider Event Collector System Center “Dublin” Management Pack .NET Framework SQL Persistence Provider Instance Control Endpoint Durable Timer Service XAML & Config Activation Service Hosting Environment Routing (Forwarding) Service WF Tracking Provider ETW Tracking Participant WCF Message Logger WCF Analytic Trace Runtime Databases (SQL / SQL Express) Monitoring schema Persistence schema IIS/WAS
“Dublin” Scalability Via HTTPS to WMSVC InetManager Dublin InetManager PowerShell PowerShell s1 s2 Via WS-MAN to WinRM . . . Load Balancer Dublin s1 s2 Queue Dublin s1 s2 configuration & control data access messages
Manageability • Consolidated view of all Services on a server • Easy export and import of Services • Integration into VS 2010 • Various tracking profiles out of the box • Basic Workflow Tracking • Verbose WCF Service Tracking • Verbose Workflow Tracking • Custom tracking
Supportability • Adds tooling to existing features • Powershell commands for all UI Elements • Tracing and Message Logging via easy user interface (or Powershell) • Persisted Instance viewer • Running • Blocked • Ready-to-Run • Suspended
Dublin vs Biztalk • "Dublin" will not replace BizTalk • BizTalk will continue to be Microsoft's Premier Integration Server • "Dublin" fits for • Scable, supportable, host for WF and WCF • Non-Integration solutions • Low mapping and adapter scenarios • Both clients with and without BizTalk Server
When is “Dublin” • Post Visual Studios 10 (Mid 2010) • Available as a web download • Eventually baked into Windows
BizLayer • Communication + Workflow + Services • "Dublin" Server Enhancements • Azure .NET Services • Software Factories
Microsoft Services Platform Azure™ Services Platform
A Look Inside Azure Your Applications … ServiceBus Workflow Database Analytics Identity Contacts AccessControl … Reporting … Devices … Compute Storage Manage …
.NET Services • Services for application integration
Service Bus • Key developer challenges • Want to make it easy and secure for partners to use your application • Don’t always know the characteristics or scale of the integration • Partners / customers / users have devices and services running behind firewalls • Approach • Provide a high-scale, high-available “Service Bus” that supports open Internet protocols
Service Registry [http|sb]://servicebus.windows.net/services/account/svc/… Service Registry Root account svc The service registry provides a mapping from URIs to services servicebus.windows.net services Root contoso Multi-Tenant …
Connectivity • Two key capabilities • Relay • Direct connect • Relay • Ensure applications connect • Available to all via the service registry • Direct connect • Uses the relay to establish communication • Then shortcuts for efficiency • Available via HTTP / REST / ATOM • Available in .NET via WCF Bindings