Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Integration with external system

Just a general question. How do you guys approach the problem of integrating with external system.

What are the things to consider?

What are the different approach?

Is there any existing framework out there for this?

Is there a pattern to follow?

Just wanna get some ideas, any suggestions, links, articles are appreciated.

Thanks

like image 993
pdiddy Avatar asked Dec 17 '10 15:12

pdiddy


3 Answers

Systems integration is generally done on a case by case basis. The only time this isn't true is if one of the systems implements a common framework for integration work. Those frameworks are usually industry specific.

For example, health care related systems usually implement HL7. Education based systems might implement something called SIF. Mortgage systems implement MISMO.

Without knowing the apps in question it's impossible to say if a framework exists.

Things to consider when performing an integration include: Do either of the systems expose any type of functionality related to either importing/exporting data or web services?

If they do and they don't participate in an industry standard framework then this is the preferred mechanism.

The worst case scenario is to have one system directly call into the other systems data store. More often then not this means that you will have to duplicate business logic AND maintain that duplication. In the case of upgrades, this becomes a nightmare.

If you are at the worst case scenario then your best bet will be to contact the creator of the system you need to integrate with and figure out how they can expose the functionality you need through import/export or web services. There will more than likely be a charge for this; but it's going to be much cheaper than trying to figure it out yourself.

like image 109
NotMe Avatar answered Oct 18 '22 19:10

NotMe


Probably you want to be independent of the external system. It means that if something changes with the external system, your client should not notice that. So you need to abstract it. It depends on your requirements, but I tend to follow DDD principles. It makes sure that you have a rich domain model that is independent of whatever infrastructure you are using, in your case, the external system. Just google for 'domain driven design'... :)

like image 29
L-Four Avatar answered Oct 18 '22 18:10

L-Four


I'd think most of the decisions would be driven by the capabilities of the external system, what interfaces does it support? Do they encompass appropriate security infrastructure for the data? Once you know what the options are you can look to see what is supported already through the .Net Framework and/or third party components. Better to look to the problem space before you start on the solution space ;)

like image 42
Lazarus Avatar answered Oct 18 '22 20:10

Lazarus