Xamarin consists of two commercial products: Xamarin.ios, xamarin.android. They are all based on open source. NET is built for mono projects. Mono is a cross-platform. NET runtime, and all. NET-based applications can be run on systems that have mono installed.
Mono can be deployed on Windows Linux Unix MAC OSX ...
In iOS development, Xamarin is compiled by the AOT, precompiled when the program is published, and translates the code directly into native assembly language code.
In Android, Xamarin is the code that generates the intermediate language, IL, which converts il to native bytecode language when the program is running. (in Xamarin's Enterprise Edition, the process of directly ignoring IL is done using the NDK, for native code-level development)
Regardless of the development of iOS, the development of Android, the application of Xamarin through the runtime, such as: memory allocation garbage collection underlying interaction and so on.
The two assemblies above are the core DLLs of Xamarin. These two assemblies contain a complete wrapper map for the corresponding SDK for the corresponding release version. Each time a new version of iOS or Android is released, a corresponding wrapper assembly is published.
MonoTouch.dll---Contains the binding innuendo for the SDK published by the corresponding version of iOS
C:\Program Files (x86) \reference Assemblies\microsoft\framework\monotouch
Mono.Android.dll---Contains mappings for the SDK version of the corresponding Android release
C:\Program Files (x86) \reference assemblies\microsoft\framework\monoandroid
"Xamarin Poach series: The core of Xamarin"