ogsi.net: building grids for the .net world

24
OGSI.NET: Building OGSI.NET: Building Grids for the .NET Grids for the .NET World World Glenn Wasson Glenn Wasson Grid Computing Group Grid Computing Group University of Virginia University of Virginia

Upload: yana

Post on 30-Jan-2016

30 views

Category:

Documents


0 download

DESCRIPTION

OGSI.NET: Building Grids for the .NET World. Glenn Wasson Grid Computing Group University of Virginia. Building Large Grids. Standards are important OGSA / OGSI WS-* Others? Grids span many platforms But typically not Windows. Enter .NET. What is .NET? Runtime (CLR) for many languages - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: OGSI.NET: Building Grids for the .NET World

OGSI.NET: Building OGSI.NET: Building Grids for the .NET Grids for the .NET

WorldWorld

Glenn WassonGlenn Wasson

Grid Computing GroupGrid Computing Group

University of VirginiaUniversity of Virginia

Page 2: OGSI.NET: Building Grids for the .NET World

Building Large GridsBuilding Large Grids

►Standards are importantStandards are important OGSA / OGSIOGSA / OGSI WS-*WS-* Others?Others?

►Grids span many platformsGrids span many platforms But typically not WindowsBut typically not Windows

Page 3: OGSI.NET: Building Grids for the .NET World

Enter .NETEnter .NET

►What is .NET?What is .NET? Runtime (CLR) for many languagesRuntime (CLR) for many languages

►C#, VB, VC++, J#, F#, Perl, Python, Fortran, C#, VB, VC++, J#, F#, Perl, Python, Fortran, Cobol, SmallTalk, Pascal, Eiffel, Haskell, Cobol, SmallTalk, Pascal, Eiffel, Haskell, Scheme..Scheme..

Runtimes for many platformsRuntimes for many platforms►Mono runs on Linux, FreeBSD, Solaris, SPARC, Mono runs on Linux, FreeBSD, Solaris, SPARC,

PowerPC, StrongArm, and Windows!PowerPC, StrongArm, and Windows!

Technology for many MS productsTechnology for many MS products►ASP.NET, ADO.NET, Web ServicesASP.NET, ADO.NET, Web Services

Page 4: OGSI.NET: Building Grids for the .NET World

.NET’s Relationship to the .NET’s Relationship to the GridGrid

►Web Services are fundamental Web Services are fundamental building blocks for Grid Servicesbuilding blocks for Grid Services Easy to build Web Services with MS toolsEasy to build Web Services with MS tools Infrastructure can be used for Grid Infrastructure can be used for Grid

ServicesServices

►Pervasiveness of .NET capable Pervasiveness of .NET capable machinesmachines Including handheldsIncluding handhelds

Page 5: OGSI.NET: Building Grids for the .NET World

Talk OutlineTalk Outline

► Introduction of OGSI.NETIntroduction of OGSI.NET►Container OperationContainer Operation►Message FlowMessage Flow►SecuritySecurity►Programming ModelProgramming Model►Application / Research using OGSI.NETApplication / Research using OGSI.NET►Future WorkFuture Work

Page 6: OGSI.NET: Building Grids for the .NET World

OGSI.NETOGSI.NET

►OGSI-compliant hosting environmentOGSI-compliant hosting environment

►Goals:Goals: Bring OGSI-compliant grid services Bring OGSI-compliant grid services

to .NET & Windows worldto .NET & Windows world Expose MS technology to “the grid”Expose MS technology to “the grid”

►e.g. ADO.NETe.g. ADO.NET

Page 7: OGSI.NET: Building Grids for the .NET World

OGSI.NET is…OGSI.NET is…

►A hosting environmentA hosting environment Container that holds service instances Container that holds service instances

Dispatcher that routes messages to themDispatcher that routes messages to them

►LibrariesLibraries OGSI port types, Service base classOGSI port types, Service base class

►Attribute-based programming modelAttribute-based programming model Meta-data added to service logicMeta-data added to service logic

Page 8: OGSI.NET: Building Grids for the .NET World

The OGSI.NET ContainerThe OGSI.NET Container

Page 9: OGSI.NET: Building Grids for the .NET World

OGSI.NET ContainerOGSI.NET Container

►Container divided into separate Container divided into separate Application Domains (AppDom’s)Application Domains (AppDom’s) Process-style memory protection w/o Process-style memory protection w/o

processprocess Each service instance has its own Each service instance has its own

AppDomAppDom 1 additional AppDom contains Dispatcher1 additional AppDom contains Dispatcher

►DispatcherDispatcher Knows how to route requests to servicesKnows how to route requests to services

Page 10: OGSI.NET: Building Grids for the .NET World

OGSI.NET ContainerOGSI.NET Container

► Each service’s AppDom contains a Grid Service Each service’s AppDom contains a Grid Service Wrapper (GSW)Wrapper (GSW)

►GSW provides GSW provides Message handlers for serializing/deserializing Message handlers for serializing/deserializing

various message typesvarious message types Routing requests to methods of service’s port Routing requests to methods of service’s port

typestypes SDE storage/retrievalSDE storage/retrieval WSE pipelineWSE pipeline Basically encapsulates service logic with helper Basically encapsulates service logic with helper

codecode

Page 11: OGSI.NET: Building Grids for the .NET World

OGSI.NET Request FlowOGSI.NET Request Flow

►Client sends request message “to Client sends request message “to service”service” Assume SOAP/HTTP for the momentAssume SOAP/HTTP for the moment

► IIS receives HTTP requestIIS receives HTTP request If begins with container prefix, sends it to If begins with container prefix, sends it to

ISAPI filterISAPI filter ISAPI filter “rewrites” request to dispatch ISAPI filter “rewrites” request to dispatch

into ASP.NETinto ASP.NET allows arbitrary service namesallows arbitrary service names

Page 12: OGSI.NET: Building Grids for the .NET World

OGSI.NET Request FlowOGSI.NET Request Flow

►ASP.NET HttpHandler sends request to ASP.NET HttpHandler sends request to container processcontainer process

►Request received by DispatcherRequest received by Dispatcher►Dispatcher routes request into service Dispatcher routes request into service

instance’s AppDominstance’s AppDom►Service’s GSW selects appropriate Service’s GSW selects appropriate

message handlermessage handler

Page 13: OGSI.NET: Building Grids for the .NET World

OGSI.NET Request FlowOGSI.NET Request Flow

►Message Handler processes requestMessage Handler processes request Runs WSE pipeline (examine msg headers)Runs WSE pipeline (examine msg headers) Deserializes data itemsDeserializes data items

►GSW marshals data items and calls GSW marshals data items and calls requested methodrequested method

►Result sent to message handler for Result sent to message handler for serializationserialization Could be return values or exceptionsCould be return values or exceptions

►Result message follows reverse pathResult message follows reverse path

Page 14: OGSI.NET: Building Grids for the .NET World

OGSI.NET SecurityOGSI.NET Security

►Web Service Extensions (WSE) pipeline Web Service Extensions (WSE) pipeline in each AppDomin each AppDom

►Digital Signing and EncryptionDigital Signing and Encryption X509, Kerberos and WindowsIdentity tokensX509, Kerberos and WindowsIdentity tokens

►WS-SecurityPolicyWS-SecurityPolicy more later…more later…

Page 15: OGSI.NET: Building Grids for the .NET World

Programming Grid ServicesProgramming Grid Services

►Goal: Make it as easy as Web ServicesGoal: Make it as easy as Web Services►Difference between a “Grid Service” Difference between a “Grid Service”

and “service logic” is meta-dataand “service logic” is meta-data Defines how methods and data are Defines how methods and data are

exposedexposed Conditions of exposure (policy)Conditions of exposure (policy)

►Programmers annotate their codeProgrammers annotate their code C# attributes (can get at runtime)C# attributes (can get at runtime) Other languages (need pre-processing)Other languages (need pre-processing)

Glenn Wasson
say difference between writing a grid service and writing the service logic is meta-data
Page 16: OGSI.NET: Building Grids for the .NET World

OGSI.NET Attribute-based OGSI.NET Attribute-based ProgrammingProgramming

► [OGSIPortType][OGSIPortType][OGSIPortType(typeof(FactoryPortType))][OGSIPortType(typeof(FactoryPortType))][OGSIPortType(typeof(NotificationSourcePortType))][OGSIPortType(typeof(NotificationSourcePortType))][OGSIPortType(typeof(GridServicePortType))][OGSIPortType(typeof(GridServicePortType))]public class FactoryService : GridServiceSkeletonpublic class FactoryService : GridServiceSkeleton{{

► [SoapDocumentMethod][SoapDocumentMethod][WebMethod][WebMethod][SoapDocumentMethod("http://gcg.virginia.edu/[SoapDocumentMethod("http://gcg.virginia.edu/

samples/samples/counter#subtract", Binding="CounterSOAPBinding")]counter#subtract", Binding="CounterSOAPBinding")][return: XmlElement("returnValue")][return: XmlElement("returnValue")]public int subtract(int value)public int subtract(int value){{

Page 17: OGSI.NET: Building Grids for the .NET World

Exposing Service DataExposing Service Data

►[[SDESDE]]

[SDE ("interface",[SDE ("interface",

typeof(XmlQualifiedName), false, typeof(XmlQualifiedName), false,

MutabilityType.constant, false, MutabilityType.constant, false,

"1", "unbounded")]"1", "unbounded")]

public class GridServicePortType : public class GridServicePortType : GridServiceSkeletonGridServiceSkeleton

{{

Page 18: OGSI.NET: Building Grids for the .NET World

Exposing Service DataExposing Service Data

► Get and Set handlers for SDEsGet and Set handlers for SDEs[SDEGet(“currentTime”)][SDEGet(“currentTime”)]

public ArrayList getTime(OGSIServiceData sde, public ArrayList getTime(OGSIServiceData sde,

GridServiceWrapper gsw) GridServiceWrapper gsw)

{{

► Member variables as SDEsMember variables as SDEspublic class SomeServicePortType : GridServiceSkeletonpublic class SomeServicePortType : GridServiceSkeleton

{{

SomeServicePortType() { … }SomeServicePortType() { … }

[SDE][SDE]

public int foo;public int foo;

Glenn Wasson
mention the automatic assignment of Get handler for member var SDEs
Page 19: OGSI.NET: Building Grids for the .NET World

Specifying Service PolicySpecifying Service Policy

► Initially security policyInitially security policy[Integrity(“require”, “body”, “token1, token2”)][Integrity(“require”, “body”, “token1, token2”)]

[Confidentiality(“reject”, “header1”, “token3”)][Confidentiality(“reject”, “header1”, “token3”)]

[Message(“require”, “age<30”)][Message(“require”, “age<30”)]

[Token(“token1”, “x509v3”, “subject=Bob Smith, [Token(“token1”, “x509v3”, “subject=Bob Smith, CA=UVA”)]CA=UVA”)]

[Token(“token2”, “Kerberosv5ST”)][Token(“token2”, “Kerberosv5ST”)]

[Token(“token3”, “SecurityContextToken”, [Token(“token3”, “SecurityContextToken”,

““issuer=http://token.virginia.edu/ mytoken”)]issuer=http://token.virginia.edu/ mytoken”)]

public class Service1 : GridServiceSkeletonpublic class Service1 : GridServiceSkeleton

{{

►Other types of policy…Other types of policy…

Page 20: OGSI.NET: Building Grids for the .NET World

Issues in Building an OGSI-Issues in Building an OGSI-Compliant ContainerCompliant Container

► Processing GWSDL (de/serialization)Processing GWSDL (de/serialization) Wsdl.exe and xsd.exe don’t correctly process the Wsdl.exe and xsd.exe don’t correctly process the

OGSI v1.0 WSDL and data typesOGSI v1.0 WSDL and data types Somewhat broken even for WSDL 1.1…Somewhat broken even for WSDL 1.1… C# doesn’t have faults in its function signatureC# doesn’t have faults in its function signature

►So you can’t just reflect on the method (attributes So you can’t just reflect on the method (attributes needed)needed)

► Inter-op with GT3Inter-op with GT3 OGSI spec compliance not enoughOGSI spec compliance not enough Need similar service semanticsNeed similar service semantics

►Microsoft’s envisioned usage pattern for toolsMicrosoft’s envisioned usage pattern for tools

Glenn Wasson
if you stray from the MS path, woe be to youindividually configurable pipelines for each serviceprogrammatic access in WSE2.0?
Page 21: OGSI.NET: Building Grids for the .NET World

Grid Services: Heavy or Grid Services: Heavy or Light?Light?

►Not one service per processNot one service per process Thread pool for the containerThread pool for the container Let OS sort it outLet OS sort it out

►Light-weight servicesLight-weight services Services without full container under themServices without full container under them More than one service per AppDomMore than one service per AppDom Notification sinksNotification sinks

Page 22: OGSI.NET: Building Grids for the .NET World

UVa OGSI.NET NAMD TestbedUVa OGSI.NET NAMD Testbed

Page 23: OGSI.NET: Building Grids for the .NET World

Research with OGSI.NETResearch with OGSI.NET

►Role of hand-held devices in the gridRole of hand-held devices in the grid .NET CF → Grid Services on PocketPC.NET CF → Grid Services on PocketPC OGSI.NET clients exist, server-side is OGSI.NET clients exist, server-side is

futurefuture

►Policy for GridsPolicy for Grids What policies might be particular to grids?What policies might be particular to grids? Survivability policy!Survivability policy! Not writing a new policy specification Not writing a new policy specification

language (i.e. use WS-Policy or other)language (i.e. use WS-Policy or other)

Page 24: OGSI.NET: Building Grids for the .NET World

Future WorkFuture Work

►What is next for OGSI?What is next for OGSI? WSDL 1.2?WSDL 1.2?

► Improve service programming modelImprove service programming model►Policy for grid servicesPolicy for grid services►More interesting security workMore interesting security work►Services on the deviceServices on the device►Globus protocols/GGF standards?Globus protocols/GGF standards?►OGSA compliance?OGSA compliance?