Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

This exercise is intended to help you understand the difference in design philosophy of Iguana X with Iguana 6.

 In Iguana 6.1.4 go to Settings > Add/Configure Repositories

 Create a new HTTP repository https://bitbucket.org/interfaceware/export named DemoImport
  • Make the name DemoImport

  • Select Protocol HTTPS

  • Copy paste this in:

    https://bitbucket.org/interfaceware/export
 Import all the channels from the new repository

 Compare the LLP Listener configuration in both products - what do you notice is different?

In IguanaX we have:

Versus in Iguana 6:

 What is different and why?

Iguana 6 looks like the dashboard of 747 - there are lots of different options which most customers leave on the defaults.

With IguanaX a design goal was to make the operation of interfaces simpler by soft coding the components in Lua but giving each component a lot less configuration fields so that more attention can be given to what actually matters.

 Find the code where we map from the LLP Listener component in Iguana 6 to the Iguana X component

Hint - look in the source code of the converter.

Look at the CHAN/CHANllpSource.lua file. This defines the mapping of configuration information from Iguana 6 to IguanaX.

Also look at the calls to CHANcreateStandardComp in CHAN/CHANmain.lua:

CHANcreateStandardComp(Dir, C, "from_llp_listener", "#source #llp",
                 "git@bitbucket.org:interfaceware/hl7_server.git")

These calls define the mapping of Iguana 6 components to IguanaX components.

 Say you had a lot of LLP components using SSL/TLS - how would you map them?

Currently this could mean making the current components more complicated. Or making another secure LLP component and mapping those LLP interfaces using secure sockets into the new component which supports SSL/TLS.

 What are we aiming for?

We’re trying to hit the sweet spot of understanding the simple common set of usage that most people need. That way we can make simple components which are intuitive to understand in terms of their configuration and their implementation.

Unusual requirements for a few interfaces shouldn’t come at the cost of making things complicated for everyone.

Our design goal with IguanaX is to make simple components that work for most people out of the box. But when something more complicated is needed, to make it easy to crack a component open and easily modify it to meet the need you have.

 How are we going to get there?

We are starting by working with some helpful customers who are willing to share their code from Iguana 6 so we start to get a picture of ‘what is normal?'.

What is the set of components and configurations hits 90% of the use cases?

 My company uses legacy plugins - how do we solve this

I would be happy to have a conversation with you.

Take a step back and think hard about what a plugin or client executable really is. It’s basically a means of allowing a programmer using a language like C# to push a message into an Iguana queue.

This is done through a number of layers:

C# Code → Stub code → DLL → Proprietary TCP/IP protocol in C++ → Iguana 6

Since IguanaX allows one to write fully fledged TCP/IP servers in theory you could replicate the proprietary TCP/IP protocol and without recompiling the C# code:

C# Code → Stub code → DLL → Proprietary TCP/IP protocol in Lua → IguanaX

It seems redundant though. In software simpler is always better in terms of less points of failure. This is the architecture I would recommend:

C# Code → Native web service call → Web Service component in IguanaX

A compromise could be:

C# Code → DLL → HTTP(S) calls → Web Service component in IguanaX

I think personally the bolded option makes the most sense. It offers the most control and extensibility since additional web service calls can easily be implemented - you’ll have much more control.

  • No labels