41
MICROSOFT .NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Embed Size (px)

Citation preview

Page 1: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

MICROSOFT .NET INTEROPERABILITY BLACK BELT –

TIPS & TRICKS Vjekoslav Babic

(Fortempo)

Page 2: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Vjekoslav Babićconsultant, trainer, blogger, author

Blog: vjeko.comE-mail: [email protected]

Author of many How Do I… videos for MSDN and PartnerSource for NAV 2013 and NAV 2013 R2

Co-author of “Implementing Microsoft Dynamics NAV 2009” book

ABOUT ME

Page 3: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Take .NET Interoperability…… slice it to ribbons…… and then glue it all back together

AGENDA

Page 4: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

WHAT’S WRONG WITH .NET INTEROPERABILITY?

Page 5: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)
Page 6: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Part 1

Strong Type

Page 7: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

IEnumerable<T>

Page 8: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

foreach

Page 9: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

for (int i = 0; i < foos.Count(); i++){

Foo f = foos.ElementAt(i);// Do something

foreach (Foo f in foos)

{

// Do something

}

Page 10: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

for (int i = 0; i < foos.Count(); i++){

Foo f = foos.ElementAt(i);// Do something

foreach (Foo f in foos)

{

// Do something

}

Page 11: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

DON’T DO THIS

FOR i := 0 TO Foos.Count - 1 DO BEGIN Foo := Foos.Item(i);END;

Page 12: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

DO THIS INSTEAD

Enumerator := Foos.GetEnumerator;WHILE Enumerator.MoveNext DO BEGIN Foo := Enumerator.Current;END;

Page 13: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Demo 1

Simple List

Page 14: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

System.Object

Page 15: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Demo 2

Not That Simple List

Page 16: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Demo 3

Very Rude Codeunit

Page 17: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Demo 4

A Nice Idea That Fails

Page 18: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Reflection

Page 19: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

System.Type

Page 20: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

System.Activator

Page 21: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Demo 5

System.Activator

Page 22: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Demo 6

Strongly-Typed Generics

Page 23: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Demo 7

A Nice Idea That Works

Page 24: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Part 2

Error Handling

Page 25: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Demo 8

File.Delete

Page 26: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

try..catch

Page 27: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Demo 9

Try..Catch

Page 28: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Part 3

Dependencies

Page 29: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Demo 10

Tight Coupling

Page 30: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

PRS.NET

Page 31: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Demo 11

Facade

Page 32: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

But there is an even better way.

Page 33: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Inversion of Control Pattern

Page 34: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Demo 12

Inversion of Control

Page 35: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Quick Tip

Simple GAC Deployment

Page 36: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Part 4

Auto-Deployment

Page 37: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Demo 13

Client/Server

Page 38: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)

Demo 14

Auto-Deployment

Page 39: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)
Page 40: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)
Page 41: MICROSOFT.NET INTEROPERABILITY BLACK BELT – TIPS & TRICKS Vjekoslav Babic (Fortempo)