Click here to Skip to main content
15,886,069 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
See more:
I see many references to Mono in these forums, but I have more of a general question. I have been asked to develop a small system that prints, tracks, and reports on bulk fuel deliveries to run a Mac network. I do not presently own a Mac. I would like to use .Net to create this app. To date I have done all of my .Net using VB, but am willing to learn C or C# for this project. I do have an old VFP version of the system that I basically have to duplicate. On the surface it seems like Mono will do the trick because this system is fairly simplistic and it would allow me to deploy it to both Windows and the Mac. If I cannot use something like Mono because there is a large learning curve or other problems then this project will probably not support me buying Mac equipment or software. I hope some of you out there have had some experience with Mono or other cross platform tools. A few of my questions/concerns are:
1. Does Mono even make sense for this project.?
2. Is there a large learning curve?
3. What database should I use (mysql seems like the way to go because it is available on both platforms)?
4. Can I use the same db calls for both Windows and Mac?
5. Will I need a Mac to compile it to run on the Mac (I'm guessing yes)?
6. One piece of this project involves consuming a web service to send financial transactions to a credit company and receiving the confirmation. Am I going to be able to do this on both Windows and Mac?
7. I also have to post invoices to Quick Books.
8. Some of my research suggested the Mono screens on the Mac did not look very good (maybe this is old information).
9. What difficulties or pitfalls are there?
10. Any other suggestions or comments are welcome.
Posted

Anwser #1: I may have perfect sense, but who knows? The problem is that Mac is more hostile to the "foreign" developers than Linux and any other OS. Basically, if you managed to develop some application which runs on both Windows and Mono, it will be executed on Mac OS X or iOS without recompilation, but might look not like a first-class citizen. You can use MonobjC to develop near-native Mac OS X or iOS applications, but this is too far from .NET libraries (and from any mainstream development, in fact). Please see further detail in my other answers referenced below.

Answer #2: It depends on your previous experience.

Answer #3: Yes, MySQL is one of those you can use. You can use Oracle, but one problem with Oracle is that the only provider available at Mac is OracleClient, deprecated by Microsoft since .NET v.4.0. I've done a migration project from .NET to multi-platform, so I had to developed a whole detailed abstraction layer to use both in one application selectable during run time depending on the platform. These providers even have different query syntax.

Answer #4: Yes, please see previous answer.

Answer #5: Normally, no. You can build everything on Windows and execute on Mac without re-compilation. The process I recommend is this: develop on Windows with Visual Studio, then test on .NET for Windows, then test on Mono for Windows, then deploy to Mac and have the final fun. However, if you use MonobjC (please see see further detail in my other answers referenced below), you won't be able to use the Designer with native Mac objects, but you can compile it all with MonobjC, even on .NET, quite formally, not being able to test on .NET. You can use System.Windows.Forms on Windows and .NET — most of it will work on Mac right away, if you develop accurately and totally avoid platform-dependent tricks.

Answer #6: Yes, you will, but there are some kind of incompatible features, but I remember only those which are relaxed on .NET but needs strict approach on Mono. In other way, .NET allows deviations from standard, but Mono will not. You also need to learn how to install the certificates on Mono — it has its own data files; so see the Mono documentation on this topic. On .NET, the server certificates defined in the system are used. (Certificates are only applicable when you use HTTPS.)

Answer #7: I have no idea what is that. Sounds bad… :-)

Answer #8: Normally, this is true if you are using Forms only. Please see further detail in my other answers referenced below. Actually, I developed some tricky approach to overcome it. I tried to develop the UI using two different UI threads: one for Forms, another one for Mac OS X Cocoa, to show the main menu only. This is quite possible. And then the two threads just exchange user input data. This is a thunk between completely different systems though, tricky enough.

Answer #9: I've listed some already.

Answer #10: Digest this answer and provide some feedback. Look through the further links to Mac OS X related libraries and their Mono binding I provided. This topic is to wide to cover in one answer. I'll gladly try to answer your further questions.

I have fairly good experience on Mono porting where Mac is involved, so please see my past answers to the questions on related topics:
Programming for ipad/iphone onn windows 7[^],
how can i make mac software?..............[^],
Learning write c# for mac[^],
Need to make small apllication that runs on iphone-Ipad (maybe stupid question : ( )[^],
about mobile operating systems[^].

—SA
 
Share this answer
 
v2
Thanks I will check out those links.

Here is my follow-up.

#5: Installing Mono, mySQL, and certificates on the Mac has me a little intimidated

#7: I think you are kidding, but I might go with creating CSV files for importing into quick books to keep the development time down.

#8: Everything I plan on doing would be through a System.Windows.Form. I really don’t want to have the app look bad on the Mac. I know this is a tough question to answer, but how bad is it, distortions, fuzzy fonts, etc.?

Which version of Visual Studio most closely matches the current release of Mono?
 
Share this answer
 
v2

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