People who have read my blog probably knew this was coming. I assisted Rob Tiffany in writing the second version of his Windows Mobile Line of Business Solution Accelerator. So it is only natural that I try and port it to MonoTouch.
This is going to take a while. I decided rather than doing the port and then a blog entry. I will do blog entries as I work on the port. This entry maps out the plan, the developer environment, and my starting steps.
The Road Ahead
This is a big project. It consists of porting the UI, application logic, and database. I believe it should ends up being a medium difficulty project.
The UI port should be relatively easy using Interface Builder. The gotchas will probably be in how to layout the UI interface.
The application logic for the most part should be straight forward. One of the great things about LOB Accelerator is that the code was partitioned into UI, Application and Database layers. Each layer only referenced the layer it used. In addition, the interface did not expose the underlying internals. Thus only a common set of objects in the application layer needed to be exposed.
Ah the database layer and my nightmare. Well maybe. The database layer uses a provider model to access the actual physical database. Hopefully I can find a relational database that can be manipulated with ADO.NET. If so then the data port is straight forward. If not it could get really fun.
The developer environment will consist of MonoDevelop, MonoTouch, and the iPhone SDK. In addition, I have setup Git and a GitHub to enable easy sharing of the code and more importantly version control for the project.
If you are starting from scratch this will take some time. I already had a bunch of this done from setting up from my blog entry on .NET Development for OS X. Git takes some time to setup due to the need to generate ssh key and config. Be prepared to spend some time on getting the environment up and running.
The last step was creating the project. And copying over the code I thought would be a good starting point. The code was the business objects. In a sign of good fortune I only had 4 errors. I did not copy over the service API as I knew there would be problems. The business objects do call into the service API just like the UI would. Commenting out the 4 key code blocks gave a clean compile.
I then committed the project to GitHub. Next up building the UI layer.