{"id":409,"date":"2010-11-30T15:53:15","date_gmt":"2010-11-30T23:53:15","guid":{"rendered":"http:\/\/www.andreanolanusse.com\/en\/?p=409"},"modified":"2011-10-22T02:40:03","modified_gmt":"2011-10-22T10:40:03","slug":"registering-datasnap-server-class-in-runtime-with-delphi","status":"publish","type":"post","link":"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/","title":{"rendered":"Registering DataSnap Server Class in runtime with Delphi"},"content":{"rendered":"<p>When we are working to create a DataSnap application we need to register the Server classes in order to provide access to the client application to the server methods. The natural way is to use the DSServerClass component, but some time we want do it in run time. The following code shows how to do that, the TSimpleServerClass inherit from TDSServerClass and overload\/reintroduce the Create method, adding the parameters ServerClass, DataSnap Server and LifeCycle.<\/p>\n<pre class=\"brush: delphi\">type\r\n\r\n  TSimpleServerClass = class(TDSServerClass)\r\n  private\r\n    FPersistentClass: TPersistentClass;\r\n  protected\r\n    function GetDSClass: TDSClass; override;\r\n  public\r\n    constructor Create(AOwner: TComponent; AServer: TDSCustomServer; AClass: TPersistentClass; ALifeCycle: String); reintroduce; overload;\r\n  end;\r\n\r\nprocedure RegisterServerClasses(AOwner: TComponent; AServer: TDSServer);\r\n\r\nimplementation\r\n\r\nconstructor TSimpleServerClass.Create(AOwner: TComponent; AServer: TDSCustomServer; AClass: TPersistentClass; ALifeCycle: String);\r\nbegin\r\n  inherited Create(AOwner);\r\n  FPersistentClass := AClass;\r\n  Self.Server := AServer;\r\n  Self.LifeCycle := ALifeCycle;\r\nend;\r\n\r\nfunction TSimpleServerClass.GetDSClass: TDSClass;\r\nbegin\r\n  Result := TDSClass.Create(FPersistentClass, False);\r\nend;<\/pre>\n<p>Now we just need to instantiate the TSimpleServerClass for each server class.<\/p>\n<p>The following code register 3 classes on the same server using different LifeCycles.<\/p>\n<pre class=\"brush: delphi\">procedure RegisterServerClasses(AOwner: TComponent; AServer: TDSServer);\r\nbegin\r\n  Assert(AServer.Started = false, 'Can''t add class to non active Server');\r\n\r\n  TSimpleServerClass.Create(AOwner, AServer, TGlobal, TDSLifeCycle.Server);\r\n  TSimpleServerClass.Create(AOwner, AServer, TCustomer, TDSLifeCycle.Session);\r\n  TSimpleServerClass.Create(AOwner, AServer, TObjectPool, TDSLifeCycle.Invocation);\r\nend;<\/pre>\n<p>Simple and useful.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When we are working to create a DataSnap application we need to register the Server classes in order to provide access to the client application to the server methods. The natural way is to use the DSServerClass component, but some time we want do it in run time. The following code shows how to do [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_s2mail":"","footnotes":""},"categories":[10],"tags":[93,21,90],"class_list":["post-409","post","type-post","status-publish","format-standard","hentry","category-delphi","tag-cbuilder","tag-datasnap","tag-delphi"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Registering DataSnap Server Class in runtime with Delphi | Andreano Lanusse | Technology and Software Development<\/title>\n<meta name=\"description\" content=\"When we are working to create a DataSnap application we need to register the Server classes in order to provide access to the client application to the\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Registering DataSnap Server Class in runtime with Delphi | Andreano Lanusse | Technology and Software Development\" \/>\n<meta property=\"og:description\" content=\"When we are working to create a DataSnap application we need to register the Server classes in order to provide access to the client application to the\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/\" \/>\n<meta property=\"og:site_name\" content=\"Andreano Lanusse | Technology and Software Development\" \/>\n<meta property=\"article:published_time\" content=\"2010-11-30T23:53:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2011-10-22T10:40:03+00:00\" \/>\n<meta name=\"author\" content=\"Andreano Lanusse\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andreano Lanusse\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/\"},\"author\":{\"name\":\"Andreano Lanusse\",\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b\"},\"headline\":\"Registering DataSnap Server Class in runtime with Delphi\",\"datePublished\":\"2010-11-30T23:53:15+00:00\",\"dateModified\":\"2011-10-22T10:40:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/\"},\"wordCount\":110,\"commentCount\":6,\"publisher\":{\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b\"},\"keywords\":[\"C++Builder\",\"DataSnap\",\"Delphi\"],\"articleSection\":[\"Delphi\"],\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/\",\"url\":\"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/\",\"name\":\"Registering DataSnap Server Class in runtime with Delphi | Andreano Lanusse | Technology and Software Development\",\"isPartOf\":{\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#website\"},\"datePublished\":\"2010-11-30T23:53:15+00:00\",\"dateModified\":\"2011-10-22T10:40:03+00:00\",\"description\":\"When we are working to create a DataSnap application we need to register the Server classes in order to provide access to the client application to the\",\"breadcrumb\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/#breadcrumb\"},\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.andreanolanusse.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Registering DataSnap Server Class in runtime with Delphi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#website\",\"url\":\"https:\/\/www.andreanolanusse.com\/en\/\",\"name\":\"Andreano Lanusse | Technology and Software Development\",\"description\":\"Where Andreano Lanusse talk about technology, software development, programming techniques, databases, games and more through articles, tutorials and videos\",\"publisher\":{\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.andreanolanusse.com\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b\",\"name\":\"Andreano Lanusse\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/49ab23ef70c249c0cb3469f14ef07edc?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/49ab23ef70c249c0cb3469f14ef07edc?s=96&d=mm&r=g\",\"caption\":\"Andreano Lanusse\"},\"logo\":{\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/image\/\"},\"description\":\"Andreano Lanusse is an expert and enthusiastic on software development industry, at Embarcadero he is focused on helping to make sure the products being developed meet the expectations of Embarcadero's customers, as well as defining market strategies for Latin America. Today as Latin Lead Evangelist he spends great deal of time in developer conferences, tradeshows, user group, and visiting customers throughout Latin America. Before Embarcadero, he worked 13 years for Borland, Andreano has worked as Support Coordinator, Engineer, Product Manager, including Product Line Sales Manager, where was responsible to manage the relationship with Brazil developer community, also has worked as Principal Consultant for Borland Consulting Services on the development and management of critical applications. He previously served as Chief Architect for USS Solu\u00e7\u00f5es Gerenciadas (now USS Tempo). Andreano holds a bachelor's degree in Business Administration Marketing Emphasis from Sumare Institute, MBA in Project Management from FGV, certification in Microsoft products, all Borland ALM products, and all CodeGear product line.\",\"sameAs\":[\"http:\/\/www.andreanolanusse.com\",\"https:\/\/x.com\/andreanolanusse\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Registering DataSnap Server Class in runtime with Delphi | Andreano Lanusse | Technology and Software Development","description":"When we are working to create a DataSnap application we need to register the Server classes in order to provide access to the client application to the","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/","og_locale":"en_US","og_type":"article","og_title":"Registering DataSnap Server Class in runtime with Delphi | Andreano Lanusse | Technology and Software Development","og_description":"When we are working to create a DataSnap application we need to register the Server classes in order to provide access to the client application to the","og_url":"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/","og_site_name":"Andreano Lanusse | Technology and Software Development","article_published_time":"2010-11-30T23:53:15+00:00","article_modified_time":"2011-10-22T10:40:03+00:00","author":"Andreano Lanusse","twitter_misc":{"Written by":"Andreano Lanusse","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/#article","isPartOf":{"@id":"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/"},"author":{"name":"Andreano Lanusse","@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b"},"headline":"Registering DataSnap Server Class in runtime with Delphi","datePublished":"2010-11-30T23:53:15+00:00","dateModified":"2011-10-22T10:40:03+00:00","mainEntityOfPage":{"@id":"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/"},"wordCount":110,"commentCount":6,"publisher":{"@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b"},"keywords":["C++Builder","DataSnap","Delphi"],"articleSection":["Delphi"],"inLanguage":"en","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/","url":"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/","name":"Registering DataSnap Server Class in runtime with Delphi | Andreano Lanusse | Technology and Software Development","isPartOf":{"@id":"https:\/\/www.andreanolanusse.com\/en\/#website"},"datePublished":"2010-11-30T23:53:15+00:00","dateModified":"2011-10-22T10:40:03+00:00","description":"When we are working to create a DataSnap application we need to register the Server classes in order to provide access to the client application to the","breadcrumb":{"@id":"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/#breadcrumb"},"inLanguage":"en","potentialAction":[{"@type":"ReadAction","target":["http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/www.andreanolanusse.com\/en\/registering-datasnap-server-class-in-runtime-with-delphi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.andreanolanusse.com\/en\/"},{"@type":"ListItem","position":2,"name":"Registering DataSnap Server Class in runtime with Delphi"}]},{"@type":"WebSite","@id":"https:\/\/www.andreanolanusse.com\/en\/#website","url":"https:\/\/www.andreanolanusse.com\/en\/","name":"Andreano Lanusse | Technology and Software Development","description":"Where Andreano Lanusse talk about technology, software development, programming techniques, databases, games and more through articles, tutorials and videos","publisher":{"@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.andreanolanusse.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en"},{"@type":["Person","Organization"],"@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b","name":"Andreano Lanusse","image":{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/49ab23ef70c249c0cb3469f14ef07edc?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/49ab23ef70c249c0cb3469f14ef07edc?s=96&d=mm&r=g","caption":"Andreano Lanusse"},"logo":{"@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/image\/"},"description":"Andreano Lanusse is an expert and enthusiastic on software development industry, at Embarcadero he is focused on helping to make sure the products being developed meet the expectations of Embarcadero's customers, as well as defining market strategies for Latin America. Today as Latin Lead Evangelist he spends great deal of time in developer conferences, tradeshows, user group, and visiting customers throughout Latin America. Before Embarcadero, he worked 13 years for Borland, Andreano has worked as Support Coordinator, Engineer, Product Manager, including Product Line Sales Manager, where was responsible to manage the relationship with Brazil developer community, also has worked as Principal Consultant for Borland Consulting Services on the development and management of critical applications. He previously served as Chief Architect for USS Solu\u00e7\u00f5es Gerenciadas (now USS Tempo). Andreano holds a bachelor's degree in Business Administration Marketing Emphasis from Sumare Institute, MBA in Project Management from FGV, certification in Microsoft products, all Borland ALM products, and all CodeGear product line.","sameAs":["http:\/\/www.andreanolanusse.com","https:\/\/x.com\/andreanolanusse"]}]}},"_links":{"self":[{"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/posts\/409","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/comments?post=409"}],"version-history":[{"count":0,"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/posts\/409\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/media?parent=409"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/categories?post=409"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/tags?post=409"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}