240 likes | 339 Vues
Learn how to build large grids using OGSI.NET, covering standards, technologies, and relationships between .NET and grid services. Explore the OGSI.NET container operation, message flow, security, programming model, and future applications. Discover the attribute-based programming model, meta-data, security features like digital signing, and programming grid services. OGSI.NET simplifies the process, making it as easy as working with web services, enabling you to expose Microsoft technologies to the grid.
E N D
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 • C#, VB, VC++, J#, F#, Perl, Python, Fortran, Cobol, SmallTalk, Pascal, Eiffel, Haskell, Scheme.. • Runtimes for many platforms • Mono runs on Linux, FreeBSD, Solaris, SPARC, PowerPC, StrongArm, and Windows! • Technology for many MS products • ASP.NET, ADO.NET, Web Services
.NET’s Relationship to the Grid • Web Services are fundamental building blocks for Grid Services • Easy to build Web Services with MS tools • Infrastructure can be used for Grid Services • Pervasiveness of .NET capable machines • Including handhelds
Talk Outline • Introduction of OGSI.NET • Container Operation • Message Flow • Security • Programming Model • Application / Research using OGSI.NET • Future Work
OGSI.NET • OGSI-compliant hosting environment • Goals: • Bring OGSI-compliant grid services to .NET & Windows world • Expose MS technology to “the grid” • e.g. ADO.NET
OGSI.NET is… • A hosting environment • Container that holds service instances Dispatcher that routes messages to them • Libraries • OGSI port types, Service base class • Attribute-based programming model • Meta-data added to service logic
OGSI.NET Container • Container divided into separate Application Domains (AppDom’s) • Process-style memory protection w/o process • Each service instance has its own AppDom • 1 additional AppDom contains Dispatcher • Dispatcher • Knows how to route requests to services
OGSI.NET Container • Each service’s AppDom contains a Grid Service Wrapper (GSW) • GSW provides • Message handlers for serializing/deserializing various message types • Routing requests to methods of service’s port types • SDE storage/retrieval • WSE pipeline • Basically encapsulates service logic with helper code
OGSI.NET Request Flow • Client sends request message “to service” • Assume SOAP/HTTP for the moment • IIS receives HTTP request • If begins with container prefix, sends it to ISAPI filter • ISAPI filter “rewrites” request to dispatch into ASP.NET • allows arbitrary service names
OGSI.NET Request Flow • ASP.NET HttpHandler sends request to container process • Request received by Dispatcher • Dispatcher routes request into service instance’s AppDom • Service’s GSW selects appropriate message handler
OGSI.NET Request Flow • Message Handler processes request • Runs WSE pipeline (examine msg headers) • Deserializes data items • GSW marshals data items and calls requested method • Result sent to message handler for serialization • Could be return values or exceptions • Result message follows reverse path
OGSI.NET Security • Web Service Extensions (WSE) pipeline in each AppDom • Digital Signing and Encryption • X509, Kerberos and WindowsIdentity tokens • WS-SecurityPolicy • more later…
Programming Grid Services • Goal: Make it as easy as Web Services • Difference between a “Grid Service” and “service logic” is meta-data • Defines how methods and data are exposed • Conditions of exposure (policy) • Programmers annotate their code • C# attributes (can get at runtime) • Other languages (need pre-processing)
OGSI.NET Attribute-based Programming • [OGSIPortType] [OGSIPortType(typeof(FactoryPortType))] [OGSIPortType(typeof(NotificationSourcePortType))] [OGSIPortType(typeof(GridServicePortType))] public class FactoryService : GridServiceSkeleton { • [SoapDocumentMethod] [WebMethod] [SoapDocumentMethod("http://gcg.virginia.edu/samples/ counter#subtract", Binding="CounterSOAPBinding")] [return: XmlElement("returnValue")] public int subtract(int value) {
Exposing Service Data • [SDE] [SDE ("interface", typeof(XmlQualifiedName), false, MutabilityType.constant, false, "1", "unbounded")] public class GridServicePortType : GridServiceSkeleton {
Exposing Service Data • Get and Set handlers for SDEs [SDEGet(“currentTime”)] public ArrayList getTime(OGSIServiceData sde, GridServiceWrapper gsw) { • Member variables as SDEs public class SomeServicePortType : GridServiceSkeleton { SomeServicePortType() { … } [SDE] public int foo;
Specifying Service Policy • Initially security policy [Integrity(“require”, “body”, “token1, token2”)] [Confidentiality(“reject”, “header1”, “token3”)] [Message(“require”, “age<30”)] [Token(“token1”, “x509v3”, “subject=Bob Smith, CA=UVA”)] [Token(“token2”, “Kerberosv5ST”)] [Token(“token3”, “SecurityContextToken”, “issuer=http://token.virginia.edu/ mytoken”)] public class Service1 : GridServiceSkeleton { • Other types of policy…
Issues in Building an OGSI-Compliant Container • Processing GWSDL (de/serialization) • Wsdl.exe and xsd.exe don’t correctly process the OGSI v1.0 WSDL and data types • Somewhat broken even for WSDL 1.1… • C# doesn’t have faults in its function signature • So you can’t just reflect on the method (attributes needed) • Inter-op with GT3 • OGSI spec compliance not enough • Need similar service semantics • Microsoft’s envisioned usage pattern for tools
Grid Services: Heavy or Light? • Not one service per process • Thread pool for the container • Let OS sort it out • Light-weight services • Services without full container under them • More than one service per AppDom • Notification sinks
Research with OGSI.NET • Role of hand-held devices in the grid • .NET CF → Grid Services on PocketPC • OGSI.NET clients exist, server-side is future • Policy for Grids • What policies might be particular to grids? • Survivability policy! • Not writing a new policy specification language (i.e. use WS-Policy or other)
Future Work • What is next for OGSI? • WSDL 1.2? • Improve service programming model • Policy for grid services • More interesting security work • Services on the device • Globus protocols/GGF standards? • OGSA compliance?