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

.Net framework
.Net framework.Net framework
.Net framework
Arun Pal
 

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 Tips
dominion
 
T4 S1 Lotus Notes On Citrix
T4 S1 Lotus Notes On CitrixT4 S1 Lotus Notes On Citrix
T4 S1 Lotus Notes On Citrix
guestd15a58
 
Fine tuning Lotus Script (german)
Fine tuning Lotus Script (german)Fine tuning Lotus Script (german)
Fine tuning Lotus Script (german)
dominion
 
Rapid Application Development | C.Habermueller
Rapid Application Development | C.HabermuellerRapid Application Development | C.Habermueller
Rapid Application Development | C.Habermueller
Christian Habermueller
 

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 Story
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 Friend
John 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
 
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
John 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
 

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 uklug
dominion
 
iOS enterprise
iOS enterpriseiOS enterprise
iOS enterprise
dominion
 
cloud session uklug
cloud session uklugcloud session uklug
cloud session uklug
dominion
 
Uklug 2011 administrator development synergy
Uklug 2011 administrator development synergyUklug 2011 administrator development synergy
Uklug 2011 administrator development synergy
dominion
 
Uklug 2011 client management
Uklug 2011 client managementUklug 2011 client management
Uklug 2011 client management
dominion
 
JavaScript blast
JavaScript blastJavaScript blast
JavaScript blast
dominion
 
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 Notes
dominion
 
Taking themes to the next level
Taking themes to the next levelTaking themes to the next level
Taking themes to the next level
dominion
 
Supersize me
Supersize meSupersize me
Supersize me
dominion
 
Aussie outback
Aussie outbackAussie outback
Aussie outback
dominion
 
Implementing xpages extension library
Implementing xpages extension libraryImplementing xpages extension library
Implementing xpages extension library
dominion
 
Abb presentation uklug
Abb presentation uklugAbb presentation uklug
Abb presentation uklug
dominion
 
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
dominion
 
Domino testing presentation
Domino testing presentationDomino testing presentation
Domino testing presentation
dominion
 
Composite applications tutorial
Composite applications tutorialComposite applications tutorial
Composite applications tutorial
dominion
 
Maximizing application performance
Maximizing application performanceMaximizing application performance
Maximizing application performance
dominion
 
Error handling in XPages
Error handling in XPagesError handling in XPages
Error handling in XPages
dominion
 

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

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 

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