I’d like to use C#, Java and PHP in an upcoming project. What potential pitfalls should I watch out for? Are there advantages to using multiple platforms for a project? The target development team is people with varying backgrounds working over the internet on this project.
Edit: Please be specific and let me know what possible problem I could face…please don’t be too generic with your answers that it is not good,it will cause problems,etc.Please be specific.
My plan for integration would be to to use 2 methods.
1.) WebServices (Common in php,.Net and JAVA)
2.) MYSQL Database (commonly accessible by PHP,.Net and JAVA)
My project is an ERP + CRM project for enterprises where developers can have the freedom to code in whatever platform they like to integrate and develop modules/plugins.
The scenario I would think of using those three technologies together would be a distributed system with a rich GUI (C# on Windows) a robust back end (EJB or similar Java Framework) and a web front end for remote users (PHP).
Although a reasonable argument could be made for those being best in each case, the problem with such an arrangement is duplication. Every data structure has to be duplicated in the database, in the back end, on the GUI and in PHP. In addition, the integration testing and debugging problem is made much more complex. Everything will have to be boiled down to primitives to transfer data between the tiers, hard to change protocols that decode messages will be built up in three languages, and things go down hill from there.
A better approach would be to have the core functionality of the product (your code) in one platform throughout. Then provide integration points in the form of web services and buffer tables in MySQL that allow communication over defined paths with your application, and let developers who want to write plugins use those integration in the language of their preference. Regarding the integration with the database, a reasonable approach can be to use defined tables for this purpose, plus stored routines that are written to map these tables to your internal data structure. This will give you much better encapsulation than having modules write to your data model directly.