Click here to Skip to main content
15,997,776 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
See more:
Dear software experts

I need to find away to exchange some data between the application I'm developing and some other applications that already developed for some business,But it is possible these applications get replaced in future.I don't want I have to change my source code when they are replaced.I'm seeking a generic way for these data exchanging,so that every application can exchange data with my application.WEB service is a good idea when other applications want to use data or services which my application provide and they are caller,but how can my application get data or use service from other software systems when my application is caller,without I have to change my source code if that system replaced?

I think if I can write a software component which offers some interfaces,and other software systems implement those interfaces,so I can call functions of those interfaces somehow,I achieve it.But I don't know how can I share a component on a server(or any other machine) that other software developers can implement some interfaces of it and still I can call its functions.

Is this idea can comes true?if yes may you please give me a guide line how and if no,is there any solution for my need?Is there any document to discuss this type of software architecture in detail?

Best Regards
Posted

There are a number of ways to share information between applications.

One common implementation is a server-client based model (at the heart of the web service schema as well). In a server-client model, an interface is defined between the two applications (transport method, messages, data types and structures, etc...) and you simply implement an interface depending on what side you want to be on (server or client). You can make the interface socket based and then it doesn't matter if the server and client are co-located or in a different continent.

Since you're building this for some business, security should probably be of concern from the start (depending on application).
 
Share this answer
 
Comments
Sergey Alexandrovich Kryukov 17-Jun-11 18:22pm    
Reasonable, my 5. I would add: hire the architect :-). No easy though.
--SA
Albert Holguin 17-Jun-11 21:31pm    
thanks :)
RezaAsAdi 18-Jun-11 1:20am    
Albert,client-server architecture in its common meaning doesn't provide what I need,maybe its special figure you mean and I need more detail to understand.What I want is that I embed some calls to predefined functions just now in my codes while these functions are not still implemented,so other developers implement them later,
and in this way complete the task without I need to have any change in my code.I think using COM,it's possible because I've seen type of this solution in applications like ArcGIS,but I don't know how,and don't know the name of topic,or which contents covers this topic.
Sergey Alexandrovich Kryukov 18-Jun-11 2:34am    
To my understanding, it's called "plug-in architecture". I happened to develop few different plug-in architectures which proved to be very robust. I published skeleton descriptions of some on CodeProject answers (but those for .NET which is perfectly suited for such thing).

Yes, my older architecture worked with COM.

The idea was making a class factory an "entry point" in the form exported DLL function. In this way, Windows registration and instantiation code was not needed, as any other COM-related system binary. It allowed me to make it portable between Windows and Unix.

If interested, post a separate question and notify me (by replying to this comment). I'll either find you the links or write a short description (but more detailed than this one). You also need to provide more detail on your application.
--SA
RezaAsAdi 18-Jun-11 5:30am    
Yes,the name "plug-in Architecutre" is close to what I mean.My application is a GIS desktop app,an extention to ArcMap which shows some electrical substations as points on the map with their descriptive attributes.There is another application which records voltages and currents for each substation,and it gets replaced sometimes depending on electrical instruments.I need to put a predefined empty function somewhere on a server and make a built-in call in my code to that function to read voltages and currents and show them in GIS application,so that when a new instrument comes with its specific application,the developer of this new application implement a new version of that function so that I can always read voltages and currents using call to that function.
Is there any doc/guide line to this type of architecture?
Best regards
I could find a technology which almost solve this problem,named
"plug-in framework".I could find it in MSDN with title "Creating
a plug-in framework".As mentioned in this paper this technology
is used:
-To extend an application's functionality without the need
to re-compile and distribute it to customers.
-To add functionality without requiring access to the
original source code.
-The business rules for the application change frequently,
or new rules are added frequently.

But the weak point of this solution is that plug-in assembly must
located in the same folder as the main application and this must
happens on each client.

It would be nice if the server application (here that plug-in) could
install only on a server machine in the local net and all clients
could use that only installation of server application.

Let's imagine a common library assembly which includes an interface
definition.Both client and server application refer to this library,
and server application has some classes which implement this interface.
There is only one installation of server application somewhere on a LAN
and clients can create an instance of this server application on local
machine and use its functions.But the key point is like plug-ins,client
must be able to find the server as an application which implements that
interface,in other word,server must introduce himself to client somehow.

Is there any technology with this specification?it is higly appreciated
if you introduce me to this technology.

Best regards
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900