com and.net components by sam nasr january 25, 2005

22
COM and .Net COM and .Net Components Components By By Sam Nasr Sam Nasr January 25, 2005 January 25, 2005 www.ClevelandDotNet.inf www.ClevelandDotNet.inf o

Upload: molly-mcnamara

Post on 27-Mar-2015

229 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: COM and.Net Components By Sam Nasr January 25, 2005

COM and .Net ComponentsCOM and .Net Components

ByBy

Sam NasrSam Nasr

January 25, 2005January 25, 2005

www.ClevelandDotNet.infowww.ClevelandDotNet.info

Page 2: COM and.Net Components By Sam Nasr January 25, 2005

What is COM?What is COM?

Common Object ModelCommon Object Model

COM defines a common way to access data and COM defines a common way to access data and software services.software services.

Each COM object supports one or more Each COM object supports one or more interfaces.interfaces.

Each interface within the COM object supports a Each interface within the COM object supports a number of methods.number of methods.

Page 3: COM and.Net Components By Sam Nasr January 25, 2005

What is COM?What is COM?

COM objects are implemented inside a COM objects are implemented inside a server.server.

Each COM object is an instance of a Each COM object is an instance of a class.class.

COM objects provide polymorphism, and COM objects provide polymorphism, and data encapsulation.data encapsulation.

Page 4: COM and.Net Components By Sam Nasr January 25, 2005

COM TerminologyCOM Terminology

Interface: a set of methods; “contract” between client and Interface: a set of methods; “contract” between client and its components.its components.

GUID/UUID: Globally/Universally Unique Identifier. GUID/UUID: Globally/Universally Unique Identifier. Based on IP address, MAC address, date/time, etc. in Based on IP address, MAC address, date/time, etc. in the format {8-4-4-4-12}.the format {8-4-4-4-12}.

Transactions: separate units of work treated as one (all Transactions: separate units of work treated as one (all or nothing).or nothing).

Monikers: a COM object with a very well defined purpose Monikers: a COM object with a very well defined purpose (create, initialize, and connect to another object).(create, initialize, and connect to another object).

Page 5: COM and.Net Components By Sam Nasr January 25, 2005

Evolution of COMEvolution of COM

Need for software reuse and code sharing.Need for software reuse and code sharing.

COM Evolved from OLE and ActiveX.COM Evolved from OLE and ActiveX.

Different programs can share data and Different programs can share data and services using 1 standard.services using 1 standard.

Page 6: COM and.Net Components By Sam Nasr January 25, 2005

Problems of non-standard Problems of non-standard Code SharingCode Sharing

Distributing objects with their source code.Distributing objects with their source code.

Reusing objects across different Reusing objects across different languages.languages.

Re-linking or re-compiling an entire Re-linking or re-compiling an entire application when one object changesapplication when one object changes

Page 7: COM and.Net Components By Sam Nasr January 25, 2005

Features of COMFeatures of COM

Classes of COM objects are identified by Classes of COM objects are identified by Class Identifiers (CLSID).Class Identifiers (CLSID).

GUID’s are used to name Class Identifiers GUID’s are used to name Class Identifiers (CLSID).(CLSID).

System Registry is used to map given System Registry is used to map given CLSID to actual component.CLSID to actual component.

Use CoCreateInstance to create a new Use CoCreateInstance to create a new COM object.COM object.

Page 8: COM and.Net Components By Sam Nasr January 25, 2005

Features of COMFeatures of COM

IUnknown supports 3 methods:IUnknown supports 3 methods:

QueryInterfaceQueryInterface

AddRefAddRef

ReleaseRelease

Every COM interface has a common first Every COM interface has a common first method named QueryInterface.method named QueryInterface.

Page 9: COM and.Net Components By Sam Nasr January 25, 2005

Advantages of COMAdvantages of COM

Versioning:Versioning: Existing interfaces do not change. Existing interfaces do not change. New functionality offered in new functionality.New functionality offered in new functionality.

Results are consistentResults are consistent

No relinking/recompiling an application No relinking/recompiling an application when one object changes.when one object changes.

Page 10: COM and.Net Components By Sam Nasr January 25, 2005

Advantages of COMAdvantages of COM

Widely used in Microsoft’s product line.Widely used in Microsoft’s product line.

Expanding to accommodate Mainframe systems.Expanding to accommodate Mainframe systems.

Structured storage allows for data persistence Structured storage allows for data persistence (storage and stream).(storage and stream).

Ease of code reuse.Ease of code reuse.

Page 11: COM and.Net Components By Sam Nasr January 25, 2005

Advantages of COMAdvantages of COM

Accessible by all kinds of software components.Accessible by all kinds of software components.

Language independent.Language independent.

Interfaces provide a universal method of access.Interfaces provide a universal method of access.

COM data is encapsulated, and directly COM data is encapsulated, and directly accessible.accessible.

Page 12: COM and.Net Components By Sam Nasr January 25, 2005

Advantages of COMAdvantages of COM

Uniform Data Transfer (UDT): a standard Uniform Data Transfer (UDT): a standard for exchanging information.for exchanging information.

Storage/Stream: objects for sharing a Storage/Stream: objects for sharing a single file.single file.

Directory Services supply information for Directory Services supply information for clients processes.clients processes.

Page 13: COM and.Net Components By Sam Nasr January 25, 2005

What is DCOM?What is DCOM?

Distributed Common Object ModelDistributed Common Object Model

Distributed Component servicesDistributed Component services

Remoting ArchitectureRemoting Architecture

Page 14: COM and.Net Components By Sam Nasr January 25, 2005

What is MTS?What is MTS?

Microsoft Transaction ServicesMicrosoft Transaction Services Handles Transaction Services for COM Handles Transaction Services for COM

components.components. Manages resource poolingManages resource pooling Role Based securityRole Based security AdministrationAdministration Just-in-Time ActivationJust-in-Time Activation

Page 15: COM and.Net Components By Sam Nasr January 25, 2005

What is COM+?What is COM+?

Integration of administration services/features.Integration of administration services/features. Accesible from “Administration Tools” folder Accesible from “Administration Tools” folder

(Component Services).(Component Services). Included with post Win2000 OS’sIncluded with post Win2000 OS’s Load balancingLoad balancing In memory databaseIn memory database Object PoolingObject Pooling Queued ComponentsQueued Components Event ModelEvent Model

Page 16: COM and.Net Components By Sam Nasr January 25, 2005

COM & .NetCOM & .Net

COM components must be registered prior COM components must be registered prior to use with .Net applications to use with .Net applications (regsvr32.exe).(regsvr32.exe).

.Net Assemblies must be registered for .Net Assemblies must be registered for use with COM components (regasm.exe)use with COM components (regasm.exe)

Regasm.exe must be run in VS.Net Regasm.exe must be run in VS.Net Command Prompt window.Command Prompt window.

Page 17: COM and.Net Components By Sam Nasr January 25, 2005

COM & .Net InteroperabilityCOM & .Net Interoperability

RCW: Runtime Callable Wrappers RCW: Runtime Callable Wrappers (INTEROP.(INTEROP.COMLibCOMLib))

DLLHost.exe: host process for handling DLLHost.exe: host process for handling remote COM calls.remote COM calls.

TlbImp.exe: Converts COM to .Net TlbImp.exe: Converts COM to .Net Assembly.Assembly.

Page 18: COM and.Net Components By Sam Nasr January 25, 2005

TLBIMP vs. Direct ReferenceTLBIMP vs. Direct Reference

Tlbimp.exeTlbimp.exe Tlbimp MyCOM.DLL /out:NetMyCOM.DLL (execute in VS CMD)Tlbimp MyCOM.DLL /out:NetMyCOM.DLL (execute in VS CMD) Allows for signing the resulting assembly.Allows for signing the resulting assembly. Resulting code can be used in GACResulting code can be used in GAC

Direct ReferenceDirect Reference Easier to useEasier to use Does not allow for signing the assemblyDoes not allow for signing the assembly Resulting code cannot be placed in GAC or shared with other .Net Resulting code cannot be placed in GAC or shared with other .Net

assemblies.assemblies.

Page 19: COM and.Net Components By Sam Nasr January 25, 2005

Additional InfoAdditional Info

http://www.ncst.ernet.in/education/apgdst/adbfac/16_Cohttp://www.ncst.ernet.in/education/apgdst/adbfac/16_Compare.pdfmpare.pdf

http://msdn.microsoft.com/library/default.asp?url=/library/http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/callnetfrcom.aspen-us/dndotnet/html/callnetfrcom.asp

http://msdn.microsoft.com/library/default.asp?url=/library/http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbconcominteropinvisualbasicvisualc.aen-us/vbcon/html/vbconcominteropinvisualbasicvisualc.aspsp

http://www.codeproject.com/csharp/RssReader.asphttp://www.codeproject.com/csharp/RssReader.asp

Page 20: COM and.Net Components By Sam Nasr January 25, 2005

Job BoardJob Board

Senior Developer - Downtown Cleveland, Senior Developer - Downtown Cleveland, C#.net and Oracle PL/SQL experience (Job# 2578)C#.net and Oracle PL/SQL experience (Job# 2578)

Contact Dave Sgro ([email protected])Contact Dave Sgro ([email protected])

Instructor – CCC WestlakeInstructor – CCC WestlakeMS2310 ASP.Net and VS.NetMS2310 ASP.Net and VS.Net

Contact Toni Paoletta ([email protected])Contact Toni Paoletta ([email protected])

.Net Developers – Berbee Information Systems.Net Developers – Berbee Information SystemsVisit the “Careers” section at http://www.berbee.com Visit the “Careers” section at http://www.berbee.com

Page 21: COM and.Net Components By Sam Nasr January 25, 2005

Useful ToolsUseful Tools

Process ExplorerProcess ExplorerA Task Manager utility that provides more much more info than the A Task Manager utility that provides more much more info than the

standard windows utility.standard windows utility.

http://www.sysinternals.com http://www.sysinternals.com

Fiddler HTTP DebuggerFiddler HTTP DebuggerAllows you to inspect all HTTP Traffic, set breakpoints, and "fiddle" with incoming or Allows you to inspect all HTTP Traffic, set breakpoints, and "fiddle" with incoming or

outgoing data.outgoing data.

http://www.fiddlertool.com/fiddler/http://www.fiddlertool.com/fiddler/

API-GuideAPI-GuideA comprehensive API utility complete with documentation and examples.A comprehensive API utility complete with documentation and examples.

http://www.mentalis.org/agnet/apiguide.shtml http://www.mentalis.org/agnet/apiguide.shtml

Page 22: COM and.Net Components By Sam Nasr January 25, 2005

Upcoming EventsUpcoming Events Feb 3Feb 3rdrd: MSDN Event: MSDN Event

Topic: WinForms, ASP.Net, VS Team SystemsTopic: WinForms, ASP.Net, VS Team Systemshttp://www.msdnevents.com/http://www.msdnevents.com/

Feb 12Feb 12thth: GCPCUG General meeting : GCPCUG General meeting Topic: consumer electronicsTopic: consumer electronicshttp://www.gcpcug.orghttp://www.gcpcug.org

Feb 22Feb 22ndnd: C#/VB.Net Meeting : C#/VB.Net Meeting Topic: SQL Server 2005 Reporting ServicesTopic: SQL Server 2005 Reporting Serviceshttp://my.core.com/~snasr/VBNET_SIG/VBNET_SIG.htmlhttp://my.core.com/~snasr/VBNET_SIG/VBNET_SIG.html