SlideShare a Scribd company logo
1 of 8
3/11/2010




  Advanced Programming
  With Notes/Domino
  COM Classes

 EntwicklerCamp, March, 2010




Bob Balaban
Looseleaf Software LLC
bbalaban@gmail.com
                                           Copyright 2010 Looseleaf Software




    Agenda
    • Speaker intro
    • COM and OLE
    • Notes “front-end” and “back-end” objects
    • Where can you use Notes COM/OLE classes?
       • Vb.net
       • C#
       • C++
    • Why?
    • Demos and samples
    • Q &A


       Copyright 2010 Looseleaf Software




                                                                                      1
3/11/2010




Speaker Introduction
• 15+ years as a Lotus/Iris/IBM developer (1-2-3,
  Notes/Domino)
  • Wrote the original LotusScript/Java back-end classes (Notes
    v4.0)
  • Notes/SAP integration (v7.x, 2006)
• 9+ years as an independent consultant/developer/author
  • Frequent speaker at LUGs and Lotusphere
  • Many trade journal articles
  • Expertise in N/D programmability, plugins, J2ee, system
     integration, messaging, appdev in general


   Copyright 2010 Looseleaf Software




COM – Component Object Model
• A way to provide “interfaces” for other code to use
  • Kind of like Web Services, for Windows programs
• “Provider” (“server”):
  • Create a component in c++ or a .NET language,
  • Describe the interface in IDL (interface definition language),
  • Compile IDL to a “type library”, register it under some ID and/or
     name
  • COM objects can be DLL or EXE (“in-proc”, “out-of-proc”)
• “Consumer” (“client”):
  • Use Visual Studio (it generates a lot of code for you)
  • Get an instance of the root object (by ID or name, or…)
  • Use it to get other objects


   Copyright 2010 Looseleaf Software




                                                                               2
3/11/2010




 COM, the Big Picture
                                 My Program
                                    (.exe)
IPC Broker
                                                IF 1          In-Process
Out-of-Process
                          IF 2



 Other                                                     Some
Program
                            Typelib
                                           Typelib
                                                            DLL
                                             1
 (.exe)                       2




                      Windows Registry
      Copyright 2010 Looseleaf Software




  COM and OLE
  • Object Linking and Embedding
     • Very UI-oriented
     • Standards and practices for putting “live” objects into composite
       “documents”
  • ALL based on COM objects
     • Container (e.g., Word or Notes) supplies embedding interfaces (pre-
       defined) to the contained object (picture, Visio, something)
     • Persistent storage, access to menu, location, etc. etc.
     • Embedded object provides pre-defined interfaces to the container
       (launch, quiesce, open, save…)
  • We’re not going to do much with OLE in this session
     • (too much typing…)


      Copyright 2010 Looseleaf Software




                                                                                    3
3/11/2010




Notes “Front-end” and “Back-end”
• Front-end is UI
  • NotesUIWorkspace, NotesUIDatabase, etc.
  • Can only operate in the context of a running Notes Client
  • (otherwise there’s no UI!)
  • No equivalent in Java, LotusScript and COM only
• Back-end classes have no UI
  • NotesSession, NotesDatabase, etc.
  • Can run either in Client or in Server
  • Java, LotusScript, COM, CORBA



   Copyright 2010 Looseleaf Software




Front-end and Back-end COM
• BOTH sets of classes are available to COM-consuming
  programs
• Each one has it’s own “typelib”
  • Front-end classes launch the Notes Client, “out-of-proc”
    • “Lotus Notes Automation Classes” library
  • Back-end classes load the LSXBE DLL “in-proc”
    • “Lotus Domino Objects” library




   Copyright 2010 Looseleaf Software




                                                                       4
3/11/2010




  Front-end / Back-end COM libs
    My COM program

                                               NLNOTES.exe
                             IPC Broker
                        Front-end
                    (UIWorkspace, etc.)

                                               LSXBE
                                                 dll
                        Back-end
                      (Session, etc.)


      Copyright 2010 Looseleaf Software




   COM Consumers
• Use Visual Studio.net!
  • 2005, 2008 (2003 works, but not as well)
• CLR languages (VB.net, C#)
  • Easy!
• C++ - some tricks required


              Demo 1: Front-end with CLR

              Demo 2: Back-end with CLR


      Copyright 2010 Looseleaf Software




                                                                    5
3/11/2010




Why Do This: Use Cases
• You want to write a standalone program (.exe) that uses
  Notes objects, and you don’t want to write Java
• You want to write a standalone program (.exe) that uses
  front-end objects (not an option with Java)
• You’re writing an Extension Manager plugin or Server Addin
  (or anything that requires C/C++) and want to use higher-
  level objects than you get in Notes CAPI
• You are writing something that requires .NET (ASPX, Web
  part, whatever)


   Copyright 2010 Looseleaf Software




More Demo
          Demo 3: Front-end COM in C++
          (launch new Memo form in mail db)


          Demo 4: Back-end COM in C++
          (export dxl from a data document)




   Copyright 2010 Looseleaf Software




                                                                      6
3/11/2010




Summary
• COM is difficult to explain thoroughly
  • But pretty easy to use
  • If you get the right tools (Visual Studio!)
• COM gives you access to both Front- and Back-end objects
  from “outside” the product
• CLR languages (C#, VB.net) are the easiest to use
• C++ also possible, requires a bit of extra work




   Copyright 2010 Looseleaf Software




References
• “Essential COM” by Don Box (1988)
  • The best and most thorough reference on all things COM
• “COM Together” – Lotus Redbook, 2000
  • http://www.redbooks.ibm.com/abstracts/sg245670.html?Op
    en
• “In Theory” blog – couple of articles on using COM and C#
  with Notes CAPI
  • http://www.bobzblog.com




   Copyright 2010 Looseleaf Software




                                                                     7
3/11/2010




Questions




       How to contact me:
       Bob Balaban (not the actor)
       bbalaban@gmail.com
       Blog – http://www.bobzblog.com
     Copyright 2010 Looseleaf Software




                                                8

More Related Content

What's hot

PHP Frameworks Review - Mar 19 2015
PHP Frameworks Review - Mar 19 2015PHP Frameworks Review - Mar 19 2015
PHP Frameworks Review - Mar 19 2015kyphpug
 
Electronic Publishing 2.0: Reimagining the Publication and Preservation of E ...
Electronic Publishing 2.0: Reimagining the Publication and Preservation of E ...Electronic Publishing 2.0: Reimagining the Publication and Preservation of E ...
Electronic Publishing 2.0: Reimagining the Publication and Preservation of E ...Leonardo Flores
 
Java byte code & virtual machine
Java byte code & virtual machineJava byte code & virtual machine
Java byte code & virtual machineLaxman Puri
 
The seven pillars of aspnet
The seven pillars of aspnetThe seven pillars of aspnet
The seven pillars of aspnetNethaji Naidu
 
Architecture diagram of jvm
Architecture diagram of jvmArchitecture diagram of jvm
Architecture diagram of jvmhome
 
Introduction to .NET Framework
Introduction to .NET FrameworkIntroduction to .NET Framework
Introduction to .NET FrameworkKamlesh Makvana
 
.Net framework
.Net framework.Net framework
.Net frameworkArun Pal
 
Java byte code presentation
Java byte code presentationJava byte code presentation
Java byte code presentationMahnoor Hashmi
 
Java introduction with JVM architecture
Java introduction with JVM architectureJava introduction with JVM architecture
Java introduction with JVM architectureatozknowledge .com
 
Java Virtual Machine - Internal Architecture
Java Virtual Machine - Internal ArchitectureJava Virtual Machine - Internal Architecture
Java Virtual Machine - Internal Architecturesubnesh
 
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0Antonio Chagoury
 

What's hot (18)

PHP Frameworks Review - Mar 19 2015
PHP Frameworks Review - Mar 19 2015PHP Frameworks Review - Mar 19 2015
PHP Frameworks Review - Mar 19 2015
 
Electronic Publishing 2.0: Reimagining the Publication and Preservation of E ...
Electronic Publishing 2.0: Reimagining the Publication and Preservation of E ...Electronic Publishing 2.0: Reimagining the Publication and Preservation of E ...
Electronic Publishing 2.0: Reimagining the Publication and Preservation of E ...
 
Java byte code & virtual machine
Java byte code & virtual machineJava byte code & virtual machine
Java byte code & virtual machine
 
The seven pillars of aspnet
The seven pillars of aspnetThe seven pillars of aspnet
The seven pillars of aspnet
 
.Net framework
.Net framework.Net framework
.Net framework
 
Architecture diagram of jvm
Architecture diagram of jvmArchitecture diagram of jvm
Architecture diagram of jvm
 
Introduction to .NET Framework
Introduction to .NET FrameworkIntroduction to .NET Framework
Introduction to .NET Framework
 
.Net framework
.Net framework.Net framework
.Net framework
 
Electron
ElectronElectron
Electron
 
Java byte code presentation
Java byte code presentationJava byte code presentation
Java byte code presentation
 
Java introduction with JVM architecture
Java introduction with JVM architectureJava introduction with JVM architecture
Java introduction with JVM architecture
 
JAVA BYTE CODE
JAVA BYTE CODEJAVA BYTE CODE
JAVA BYTE CODE
 
CPAN Curation
CPAN CurationCPAN Curation
CPAN Curation
 
Java-java virtual machine
Java-java virtual machineJava-java virtual machine
Java-java virtual machine
 
Java architecture
Java architectureJava architecture
Java architecture
 
Threads presentation
Threads presentationThreads presentation
Threads presentation
 
Java Virtual Machine - Internal Architecture
Java Virtual Machine - Internal ArchitectureJava Virtual Machine - Internal Architecture
Java Virtual Machine - Internal Architecture
 
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0
 

Viewers also liked

Lotusphere 2007 AD505 DevBlast –30 LotusScript Tips
Lotusphere 2007 AD505 DevBlast –30 LotusScript TipsLotusphere 2007 AD505 DevBlast –30 LotusScript Tips
Lotusphere 2007 AD505 DevBlast –30 LotusScript Tipsdominion
 
T4 S1 Lotus Notes On Citrix
T4 S1 Lotus Notes On CitrixT4 S1 Lotus Notes On Citrix
T4 S1 Lotus Notes On Citrixguestd15a58
 
THE COST OF MOVING TO ADVANCED COLLABORATION
THE COST OF MOVING TO ADVANCED COLLABORATIONTHE COST OF MOVING TO ADVANCED COLLABORATION
THE COST OF MOVING TO ADVANCED COLLABORATIONdominion
 
Presenting Data Effectively in XPages - ATLUG May 2013
Presenting Data Effectively in XPages - ATLUG May 2013Presenting Data Effectively in XPages - ATLUG May 2013
Presenting Data Effectively in XPages - ATLUG May 2013balassaitis
 
Binding to multiple datasources on a single xPage
Binding to multiple datasources on a single xPageBinding to multiple datasources on a single xPage
Binding to multiple datasources on a single xPagedominion
 
Only an IBM Domino Server can take this much beating and still run
Only an IBM Domino Server can take this much beating and still runOnly an IBM Domino Server can take this much beating and still run
Only an IBM Domino Server can take this much beating and still runAndreas Ponte
 
computerarchiv-muenchen.de - Jahrekalender 2017 | C.Habermueller
computerarchiv-muenchen.de - Jahrekalender 2017  | C.Habermuellercomputerarchiv-muenchen.de - Jahrekalender 2017  | C.Habermueller
computerarchiv-muenchen.de - Jahrekalender 2017 | C.HabermuellerChristian Habermueller
 
Fine tuning Lotus Script (german)
Fine tuning Lotus Script (german)Fine tuning Lotus Script (german)
Fine tuning Lotus Script (german)dominion
 
Mehr Performance für WordPress - WordCamp Köln
Mehr Performance für WordPress - WordCamp KölnMehr Performance für WordPress - WordCamp Köln
Mehr Performance für WordPress - WordCamp KölnWalter Ebert
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code CookbookUlrich Krause
 
Ein Entwickler ist mehr als nur ein Applications-Coder | C.Habermueller
Ein Entwickler ist mehr als nur ein Applications-Coder | C.HabermuellerEin Entwickler ist mehr als nur ein Applications-Coder | C.Habermueller
Ein Entwickler ist mehr als nur ein Applications-Coder | C.HabermuellerChristian Habermueller
 
Java & Notes - Mit Eclipse neue Features für Notes entwickeln | C.Habermueller
Java & Notes - Mit Eclipse neue Features für Notes entwickeln | C.HabermuellerJava & Notes - Mit Eclipse neue Features für Notes entwickeln | C.Habermueller
Java & Notes - Mit Eclipse neue Features für Notes entwickeln | C.HabermuellerChristian Habermueller
 
Rapid Application Development | C.Habermueller
Rapid Application Development | C.HabermuellerRapid Application Development | C.Habermueller
Rapid Application Development | C.HabermuellerChristian Habermueller
 
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick Risch
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick RischFMK2015: Von Skriptparametern Variablen und Globalen by Patrick Risch
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick RischVerein FM Konferenz
 

Viewers also liked (14)

Lotusphere 2007 AD505 DevBlast –30 LotusScript Tips
Lotusphere 2007 AD505 DevBlast –30 LotusScript TipsLotusphere 2007 AD505 DevBlast –30 LotusScript Tips
Lotusphere 2007 AD505 DevBlast –30 LotusScript Tips
 
T4 S1 Lotus Notes On Citrix
T4 S1 Lotus Notes On CitrixT4 S1 Lotus Notes On Citrix
T4 S1 Lotus Notes On Citrix
 
THE COST OF MOVING TO ADVANCED COLLABORATION
THE COST OF MOVING TO ADVANCED COLLABORATIONTHE COST OF MOVING TO ADVANCED COLLABORATION
THE COST OF MOVING TO ADVANCED COLLABORATION
 
Presenting Data Effectively in XPages - ATLUG May 2013
Presenting Data Effectively in XPages - ATLUG May 2013Presenting Data Effectively in XPages - ATLUG May 2013
Presenting Data Effectively in XPages - ATLUG May 2013
 
Binding to multiple datasources on a single xPage
Binding to multiple datasources on a single xPageBinding to multiple datasources on a single xPage
Binding to multiple datasources on a single xPage
 
Only an IBM Domino Server can take this much beating and still run
Only an IBM Domino Server can take this much beating and still runOnly an IBM Domino Server can take this much beating and still run
Only an IBM Domino Server can take this much beating and still run
 
computerarchiv-muenchen.de - Jahrekalender 2017 | C.Habermueller
computerarchiv-muenchen.de - Jahrekalender 2017  | C.Habermuellercomputerarchiv-muenchen.de - Jahrekalender 2017  | C.Habermueller
computerarchiv-muenchen.de - Jahrekalender 2017 | C.Habermueller
 
Fine tuning Lotus Script (german)
Fine tuning Lotus Script (german)Fine tuning Lotus Script (german)
Fine tuning Lotus Script (german)
 
Mehr Performance für WordPress - WordCamp Köln
Mehr Performance für WordPress - WordCamp KölnMehr Performance für WordPress - WordCamp Köln
Mehr Performance für WordPress - WordCamp Köln
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code Cookbook
 
Ein Entwickler ist mehr als nur ein Applications-Coder | C.Habermueller
Ein Entwickler ist mehr als nur ein Applications-Coder | C.HabermuellerEin Entwickler ist mehr als nur ein Applications-Coder | C.Habermueller
Ein Entwickler ist mehr als nur ein Applications-Coder | C.Habermueller
 
Java & Notes - Mit Eclipse neue Features für Notes entwickeln | C.Habermueller
Java & Notes - Mit Eclipse neue Features für Notes entwickeln | C.HabermuellerJava & Notes - Mit Eclipse neue Features für Notes entwickeln | C.Habermueller
Java & Notes - Mit Eclipse neue Features für Notes entwickeln | C.Habermueller
 
Rapid Application Development | C.Habermueller
Rapid Application Development | C.HabermuellerRapid Application Development | C.Habermueller
Rapid Application Development | C.Habermueller
 
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick Risch
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick RischFMK2015: Von Skriptparametern Variablen und Globalen by Patrick Risch
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick Risch
 

Similar to Advanced Programming With Notes/DominoCOM Classes

MWLUG 2011: The Never Ending Integration Story
MWLUG 2011: The Never Ending Integration StoryMWLUG 2011: The Never Ending Integration Story
MWLUG 2011: The Never Ending Integration StoryJohn Head
 
“Kum Bah Yah” meets “Lets Kick Butt” : The Integration of IBM Lotus Notes and...
“Kum Bah Yah” meets “Lets Kick Butt” : The Integration of IBM Lotus Notes and...“Kum Bah Yah” meets “Lets Kick Butt” : The Integration of IBM Lotus Notes and...
“Kum Bah Yah” meets “Lets Kick Butt” : The Integration of IBM Lotus Notes and...John Head
 
BP214 IBM Lotus Symphony : Finally, A Developer's Friend
BP214 IBM Lotus Symphony : Finally, A Developer's FriendBP214 IBM Lotus Symphony : Finally, A Developer's Friend
BP214 IBM Lotus Symphony : Finally, A Developer's FriendJohn Head
 
IamLUG 2011: The Never Ending Integration Story: How to Integrate Your Lotus ...
IamLUG 2011: The Never Ending Integration Story: How to Integrate Your Lotus ...IamLUG 2011: The Never Ending Integration Story: How to Integrate Your Lotus ...
IamLUG 2011: The Never Ending Integration Story: How to Integrate Your Lotus ...John Head
 
Building a Cross-Platform Mobile SDK in Rust.pdf
Building a Cross-Platform Mobile SDK in Rust.pdfBuilding a Cross-Platform Mobile SDK in Rust.pdf
Building a Cross-Platform Mobile SDK in Rust.pdfIanWagner13
 
MMLUG 2009 Integration And Coexistence Session
MMLUG 2009   Integration And Coexistence SessionMMLUG 2009   Integration And Coexistence Session
MMLUG 2009 Integration And Coexistence SessionJohn Head
 
Dotnet ch1
Dotnet ch1Dotnet ch1
Dotnet ch1007laksh
 
Iam Lug 2009 Integration And Coexistence Session
Iam Lug 2009   Integration And Coexistence SessionIam Lug 2009   Integration And Coexistence Session
Iam Lug 2009 Integration And Coexistence SessionJohn Head
 
TriState LUG 2010 integration and coexistence session
TriState LUG 2010   integration and coexistence sessionTriState LUG 2010   integration and coexistence session
TriState LUG 2010 integration and coexistence sessionJohn Head
 
JMP106 “Kum Bah Yah” Meets “Lets Kick Butt” : The Integration of IBM Lotus No...
JMP106 “Kum Bah Yah” Meets “Lets Kick Butt” : The Integration of IBM Lotus No...JMP106 “Kum Bah Yah” Meets “Lets Kick Butt” : The Integration of IBM Lotus No...
JMP106 “Kum Bah Yah” Meets “Lets Kick Butt” : The Integration of IBM Lotus No...John Head
 
FILEgrain: Transport-Agnostic, Fine-Grained Content-Addressable Container Ima...
FILEgrain: Transport-Agnostic, Fine-Grained Content-Addressable Container Ima...FILEgrain: Transport-Agnostic, Fine-Grained Content-Addressable Container Ima...
FILEgrain: Transport-Agnostic, Fine-Grained Content-Addressable Container Ima...Akihiro Suda
 
Tri State Lug 2009 - Integration And Coexistence Session
Tri State Lug 2009 - Integration And Coexistence SessionTri State Lug 2009 - Integration And Coexistence Session
Tri State Lug 2009 - Integration And Coexistence SessionJohn Head
 
VSTO + LOB Apps
VSTO + LOB AppsVSTO + LOB Apps
VSTO + LOB AppsJoao Livio
 
Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Mikkel Flindt Heisterberg
 
Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Mikkel Flindt Heisterberg
 
Italian Alt.Net Conference MonoTouch Session
Italian Alt.Net Conference MonoTouch SessionItalian Alt.Net Conference MonoTouch Session
Italian Alt.Net Conference MonoTouch SessionChris Hardy
 

Similar to Advanced Programming With Notes/DominoCOM Classes (20)

MWLUG 2011: The Never Ending Integration Story
MWLUG 2011: The Never Ending Integration StoryMWLUG 2011: The Never Ending Integration Story
MWLUG 2011: The Never Ending Integration Story
 
“Kum Bah Yah” meets “Lets Kick Butt” : The Integration of IBM Lotus Notes and...
“Kum Bah Yah” meets “Lets Kick Butt” : The Integration of IBM Lotus Notes and...“Kum Bah Yah” meets “Lets Kick Butt” : The Integration of IBM Lotus Notes and...
“Kum Bah Yah” meets “Lets Kick Butt” : The Integration of IBM Lotus Notes and...
 
BP214 IBM Lotus Symphony : Finally, A Developer's Friend
BP214 IBM Lotus Symphony : Finally, A Developer's FriendBP214 IBM Lotus Symphony : Finally, A Developer's Friend
BP214 IBM Lotus Symphony : Finally, A Developer's Friend
 
IamLUG 2011: The Never Ending Integration Story: How to Integrate Your Lotus ...
IamLUG 2011: The Never Ending Integration Story: How to Integrate Your Lotus ...IamLUG 2011: The Never Ending Integration Story: How to Integrate Your Lotus ...
IamLUG 2011: The Never Ending Integration Story: How to Integrate Your Lotus ...
 
Building a Cross-Platform Mobile SDK in Rust.pdf
Building a Cross-Platform Mobile SDK in Rust.pdfBuilding a Cross-Platform Mobile SDK in Rust.pdf
Building a Cross-Platform Mobile SDK in Rust.pdf
 
MMLUG 2009 Integration And Coexistence Session
MMLUG 2009   Integration And Coexistence SessionMMLUG 2009   Integration And Coexistence Session
MMLUG 2009 Integration And Coexistence Session
 
Best DotNet Training in Delhi
Best   DotNet Training  in DelhiBest   DotNet Training  in Delhi
Best DotNet Training in Delhi
 
Dotnet ch1
Dotnet ch1Dotnet ch1
Dotnet ch1
 
Iam Lug 2009 Integration And Coexistence Session
Iam Lug 2009   Integration And Coexistence SessionIam Lug 2009   Integration And Coexistence Session
Iam Lug 2009 Integration And Coexistence Session
 
TriState LUG 2010 integration and coexistence session
TriState LUG 2010   integration and coexistence sessionTriState LUG 2010   integration and coexistence session
TriState LUG 2010 integration and coexistence session
 
JMP106 “Kum Bah Yah” Meets “Lets Kick Butt” : The Integration of IBM Lotus No...
JMP106 “Kum Bah Yah” Meets “Lets Kick Butt” : The Integration of IBM Lotus No...JMP106 “Kum Bah Yah” Meets “Lets Kick Butt” : The Integration of IBM Lotus No...
JMP106 “Kum Bah Yah” Meets “Lets Kick Butt” : The Integration of IBM Lotus No...
 
FILEgrain: Transport-Agnostic, Fine-Grained Content-Addressable Container Ima...
FILEgrain: Transport-Agnostic, Fine-Grained Content-Addressable Container Ima...FILEgrain: Transport-Agnostic, Fine-Grained Content-Addressable Container Ima...
FILEgrain: Transport-Agnostic, Fine-Grained Content-Addressable Container Ima...
 
Tri State Lug 2009 - Integration And Coexistence Session
Tri State Lug 2009 - Integration And Coexistence SessionTri State Lug 2009 - Integration And Coexistence Session
Tri State Lug 2009 - Integration And Coexistence Session
 
Introduction to .net
Introduction to .netIntroduction to .net
Introduction to .net
 
Part i
Part iPart i
Part i
 
VSTO + LOB Apps
VSTO + LOB AppsVSTO + LOB Apps
VSTO + LOB Apps
 
Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)
 
Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)
 
Session i
Session iSession i
Session i
 
Italian Alt.Net Conference MonoTouch Session
Italian Alt.Net Conference MonoTouch SessionItalian Alt.Net Conference MonoTouch Session
Italian Alt.Net Conference MonoTouch Session
 

More from dominion

What is a itil and how does it relate to your collaborative environment uklug
What is a itil and how does it relate to your collaborative environment   uklugWhat is a itil and how does it relate to your collaborative environment   uklug
What is a itil and how does it relate to your collaborative environment uklugdominion
 
iOS enterprise
iOS enterpriseiOS enterprise
iOS enterprisedominion
 
cloud session uklug
cloud session uklugcloud session uklug
cloud session uklugdominion
 
Uklug 2011 administrator development synergy
Uklug 2011 administrator development synergyUklug 2011 administrator development synergy
Uklug 2011 administrator development synergydominion
 
Uklug 2011 client management
Uklug 2011 client managementUklug 2011 client management
Uklug 2011 client managementdominion
 
JavaScript blast
JavaScript blastJavaScript blast
JavaScript blastdominion
 
Populating your domino directory or any domino database with tivoli directory...
Populating your domino directory or any domino database with tivoli directory...Populating your domino directory or any domino database with tivoli directory...
Populating your domino directory or any domino database with tivoli directory...dominion
 
Uklug2011 Know your Notes
Uklug2011 Know your NotesUklug2011 Know your Notes
Uklug2011 Know your Notesdominion
 
Taking themes to the next level
Taking themes to the next levelTaking themes to the next level
Taking themes to the next leveldominion
 
Supersize me
Supersize meSupersize me
Supersize medominion
 
Aussie outback
Aussie outbackAussie outback
Aussie outbackdominion
 
Learning to run
Learning to runLearning to run
Learning to rundominion
 
Implementing xpages extension library
Implementing xpages extension libraryImplementing xpages extension library
Implementing xpages extension librarydominion
 
Abb presentation uklug
Abb presentation uklugAbb presentation uklug
Abb presentation uklugdominion
 
Uklug2011.lotus.on.linux.report.technical.edition.v1.0
Uklug2011.lotus.on.linux.report.technical.edition.v1.0Uklug2011.lotus.on.linux.report.technical.edition.v1.0
Uklug2011.lotus.on.linux.report.technical.edition.v1.0dominion
 
Domino testing presentation
Domino testing presentationDomino testing presentation
Domino testing presentationdominion
 
Composite applications tutorial
Composite applications tutorialComposite applications tutorial
Composite applications tutorialdominion
 
Maximizing application performance
Maximizing application performanceMaximizing application performance
Maximizing application performancedominion
 
Error handling in XPages
Error handling in XPagesError handling in XPages
Error handling in XPagesdominion
 

More from dominion (20)

What is a itil and how does it relate to your collaborative environment uklug
What is a itil and how does it relate to your collaborative environment   uklugWhat is a itil and how does it relate to your collaborative environment   uklug
What is a itil and how does it relate to your collaborative environment uklug
 
iOS enterprise
iOS enterpriseiOS enterprise
iOS enterprise
 
cloud session uklug
cloud session uklugcloud session uklug
cloud session uklug
 
Uklug 2011 administrator development synergy
Uklug 2011 administrator development synergyUklug 2011 administrator development synergy
Uklug 2011 administrator development synergy
 
Uklug 2011 client management
Uklug 2011 client managementUklug 2011 client management
Uklug 2011 client management
 
JavaScript blast
JavaScript blastJavaScript blast
JavaScript blast
 
Populating your domino directory or any domino database with tivoli directory...
Populating your domino directory or any domino database with tivoli directory...Populating your domino directory or any domino database with tivoli directory...
Populating your domino directory or any domino database with tivoli directory...
 
Uklug2011 Know your Notes
Uklug2011 Know your NotesUklug2011 Know your Notes
Uklug2011 Know your Notes
 
Quickr
QuickrQuickr
Quickr
 
Taking themes to the next level
Taking themes to the next levelTaking themes to the next level
Taking themes to the next level
 
Supersize me
Supersize meSupersize me
Supersize me
 
Aussie outback
Aussie outbackAussie outback
Aussie outback
 
Learning to run
Learning to runLearning to run
Learning to run
 
Implementing xpages extension library
Implementing xpages extension libraryImplementing xpages extension library
Implementing xpages extension library
 
Abb presentation uklug
Abb presentation uklugAbb presentation uklug
Abb presentation uklug
 
Uklug2011.lotus.on.linux.report.technical.edition.v1.0
Uklug2011.lotus.on.linux.report.technical.edition.v1.0Uklug2011.lotus.on.linux.report.technical.edition.v1.0
Uklug2011.lotus.on.linux.report.technical.edition.v1.0
 
Domino testing presentation
Domino testing presentationDomino testing presentation
Domino testing presentation
 
Composite applications tutorial
Composite applications tutorialComposite applications tutorial
Composite applications tutorial
 
Maximizing application performance
Maximizing application performanceMaximizing application performance
Maximizing application performance
 
Error handling in XPages
Error handling in XPagesError handling in XPages
Error handling in XPages
 

Recently uploaded

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 

Recently uploaded (20)

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 

Advanced Programming With Notes/DominoCOM Classes

  • 1. 3/11/2010 Advanced Programming With Notes/Domino COM Classes EntwicklerCamp, March, 2010 Bob Balaban Looseleaf Software LLC bbalaban@gmail.com Copyright 2010 Looseleaf Software Agenda • Speaker intro • COM and OLE • Notes “front-end” and “back-end” objects • Where can you use Notes COM/OLE classes? • Vb.net • C# • C++ • Why? • Demos and samples • Q &A Copyright 2010 Looseleaf Software 1
  • 2. 3/11/2010 Speaker Introduction • 15+ years as a Lotus/Iris/IBM developer (1-2-3, Notes/Domino) • Wrote the original LotusScript/Java back-end classes (Notes v4.0) • Notes/SAP integration (v7.x, 2006) • 9+ years as an independent consultant/developer/author • Frequent speaker at LUGs and Lotusphere • Many trade journal articles • Expertise in N/D programmability, plugins, J2ee, system integration, messaging, appdev in general Copyright 2010 Looseleaf Software COM – Component Object Model • A way to provide “interfaces” for other code to use • Kind of like Web Services, for Windows programs • “Provider” (“server”): • Create a component in c++ or a .NET language, • Describe the interface in IDL (interface definition language), • Compile IDL to a “type library”, register it under some ID and/or name • COM objects can be DLL or EXE (“in-proc”, “out-of-proc”) • “Consumer” (“client”): • Use Visual Studio (it generates a lot of code for you) • Get an instance of the root object (by ID or name, or…) • Use it to get other objects Copyright 2010 Looseleaf Software 2
  • 3. 3/11/2010 COM, the Big Picture My Program (.exe) IPC Broker IF 1 In-Process Out-of-Process IF 2 Other Some Program Typelib Typelib DLL 1 (.exe) 2 Windows Registry Copyright 2010 Looseleaf Software COM and OLE • Object Linking and Embedding • Very UI-oriented • Standards and practices for putting “live” objects into composite “documents” • ALL based on COM objects • Container (e.g., Word or Notes) supplies embedding interfaces (pre- defined) to the contained object (picture, Visio, something) • Persistent storage, access to menu, location, etc. etc. • Embedded object provides pre-defined interfaces to the container (launch, quiesce, open, save…) • We’re not going to do much with OLE in this session • (too much typing…) Copyright 2010 Looseleaf Software 3
  • 4. 3/11/2010 Notes “Front-end” and “Back-end” • Front-end is UI • NotesUIWorkspace, NotesUIDatabase, etc. • Can only operate in the context of a running Notes Client • (otherwise there’s no UI!) • No equivalent in Java, LotusScript and COM only • Back-end classes have no UI • NotesSession, NotesDatabase, etc. • Can run either in Client or in Server • Java, LotusScript, COM, CORBA Copyright 2010 Looseleaf Software Front-end and Back-end COM • BOTH sets of classes are available to COM-consuming programs • Each one has it’s own “typelib” • Front-end classes launch the Notes Client, “out-of-proc” • “Lotus Notes Automation Classes” library • Back-end classes load the LSXBE DLL “in-proc” • “Lotus Domino Objects” library Copyright 2010 Looseleaf Software 4
  • 5. 3/11/2010 Front-end / Back-end COM libs My COM program NLNOTES.exe IPC Broker Front-end (UIWorkspace, etc.) LSXBE dll Back-end (Session, etc.) Copyright 2010 Looseleaf Software COM Consumers • Use Visual Studio.net! • 2005, 2008 (2003 works, but not as well) • CLR languages (VB.net, C#) • Easy! • C++ - some tricks required Demo 1: Front-end with CLR Demo 2: Back-end with CLR Copyright 2010 Looseleaf Software 5
  • 6. 3/11/2010 Why Do This: Use Cases • You want to write a standalone program (.exe) that uses Notes objects, and you don’t want to write Java • You want to write a standalone program (.exe) that uses front-end objects (not an option with Java) • You’re writing an Extension Manager plugin or Server Addin (or anything that requires C/C++) and want to use higher- level objects than you get in Notes CAPI • You are writing something that requires .NET (ASPX, Web part, whatever) Copyright 2010 Looseleaf Software More Demo Demo 3: Front-end COM in C++ (launch new Memo form in mail db) Demo 4: Back-end COM in C++ (export dxl from a data document) Copyright 2010 Looseleaf Software 6
  • 7. 3/11/2010 Summary • COM is difficult to explain thoroughly • But pretty easy to use • If you get the right tools (Visual Studio!) • COM gives you access to both Front- and Back-end objects from “outside” the product • CLR languages (C#, VB.net) are the easiest to use • C++ also possible, requires a bit of extra work Copyright 2010 Looseleaf Software References • “Essential COM” by Don Box (1988) • The best and most thorough reference on all things COM • “COM Together” – Lotus Redbook, 2000 • http://www.redbooks.ibm.com/abstracts/sg245670.html?Op en • “In Theory” blog – couple of articles on using COM and C# with Notes CAPI • http://www.bobzblog.com Copyright 2010 Looseleaf Software 7
  • 8. 3/11/2010 Questions How to contact me: Bob Balaban (not the actor) bbalaban@gmail.com Blog – http://www.bobzblog.com Copyright 2010 Looseleaf Software 8