Home
        MS.NETGrid OGSI User Manual - EPCC
         Contents
1.     MySdeNamespace                         Create a new service data element  ServiceData sde   sde   serviceDataSet_ Create  sdeName                            code to populate the ServiceData object goes here          MS NETGrid OGSIUserManual v1 0 22                Add service data element to the service data set  serviceDataSet_ Add  sde          The indexer property of the ServiceDataSet can be used to access the ServiceData  objects by the service data element   s qualified name as show here              Construct the qualified name for the service data element  System Xml QualifiedName terminationTimeQName   terminationTimeQName    new System  Xm1l QualifiedName     terminationTime     CoreConstants OGSI NAMESPACE URI                                    Obtain the ServiceData object using the indexer  ServiceData sd   serviceDataSet_  terminationTimeQName                can now use sd to access and alter the termination time     service data element          9 3 The ServiceData class    The ServiceData object is used to store the properties and values of the service data  elements  For full details of the ServiceData class see the class documentation     this  section provides an introduction to some of the mean features of the class     9 3 1 Service data element properties    There are a number of standard OGSI properties that are associated with a service data  element  These are listed below along with their default values and corresponding property of  the ServiceD
2.    The callback class must implement the IServiceDataValuesCallback interface  This  interface specifies a single read only property called ServiceDataValues that returns an  array of objects that are the service data values  For example              class MyCallbackClass   IServiceDataValuesCallback     public object   ServiceDataValues     get        code to create an object array of values goes her  return result                   To specify that the callback mechanism should be used to determine the service data values  the Callback property of the ServiceData class must be set to the instance of the callback  class  For example                 MyCallbackClass callbackInstance   new MyCallbackClass     sd Callback   callbackInstance                 It is important to note that this mechanism for dynamic service data value creation can only  be used when the service data element is non modifiable     9 3 4 Lifetime attributes    Service data values can have lifetime attributes associated with them  To add a service data  value with specific lifetime values to a ServiceData object the overloaded AddValue     method can be used  There is a version of the method that takes lifetime values as well as the  value object itself  For example              Create value object  MyClass myObject   new MyClass             Create lifetime objects   System DateTime goodFrom   System DateTime Now    System DateTime goodUntil   Ogsi Core Util GridDateTime  INFINITY    System DateTime avail
3.   Internet protocols such as HTTP and SOAP and described using WSDL     Grid Services     Web Services conforming to the OGSI specification   Grid Service Instance     A network accessible instance of an OGSI compliant service   PortType     A set of operations supported by a Web or Grid Service     ServiceData     An XML based mechanism that allows a client to query the state of a service  instance in a flexible and extensible manner     ServiceDataElement     A particular element of serviceData  identified by a name and a value    Tomcat     A container for Java based Web Applications  http   jakarta apache org         AXIS     A Web Application running under Tomcat  which provides Web Services  functionality   http   xml apache org      Programming Model     A set of procedures and APIs used to develop an application in a  given domain    MS NETGrid OGSIUserManual v1 0 30       References  Documents referenced in the text  and other related documents  include the following      MS NETGridOgsiDesignOverview  MS NETGrid OGSI Implementation Design Overview   MS NETGridOgsiDesignOverview v1 0   D Byrne  EPCC  June 16  2003      MS NETGrid Proj Def  Project Definition for a Collaboration Between Microsoft and EPCC   MS NetGrid ProjDef V2 0   M  Jackson  EPCC  April 25  2003      OGSI Spec  Open Grid Services Infrastructure  Draft 29   S  Tuecke  K  Czajkowski  I   Foster  J  Frey  S  Graham  C  Kesselman  T  Maquire  T  Sandholm  D  Snelling  P   Vanderbilt  April 5th  2003  ht
4.   Spec     MS NET Grid OGSI User Manual    Project Title     Document Title     Document Identifier     NeSC    National        e Science        Centre          MS NETGrid  MS NETGrid OGSI User Manual    MS NETGrid OGSIUserManual v1 0           T  Ha    0  all          Authorship  Ally Hume   Document History    Personnel Summary Version  EPCC EPCC Approved 1 0   MJJ Second Draft     Changes and Comments 0 2  ACH First Draft 0 1       Approval List  EPCC  Project Leader  Technical Staff  Technical Reviewers  Coach    Mike Jackson  Daragh Byrne  Ally Hume  Ali Anjomshoaa  Dave Berry  Neil Chue Hong    Approval List  Microsoft Research Limited  Managing Director  University Relations x 3    Andrew Herbert  Fabien Petitcolas  Van Eden  Dan Fay    Copyright O 2003 The University of Edinburgh  All rights reserved     MS NETGrid OGSIUserManual v1 0 2       Contents  A A sauce stsdecsesesseoteeesiecdcseoscraecteccssece saceeusesiass 2  O AAA 4  1 1 Product LicenCe    ooocooonononocnnonenoninoninonnnconnconncconoconnconncono cono cona coca cono nono noconoonaconaccnnccn nos 4  1 2 Project AMAS VS O TO 4  1 3 Support and Queries                cccccssscccscseecccscescccsssscecscsesccssssccesssesesccsssecesssessessesees 4  2  InstallatioN      ocooocoonnconnconnocnnnconncnoncnoncnoncona cono conacononononconaconaconncconcconccnnnconc conc etsin cora cona conos 5  3 Running a Demonstration Client                 cssscssesscecccsscscccssccsssccesscccesccesesccesssssessessesees 6  4 Class
5.   provide a pair of demonstration services  These are located in the   lt install_dir gt  MS NETGrid Ogsi Container demoservices container           The basicService subdirectory contains a persistent Grid Service that implements the  GridService portType  a transient version of this service and a factory for creating instances  of the transient service  The proxy code for these services is located in  Ogsi Container services persistent and  Ogsi Container services transient  These services do not expose any additional  functionality  but do demonstrate the programming model that this document describes        The counter subdirectory contains a more interesting example  The transient service  located  in CounterServiceSimple cs  exposes all the functionality of the GridService portType   inherited from GridServiceSkeleton  In addition  Increment and Decrement methods are  provided  A serviceData element called count is defined with its own namespace  The  Increment and Decrement methods are used to alter the value of this serviceData element   In addition  the value of count may be set using the setServiceData operation provided by  the GridService portType           The deployment for the transient counter service and the persistent counter factory service  may be examined in  lt install_dir gt  MS NETGrid Ogsi Container Web config        The counter factory demonstrates the use of previously existing portTypes via the  OgsiPortTypeAttribute attribute  The CounterFactoryCre
6.  documentation    cooocoonnconncnonononcnonnonnnonanonanonanonanonnconaconnccnncconncnnnconc conc coc cona cono cona conos 7  5   Writing a simple persistent ServiC         ooomommmmms  8  5 1 Write the service Class   ooocoonooonnoconncnnncnoncnanonanonanonanonnnconnconncconcconncono cono ossosa nss ss seses 8  5 2 Write the proxy ClasS              cccscscsscssscccccccescccssscrsnccsescccsesccesssceescccsescesssssersscsseseeses 9  5 3 Compile the service class and proxy class into an assembly              csccsssscssseseeees 9  5 4 Write a  asmx file for the Service   oooooonoonnonononinoninonanoninononconaconncconcconccocconccono cono coss 10  5 5 Configure the OGSI container          sesssesssesssesssessscsssesssesssessseossesssesssosssoossoossosssoosso 10  5 6 Installing the service               sccsscsssscssssccccccesccecssccecscccesccesesceessccsssccssescessscserssessesees 10  6 Writing a client of a persistent Service       ooooocommmssomsmm 12  7 Writing a transient service and a persistent Factory service             ssscsssccssscsssceseoes 13  7 1 Write the transient service class    ooocooomoonocnonoconnnonnnonocanoconconnccnncconcconcconnconccono cono coss 13  7 2 Write the persistent factory service ClaSS        ssesssesssesssesssesssesssessesssoossocssoossoossoosso 14  7 3 Write factory creator class         e sseessoesooesooessosssoessesssesssessseossesssosssesssosssocssoossoossoosso 14  TA  Write proxy classes s iscscsssessceseecssssvessssossserasesenssssess
7.  parameters     o The creation parameters XML element is bundled inside a CreationType object  that is passed as input to the factory   s createService    method     o The Url property of all transient services proxies must be set before any methods of  the proxy are called  The Url property must be set to the handle returned by the  factory via the LocatorType object     o The transient service can be destroyed when the client is finished with it by calling  the destroy    method     Compile this file along with MyTransService cs and MyTransServiceFactory cs as  shown in the following command line           csc  out MyTransClient exe MyTransClient cs MyTransService cs MyTransServiceFactory cs       This will produce an executable called MyTransClient exe that will use the factory to  create a new instance of the transient Grid service and then call that service   s hello     method several times to producing the output shown below           Have a service the locator is   http   localhost Ogsi Container services transient MyTransService asmx instanceld instance   141776660  214136689 104091352482151152689462196422965123173137   Ciao Mike 1   Ciao Daragh 2   Ciao Ally 3                MS NETGrid OGSIUserManual v1 0 21       9 Service data    The concept of service data is an important part of OGSI  The GridServiceSkeleton base  class provides a collection for service data via the InstanceServiceData property   Through this collection the service developer can manipulate the s
8. FactoryCreator cs    is           using System   using System Xml   using Ogsi Core        namespace MyGridServices     public class MyTransServiceFactoryCreator   IFactoryCreator                     public GridServiceSkeleton CreateServiceObject      XmlElement creationParams   IServiceParameters factory                   MyTransServicelmpl retval   string greeting    hello                  creationParams is an XmlElement containing     parameters to be used in the creation of the new     service instance   if  creationParams    null       if  creationParams Name     initialValue                             throw new ArgumentException     creationParams should be of type initialValue           greeting   creationParams ChildNodes 0  Value                Create a new service instance  retval   new MyTransServicelmpl  greeting                      Return the new service instance  return retval                   The factory creator class must implement the IFactoryCreator interface  This interface  has only one method called CreateService0bject     Essentially all this method has to  do is create an instance of the transient service and return it           The creationParams parameter of the CreateServiceObject    method can be used to  pass an arbitrary XML element from the client to the factory  This is an ideal mechanism to  use when the service class constructor requires one or more arguments  This is the case in the  code above     the majority of the code is responsible f
9. TGrid OGSIUserManual v1 0 13       7 Writing a transient service and a persistent Factory service    In this section we go through the stages required to write and deploy a simple transient Grid  service with a corresponding persistent factory service  The factory service can be used to  create instances of the transient Grid service  The stages are     1  Write the transient service class that implements the functionality of the transient  service     2  Write the factory service class     3  Write the factory creator class that is used by the factory to create instances of the  transient service     4  Write proxy classes for the service class and factory service class   5  Compile classes into an assembly    6  Write  asmx files for the transient service and factory service    7  Configure the OGSI container    8  Install the services     The transient Grid service we write here is very simple  It is initialised with a single string  argument called greeting provided to the factory service     via the Factory portType  CreateService operation     that will create our transient Grid service and we will implement a  single method called hello    The method takes one argument called name and will return  the string    greeting name n    where greeting is the value of the greeting argument  the service was initialised with  name is the value of the name argument of the hello     method and n is an integer that starts at 1 and increments every time the method is called   The Gr
10. The Ogsi Core PersistentGridServiceSkeleton  and Ogsi Core GridServiceSkeleton classes give access to other Grid service  infrastructure such as service data that the service may wish to use  This simple example does             MS NETGrid OGSIUserManual v1 0 9       not use service data     5 2 Write the proxy class    The proxy class is used to expose the service s public methods  or  in other words  the  operations of the Grid service     The code for the proxy class     which should be saved in a file called MyService cs     is as  follows           using System Web Services   using Ogsi Container Instances Proxy           namespace MyGridServices         public class MyService  PersistentGridServicelnstanceAspProxy           WebMethod   public string hello  string name       object    args     name     return  string  CallMethod  hello   args              This class inherits from the PersistentGridServiceInstanceAspProxy class  in  namespace Ogsi Container Instances  Proxy   The  System Web Services WebMethodAttribute is used to tell ASP NET to expose this  method as a public Web method of the service  Other ASP NET method attributes may be  used to provide further customisation  See the ASP NET user documentation for details        Every method that is to be exposed as part of the Grid service must have a corresponding  method defined for it in the proxy class  The methods in the proxy class are all very similar   They simply put the arguments into an array and then pas
11. a new process      NET Remoting     The mechanism by which  NET allows Remote Procedure Call  RPC   between AppDomains and between remote machines     ASP     Active Server Pages  a Microsoft technology that works in conjunction with IIS to host  Web Applications     ASP NET     The  NET version of ASP  with extensions for Web Services and Enterprise  Applications     C    Pronounced C Sharp  a new Microsoft programming language that takes advantage of   NET platform features     Assembly     A collection of managed code  which may form an executable or a library  and  may be distributed across a number of physical files  Assemblies facilitate the separation of  logical and physical resources     OGSA     The Open Grid Services Architecture  which is a set of proposed architectures and  protocols for Grid computing  Anatomy      OGSI     The Open Grid Services Infrastructure  a specification of behaviours and properties of  Grid Services  Physiology  OGSI Spec      OGSA DAI     OGSA Data Access and Integration  Grid Services framework for seamless  access and integration of data using the OGSA paradigm  OGSA DAJ      MS NETGrid OGSIUserManual v1 0 29       Globus     The Globus toolkit  A standard toolkit of Grid software  Version 3 will contain an  implementation of OGSI in Java  http   www globus org         WSDL     The Web Services Description Language  http   www w3 org TR wsdl         Web Services     Refers to network enabled software capabilities accessed using common
12. ableUntil    Ogsi Core Util GridDateTime  INFINITY                                MS NETGrid OGSIUserManual v1 0 24             sd AddValue  myObject   goodFrom   goodUntil   availableUntil          If no lifetime values are specified the goodFrom attribute defaults to the current time and the  goodUntil and availableUntil attributes default to INFINITY     It is possible to obtain the lifetime attributes associated with the values of a ServiceData  object using the GetLifetimes   method  This method returns an array of  ServiceDataAttributes objects each corresponding to a service data value  The  ServiceDataAttributes class has properties to get and set the lifetime attributes and also  get and set the value to which the lifetime attributes are associated     See the class documentation for classes ServiceData and ServiceDataAttributes for  more details     9 3 5 Service data evaluators    The grid service findServiceData and setServiceData operations are implemented by the  GridServiceSkelton base class  By default the findServiceData operation supports the  queryByServiceDataNames query expression and the setServiceData operation supports the  setByServiceDataNames and deleteByServiceDataNames query expressions        It is possible to add new query expressions to these operations  To add support for a new  query expression you must implement a new query evaluator to evaluate the query  Query  evaluators must implement the IExpressionEvaluator interface  The evaluator mus
13. ata class     OGSI property Default value DataService property  Minimum occurs inOccurs    Maximum occurs axOccurs    Mutability static utability       Modifiable false odifiable       Nillable false nillable       9 3 2 Service data values    Service data elements can have zero or more values  It is important to initialise a  ServiceData object with details of the values that can be stored within it  For example  the  following code configures a ServiceData object to store values of type MyClass                 Assume there is a ServiceData object called sd                   Specify that the ServiceData objects will store values of     type MyClass  sd ValuesType   typeof  MyClass         Values can be added to the ServiceData using the AddValue    method  For example              MS NETGrid OGSIUserManual v1 0 23             MyClass myObject   new MyClass     sd AddValue  myObject          There are several other methods and properties defined on the ServiceData class to  manipulate the values of a service data element  See the class documentation for more  details     9 3 3 Using a callback to determine service data values dynamically    In some instances it is preferably to calculate the service data values dynamically as and when  they are needed rather than storing a collection of values in the ServiceData object  This  can be easily done by providing a callback class that the ServiceData class will use to  determine the service data values whenever they are requested  
14. ator class demonstrates  the use of the IFactoryProvider interface  The CreateServiceObject   method takes  an XML element with that specifies the initial value of the counter        MS NETGrid OGSIUserManual v1 0 28       12 Glossary  For convenience of reference we include the following glossary    NET     The Microsoft  NET platform  including the NET SDK  Software Development Kit      associated development tools such as Visual Studio  NET  http   www microsoft com net   and the Common Language Runtime        Common Language Runtime     a runtime environment that executes Microsoft Intermediate  Language  MSIL      MSIL     The  NET bytecode  a low level assembler like language executed by the Common  Language Runtime     Managed code     Code that runs on the NET CLR     IIS     Microsoft Internet Information Server  a web server offering communication over a  variety of internet protocols     ISAPI     An Application Programming Interface  API  that allows applications to use the  network services provided by IIS  Commonly used to provide HTTP filters that respond to all  HTTP requests on the server     AppDomain      NET allows the partitioning of a single Operating System process into a  number of AppDomains  which are essentially memory safe areas within the process  If the  code in an AppDomain crashes  other AppDomains within the process are unaffected  This  concept has some performance advantages as using AppDomains avoids the overheads  associated with starting 
15. can be used in  conjunction with a supplied client to test your installation  The client is located in   lt install_dir gt  MS NETGrid CounterClient  Go to the bin subdirectory and run the  CounterClient executable  Click on the  Create New Counter  button  This creates a new  instance of a transient counter service  The Grid Service Handle for this service instance  should appear in the  Created counter handle  box  If it does not  please make sure that IIS is  running and the Ogsi Container directory is visible from Internet Services Manager        Several operations may be performed on this service instance  The count value may be set  using the  Set count value  button  This sets the current value of the counter to be that of the  box to the left of this button  The  Increment  and  Decrement  buttons may be used to adjust  the value of the counter by the amount displayed in the box between the buttons  The  Find  Service Data  button can be used to obtain service data by name  The count service data is  found by default  The ServiceData values are displayed in the bottom textbox  If this client  operates correctly  the installation has been successful  The correctly operating client looks  like the following screenshot     Counter A    Counter factory url      http    localhost Ogsi Container services persistent CounterS erviceS impleF actory  asmx  Initial Value fo Create New Counter      Created counter handle                   http   localhost O0 gsi  Container servic
16. eednsesuessssesssesesssuessssesssosissseateceses 15  7 5 Compile classes into an assembly               scscsscssscccccscesccecssscesscccesccesescersseessessesees 17  7 6 Write  asmx files for the transient service and factory service             cccsceeees 17  7 7 Configure the OGSI container                ccscsssscssccecccsesscscssccecssccesccssesceesssseessessesees 17  7 8      Install the Services wiccsscsccciececceascssssesssceacesstadssonssontcesenssscensestecessensseensoostsseasdcenacesens 18    8 Writing a client of a transient ServiCe       ommoomomsmsmsms 19    MS NETGrid OGSIUserManual v1 0 3       E A O O 21  9 1 Default service data elements      oocoonmommosiosiaconnccnnccnnnconnconnconocono cono coonconaconaconnccnnoss 21  9 2  Service data SOt cooocooonconncnonononnnonnnononnnconaconaccnncconcconocono cono cono conc cona nono nono cooncconaccn ccoo nos 21  9 3    The ServiceData Class s c ccciccissnisscrsscscccesessssnevccscndeenivconesodscesscesscensooddvebecesncceeanste 22   9 3 1 Service data element properties               ccccccccssescccsscercscsccsccssssccessseessecsesees 22  9 3 2 Service data Values           ccccccsccssscssscssscsssscssscssscssssssssssssssssssssssssssesssscssssseeses 22  9 3 3 Using a callback to determine service data values dynamically                  23  9 3 4 Lifetime attributes         ooomooenosoonnnsonncoonncnonnnonocnnnocccoonncononncnoonocoor conoce rooccncocnnonnos 23  9 3 5 Service data evaluators           cccccccrcsssc
17. ersistent service    Writing a client to talk to a persistent Grid Service is identical to writing a client to talk to a  Web Service  Firstly we must create a proxy class for the service and then use it in our own  code     To create a proxy class create a new directory and within that directory use the following  command line instruction           WSDL http   localhost O gsi Container services persistent My Service asmx       If you are accessing our container from a remote host then you can replace localhost with the  name of the host upon which our container is running     This will create a proxy class called MyService cs  We can now write a client that uses the  service  Code for an example client of our service is           using System     class MyClient     static void Main        MyService GridService   new MyService     Console WriteLine  GridService hello   Horace                           Compile this file along with the MyService cs file as shown in the following command line  instruction           csc  out MyClient exe MyClient cs MyService cs       This will produce an executable called MyClient exe that will call the Grid service   s  hello   method when it is run producing the output shown below           C  Projects ogsanet client gt MyClient  hello Horace 1       C  Projects ogsanet client gt MyClient  hello Horace 2                                                 C  Projects ogsanet client gt MyClient  hello Horace 3                                  MS NE
18. ervice data in many ways   This section describes how the developer can manipulate the service data        9 1 Default service data elements    All services will have several service data elements by default  These are defined by the  OGSI specification and are implemented in the GridServiceSkeleton base class  The  default service data elements are        o interface   o  factoryLocator   o  gridServiceHandle   o gridServiceReference   o findServiceDataExtensibility  o  setServiceDataExtenstbility  o  terminationTime    o  serviceDataName    9 2 Service data set    The GridServiceSkeleton base class provides a protected member variable through  which service implementations can access the service data collection  This member variable  is called serviceDataSet_ and is of type ServiceDataSet  The service data set is a  container for service data elements  Each service data element is referenced by an XML  qualified name  consisting of a local name and a namespace   The ServiceDataSet class  provides methods to create new service data elements  add service data elements to the  collection  access service data elements from the collection as well as several others  See the  class documentation for full details of the class        New service data elements can be added to the collection with code similar to the following              Construct a qualified name for the service data element  System Xml XmlQualifiedName sdeName    new System Xml XmlQualifiedName     mySdeName       
19. es transient CounterS erviceS imple  asmx instancel  d instance 1 285907 72 887167421 21971 28332502051 112421161697994160139        o Set count value    Decrement   fi Increment      Destroy service instance    Service data to find    count gridServiceHandle Find Service Data     lt serviceDataWalues xmins xsd  http    www w3 org 2001    lt MLSchema    xmins xsi  http  77v  3  0192001    MLS chema instance    xmins     http   4  gridforum org namespaces 2003 03 0GS5I   gt 1  lt count  xmins   http    localhost CounterNS    d2p1 goodFrom   2003 06 16T 09  44 47 2422 001ra  d2p1 goodUntil     infinity   d2p1 availableUntil   infinity       mins  d2p1   http   2  gridforum org namespaces 2003 03 0G51    gt 5 lt   count gt     lt gridServiceHandle xmins   http   4  gridforum org namespaces 2003 03 0G5    d2p1 g00dFrom  2003 06 16T09 44 55 5392 001 ra  d2p1 goodUntil     infinity               MS NETGrid OGSIUserManual v1 0       4 Class documentation    Source code documentation is available in Microsoft Help format at            lt install dir gt  MS NETGrid doc API MS NETGridHelp chm    MS NETGrid OGSIUserManual v1 0 8       5 Writing a simple persistent service    In this section we go through the stages required to write and deploy a simple persistent Grid  service  These stages are     1  Write the service class that implements the functionality of the service    2  Write the proxy class that exposes the service s public methods    3  Compile the service class and proxy cla
20. file called  MyTransServiceFactoryImpl cs    is as follows           using System   using Ogsi Core     namespace MyGridServices      OgsiPortType    typeof  FactoryPortType     http   localhost MyTransServiceFactoryNs     MyTransServiceFactoryPortType      public class MyTransServiceFactorylImpl  PersistentGridServiceSkeleton                        As can be seen this is a very simple class  The class is for a persistent service so it inherits  from Ogsi Core PersistentGridServiceSkeleton  The service is to be a factory so  the we have used the OgsiPortType attribute to specify that the service supports the Factory  portType  When we use the OgsiPortType attribute to specify that a service supports the  Factory portType the majority of the implementation is done for us     all we have to do is  write a creator class to create instances of the service the factory creates and then specify that  the creator class is associated with the factory  These tasks are covered in sections 7 3 and  7 7 respectively        The second and third arguments to the OgsiPortType attribute specify the namespace and  name of the portType  These values are not used in the current release but are intended to  provide a reference to the portType for use in future releases     7 3 Write factory creator class    The factory creator class is used to create instances of transient services  The code     which          MS NETGrid OGSIUserManual v1 0 15       should be saved in a file called MyTransService
21. for the service     5 5 Configure the OGSI container    For each Grid service hosted by the OGSI container an entry must be added to the container s  Web config file  this file is located at  lt oGSIContainer gt  Web config         Inside the  lt gridServiceDeployment gt  element of the file add the following entry               lt gridServiceDeploymentDescriptor  asmxProxyFileName  MyService asmx   serviceClass  MyGridServices MyServicelmpl   assembly  MyServices   persistence  persistent    gt    lt  gridServiceDeploymentDescriptor gt                       This entry specifies   o The name of the  asmx file generated in section 5 4  for example MyService asmx     o The full name of the service class created in section 5 1  for example  MyGridServices MyServicelmpl        o The name of the assembly created in section 5 3  for example MyServices     o Whether the service is persistent or transient     5 6 Installing the service    To install the service   o Copy the MyServices d11 assembly to  lt OGSIContainer gt  bin     o Copy the MyService asmx file to  lt OGSIContainer gt  services persistent        o Restart IIS       To restart IIS obtain the control panel  select Administrative Tools  and then select Internet Services Manager  Select the appropriate web  site  probably Default Web Site  and use the stop and start icons to          MS NETGrid OGSIUserManual v1 0    11       stop and restart the server     MS NETGrid OGSIUserManual v1 0 12       6 Writing a client of a p
22. general and ASP NET in particular to the development of  Grid services rather than as a fully functioning product  In consequence we do not provide  any support for our software  However please feel free to forward any comments  queries   suggestions or problems you have to     ogsanet queries epcc ed ac uk       MS NETGrid OGSIUserManual v1 0       2 Installation       The download consists of a zip file called Ms   N   convenient directory of your choice  At this    ETGridOGSI TP1 0 zip  Extract this to a  location  there will be a directory called    MS NetGrid  This directory will have a number of subdirectories one of which is called  Ogsi Container  This Ogsi Container directory contains the ASP NET based OGSI  container  as well as all source code for the container     The Ogsi Container directory must be set    up as a virtual directory under Internet    Information Services  IIS   This can be done using Microsoft   s Internet Services Manager   see the user documentation for this product for details of creating a virtual directory  Call the    virtual directory Ogsi Container     Throughout the rest of this document the notation  lt OGSIContainer gt  refers to the full path    name of the Ogsi Container directory   lt inst  the MS  NETGrid directory was unzipped        all_dir gt  refers to the directory into which    MS NETGrid OGSIUserManual v1 0 6       3 Running a Demonstration Client    The installation is configured to initialise a counter service factory that 
23. id service will inherit additional methods  e g  findServiceData   and  destroy      that correspond to the GridService portType operations that all Grid services  must provide     7 1 Write the transient service class    The service class is the class that implements the specific functionality of the Grid service   The code for this class     which should be saved in a file called MyTransServiceImpl cs       is as follows           using Ogsi Core     namespace MyGridServices         public class MyTransServiceImpl   GridServiceSkeleton                  private int count _   oh   private string greeting               public MyTransServicelmpl  string greeting         greeting   greeting              MS NETGrid OGSIUserManual v1 0 14             public string hello  string name           return greeting       name     o        count_    ToString                           This class inherits from the Ogsi Core GridServiceSkeleton class  All transient Grid  services must inherit from this class        The most interesting feature of this class is that the constructor takes an argument  We  therefore require a mechanism to allow the client to pass this parameter to the factory that will  create the service instances  This mechanism will be explained in more detail in section 7 3     7 2 Write the persistent factory service class    The factory service class is the class that implements the functionality of the persistent factory  service  The code     which should be saved in a 
24. nt this is used to create     the service instance   XmlDocument doc   new XmlDocument       XmlElement xmlParams   doc CreateElement   initialValue      Xml1Node val   doc CreateTextNode   Ciao     xmlParams   AppendChild  val               Construct a creation object  MyTransServiceFactoryNS CreationType creation           creation   new CreationType     creation terminationTimeSpecified   false   creation serviceParameters   xmlParams           Create a service using the factory  MyTransServiceFactoryNS LocatorType locator   locator   factoryService createService  creation                Console WriteLine   Have a service the locator is  n     locator handle 0                    MS NETGrid OGSIUserManual v1 0 20                   Create service object  MyTransService service   new MyTransService             Tell this service object the location of the service     instance                      service Url   locator handle 0        Use the service object   Console WriteLine  service hello   Mike  y    Console WriteLine  service hello   Daragh        Console WriteLine  service hello   Ally  IS E                Destroy the transient service when finished  Service destroy               There are several points to note about the code     o We construct an XML element called xm1Params that contains the data required by  the factory creator class  The schema of this element is specific to this particular  factory  other factories can use different schema for their creation service
25. ntiated by the container  instances of every class defined          MS NETGrid OGSIUserManual v1 0 26       by its OgsiPortTypeAttributes are created and associated with the service instance   When developing proxy methods for provider based methods  the Cal1MethodOnProvider  method of GridServiceInstanceAspProxy is used            WebMethod   public int SomeOtherUsefulMethod            return CallMethodOnProvider     MyAssembly SomeUsefulClass     SomeUsefulMethod     object    null    7                    The provider classes can be given access to the ServiceDataSet of the service in the  following manner  If the provider classes are found to implement IOperationProvider   the ServiceInstance property defined by this interface is initialised with a reference to the  instance of MyService that it is associated during initialisation     We provide a basic implementation of  IOperationProvider called  Ogsi Core OperationProviderBase for convenience     The provider class may now access the service s ServiceDataSet by obtaining a reference  from the reference it maintains to the service class              public class SomeOtherUsefulClass   OperationProviderBase                  public int SomeOtherUsefulMethod        int i       process          this ServicelInstance InstanceServiceData someQName    i   return 1                 MS NETGrid OGSIUserManual v1 0 27       11 Example services    As an example of using portTypes  serviceData and persistent and transient services  we
26. o   lt OGSIContainer gt  services transient    o Copy the MyTransServiceFactory asmx file to   lt OGSIContainer gt  services persistent        o Restart IIS          MS NETGrid OGSIUserManual v1 0 19       8 Writing a client of a transient service    Writing a client to talk to a transient Grid Service is virtually identical to writing a client to  talk to a Web Service  Firstly we must create a proxy classes for the services and then use  them in our own code     To create proxy classes create a new directory and within that directory issue the following  command line commands  each should be entered on a single line         WSDL  namespace MyTransServiceNS  http   localhost Ogsi Container services transient MyTransService asmx             WSDL  namespace MyTransServiceFactoryNS  http   localhost Ogsi Container services persistent MyTransServiceFactory asmx       This will create proxy classes called MyTransService cs and  MyTransServiceFactory cs each within their own namespace to avoid name clashes with  common types     We can now write a client that uses the factory and the service instances it creates  The code  for the client is  save this in a file called MyTransClient cs            using System   using System Xml     using MyTransServiceNs   using MyTransServiceFactoryNs        class MyTransClient         static void Main           Create a factory service object  MyTransServiceFactory factoryService     new MyTransServiceFactory          Construct XML creation eleme
27. on     return  LocatorType  CallMethodOnProvider     Ogsi Core FactoryPortType     CreateService    arguments                  This class uses the CallMethodOnProvider   method rather than the CallMethod    method     In this case  Cal 1MethodOnProvider is used as the CreateService method is not defined          MS NETGrid OGSIUserManual v1 0 17       directly on MyTransServiceFactoryImp1  but on the FactoryPortType provider object  associated with MyTransServiceFactoryImpl using OgsiPortTypeAttribute  The  first argument to CallMethodOnProvider is the name of the object type and is used to  select the appropriate provider  The second argument is the name of the method to call and  the third argument is the parameters to pass to the method     7 5 Compile classes into an assembly    To compile all the classes into an assembly use the following command line  this should be  typed on a single line            csc  t library  out MyTransServices dll   MyTransService cs MyTransServiceFactory cs  MyTransServiceFactoryCreator cs MyTransServiceFactoryImpl cs  MyTransServicelmpl cs   v  lt OgsiContainer gt  bin Ogsi Container dll       Where  lt 0GSIContainer gt  is the path to the OGSI container installation     7 6 Write  asmx files for the transient service and factory service    To utilise ASP NET to deploy our Grid service we must create a  asmx file for the transient  service and the factory service  As in the case of the persistent service this simply maps the  service name to 
28. or extracting the value for the  constructor   s greeting argument from the XML element     7 4 Write proxy classes    Proxy classes are required to expose the services    public methods  We have to write proxy       MS NETGrid OGSIUserManual v1 0 16       classes for both the transient service and the factory service     The code for the service class   s proxy class     which should be saved in a file called  MyTransService cs    1s              using System Web Services   using Ogsi Container Instances Proxy        namespace MyGridServices     public class MyTransService  TransientGridServicelnstanceAspProxy              WebMethod   public string hello  string name       object    args     name     return  string  CallMethod  hello   args                 This class is virtually identical to the proxy class for the persistent service discussed in section  5 2  The only difference here is that this class inherits from  TransientGridServiceInstanceAspProxy because it is a transient rather than  persistent service        The code for the factory class   s proxy class     which should be saved in a file called  MyTransServiceFactory cs    Is           using System Web Services   using Ogsi Container Instances  Proxy   using Ogsi Core Types              namespace MyGridServices       public class MyTransServiceFactory  PersistentGridServicelnstanceAspProxy             WebMethod   public LocatorType createService CreationType creation                object    arguments     creati
29. s these arguments and the method  name to the Cal1Method    method that is a public method of the base class     5 3 Compile the service class and proxy class into an assembly    To compile the service class and proxy class into an assembly use the following command  line instruction  which should be typed on a single line            esc  t library  out MyServices dll MyServiceImpl cs MyService cs   v  lt OGSIContainer gt  bin Ogsi Container dll        lt OGSIContainer gt  is the path to the OGSI container installation     If you are using the Microsoft Visual Studio development environment configure your project  to output an assembly called MyServices d11  You will have to add the following  references to the project before building     o  lt OGSIContainer gt  bin Ogsi Container dll       o System Web Services dll          MS NETGrid OGSIUserManual v1 0 10       Regardless of whether you have used Visual Studio or the command line you should now  have created an assembly called MyServices d11  located in the current directory  You  need to copy this dll to  lt OGSIContainer gt  bin     5 4 Write a  asmx file for the service    To utilise ASP NET to deploy our Grid service we must create a  asmx file for the service   This simply maps the service name to the proxy class     The  asmx file is  save this in a file called MyService asmx             lt S  WebService Class  MyGridServices MyService  S gt        The name of the   asmx file determines the Grid Service Handle  GSH  
30. sServices   persistence  persistent    gt    lt     The type of the service object to create    gt    lt serviceParameter  name  creationProvider   value  MyGridServices MyTransServiceFactoryCreator   MyTransServices   gt    lt  gridServiceDeploymentDescriptor gt                 The majority of this element is very similar to that for the transient service  The   lt serviceParameter gt  element is new  This element specifies a parameter that is passed to  the service  In this case the parameter name is    creationProvider     The parameter value  is the name of the factory creator class that this factory service must use to create service  instances  followed by a comma  followed by the name of the assembly containing the class   This  lt serviceParameter gt  element therefore associates the creator class with the service  factory that uses it           The final piece of configuration that must be carried out is to set the domain name that is used  when creating transient services  This is simply the domain name of the machine running IIS   Edit the following line in the Web config file  found in the  configuration gridContainer config containerProperties section  and set the  value field to the appropriate domain name  e g     www epcc ed ac uk                      lt add key  domain  value  localhost   gt        7 8 Install the services    To install the service   o Copy the MyTransServices dl1 assembly to  lt OGSIContainer gt  bin     o Copy the MyTransService asmx file t
31. ss into an assembly    4  Writea  asmx file for the service    5  Configure the OGSI container    6  Install the service   The Grid service we write here will be a persistent Grid service  We will implement a single  method called hello    This method takes one argument called name and will return the    string  hello name n  where name is the value of the name argument and n is an integer  that starts at 1 and increments every time the method is called     The Grid service will inherit additional methods  e g  findServiceData   and  destroy      that correspond to the GridService portType operations that all Grid services  must provide     5 1 Write the service class    The service class is the class that implements the specific functionality of the Grid service   The code for this class is as follows and should be saved in a file called  MyServiceImpl cs           using Ogsi Core   namespace MyGridServices     public class MyServicelmpl   PersistentGridServiceSkeleton               private int count_   1   public string hello  string name           return  hello     name          count _    ToString               This class inherits from the Ogsi Core PersistentGridServiceSkeleton class  All  persistent Grid services must inherit from this class  In contrast  transient Grid services must  inherit from the Ogsi Core GridServiceSkeleton class           As can be seen from the code  implementing the service class for a Grid service is very  similar to writing any other class  
32. sssccssscssscssscsssensssssssssssssesssscssscsssssssses 24   10 POPt Ty PeSiccinncscsescscessstevecessecvosussGeonseseccseeussdeduossdeonseduadesnsaSosstesssededcensesusessebdeccdasecexasesess 25  10 1 OgsiPortTypeAttribute             ccccscscsscssccccccscccssesccessscersssseesscscescesssscersssssesceseese 25   11 Example services  lt  scssssescecsaceseesdscoassssccesennssoossessocesecnicesasasssnsoenscesedaddersseoveceseunsdccaseoses 27   12 GIOSSATY wessscses ckscisecvscsuscseadaseesnovestescdsadsetnnesuosssosessednndcecasebssssoenasdecessedesbeswubossecseecdveseness 28    A O 30    MS NETGrid OGSIUserManual v1 0 4       1 Introduction    MS NET Grid is an ASP NET based implementation of the Open Grid Services Infrastructure   This user manual is aimed at the Grid service developers and describes how to use the  MS NET Grid implementation to create Grid services  Details of how to write clients that use  these services     in the form of running examples     are also included  This document  complements  MS  NETGridOgsiDesignOverview  that is included with this distribution    1 1 Product Licence   The MS NETGrid software is released under the licence described in LICENSE TXT under  the root directory of the distribution    1 2 Project WWW Site    The MS NET Grid Project WWW site is at     http   www epcc ed ac uk  ogsanet       1 3 Support and Queries    Please note that our software is intended as a proof of concept to demonstrate the  applicability of Microsoft  NET in 
33. t then  be added to the query engine  The GridServiceSkeleton base class has a protected  member variable queryEngine_ of type Ogsi ServiceData Query QueryEngine   This class has a method RegisterEvaluator    that can be used to add a query evaluator to  the query engine  For examples of query evaluators see the implementations of  QueryByServiceDataNamesEvaluator and SetByServiceDataNamesEvaluator  both in the Ogsi ServiceData Query namespace                                MS NETGrid OGSIUserManual v1 0 25       10 PortTypes    A large portion of  OGSI Spec  addresses the issue of services providing multiple portTypes   and allowing services to inherit from multiple portTypes  In our approach  the  WebMethodAttribiute marked methods in the proxy classes essentially represent the  most derived portType for a service  and it is with this that the clients communicate  At  present  1t is only possible to present this most derived portType to the client  It is possible to  alter the properties and namespaces of the exposed operations by using the  WebServiceAttribute  SoapDocumentMethodAttribute and  SoapRpcMethodAttribute classes  and others  provided by the  NET framework  See the   NET user documentation for details     We address the issue of portType re use in the following manner  When developing a service  implementation  service methods may be placed on the class you derive from  GridServiceSkeleton  like so              public class MyService   PersistentGridServiceSkele
34. the proxy class     The  asmx file for the transient service is  save in file MyTransService asmx          lt S   WebService Class  MyGridServices MyTransService   gt        The  asmx file for the factory service is  save in file MyTransServiceFactory asmx             lt S   WebService Class  MyGridServices MyTransServiceFactory   gt        7 7 Configure the OGSI container    For each Grid service hosted by the OGSI container an entry must be added to the container s  Web config file  this file is located at  lt oGSTContainer gt  Web config      For the transient service the following entry must be added to the   lt gridServiceDeployment gt  element of the Web  config file                  lt gridServiceDeploymentDescriptor  asmxProxyFileName  MyTransService asmx   serviceClass  MyGridServices MyTransServicelmpl   assembly  MyTransServices   persistence  transient    gt    lt  gridServiceDeploymentDescriptor gt                 This contents of this element are similar to that shown in section 5 5 for the simple persistent  service  Notice the value of the    persistence    attribute is now    transient        For the factory service the following element must be added to the   lt gridServiceDeployment gt  element of the Web  config file                  lt gridServiceDeploymentDescriptor  asmxProxyFileName  MyTransServiceFactory asmx                       MS NETGrid OGSIUserManual v1 0 18                serviceClass  MyGridServices MyTransServiceFactorylmpl   assembly  MyTran
35. ton       public string myMethod              this InstanceServiceDataSet  someQName    10   return  hello              With this method  access to the service s ServiceDataSet is via the  InstanceServiceData property inherited from GridServiceSkeleton  Adding  methods in this manner essentially means adding methods to a base service portType        In other circumstances  it may be desirable to use functionality developed elsewhere to  provide operations  or to logically group related functionality into single portTypes  which  you then wish to aggregate on your service  We provide means of doing this using the  Ogsi Core OgsiPortTypeAttribute and Ogsi Core OperationProviderBase  classes and the Ogsi Core IOperationProvider interface     10 1 OgsiPortTypeAttribute    We use as an example a class SomeUsefulClass  with a method SomeUsefulMethod  It is  desired to expose this method as an operation on your service  The simplest way to do this is  as follows            OgsiPortType  typeof  MyAssembly SomeUsefulClass      http    mydomain com myNameSpace     UsefulPortType       public class MyService   PersistentGridServiceSkeleton               The first parameter in the attribute is the type of your provider class  The second parameter is  the URI of the namespace for this new portType  The third parameter is the name of the  portType  The latter two parameters do not have an effect at the moment but are included for  possible future work     When the MyService class is insta
36. tp   www gridforum org ogsi wg      Virginia Impl      OGSILNET  An OGSI compliant Hosting Container for the  NET  Framework  Grid Computing Group  University of Virginia  WWW site   http   www cs virginia edu  humphrey GCG ogsi net html         GTk3      Globus Toolkit version 3 and OGSI  Available at http   www globus org ogsa        Physiology      The Physiology of the Grid  Draft 2 9   I  Foster  C  Kesselman  J Nick  S   Tuecke  Available at http   www gridforum org org ogsa wg     Anatomy      The Anatomy of the Grid     Foster  C  Kesselman  S  Tuecke  Available at  http   www  gridforum org ogsa wg        OGSA DAI      Open Grid Service Architecture  Database Access and Integration  http   www ogsadal org uk     WSDL Spec  Web Services Description Language 1 1  http   www w3 org TR 2001 NOTE   wsdl 20010315        AXIS      The Apache Axis SOAP Engine  http   ws apache org axis     
    
Download Pdf Manuals
 
 
    
Related Search
    
Related Contents
Guia de Instalação  Samsung GT-C3310 Manual de utilizare  User`s Manual  合水給湯管 (日本水道協会型式登録品) 取扱説明書  SPY-DVR4960 / SPY-DVR8960 / SPY-DVR16960  KD-X400ProK KD-X400POHK  Mod. 1092 Sch./ Ref./ Typ/ Ref. 1092/205A  Miele CS 1011 G  PENDULE AVEC PHASES LUNAIRES  Digitus DK-1522-070/G networking cable    Copyright © All rights reserved. 
   Failed to retrieve file