Mono1 -1- چیست ؟

Mono یک نرم افزاری است که به برنامه نویسان اجازه می دهد به راحتی برنامه های مستقل از محیط اجرایی تولید کنند. Mono یک پیاده سازی متن باز از Microsoft .Net framework بر اساس استانداردهای ECMA برای #C و زبان مشترک در زمان اجرا است. تولید کنندگان Mono بر این عقیده اند که پذیرش یک بستر موفق و استاندارد شده تولید نرم افزار مانند Net.، باعث کاهش موانع تولید برنامه های بزرگ تحت لینوکس می شود.
 
1 -2 - مؤلفه ها ی Mono

مؤلفه های متعددی Mono را تشکیل می دهندکه عبارتند از:

1. کامپایلر C# : این کامپایلر تمام ویژگیها برای کامپایل کردن (ECMA C# 1.0, 2.0) و همچنین شامل بسیاری از ویژگیهای C# 3.0 است.

2. Mono زمان اجرا : زمان اجرا زیرساختار ECMA را پیاده سازی می کند. زمان اجرا یک کامپایلر فقط در زمان ، یک کامپایلر جلوتر از زمان ، بارگذار کتابخانه، پاک کننده حافظه را فراهم می کند.
 
3. کتابخانه کلاس پایه : بستر Mono یک مجموعه وسیعی از کلاسها را آماده می کند که با آنها بنیان برنامه ها پایه ریزی می گردد.این کلاسها با کلاسهای
Microsoft .Net Framework سازگار هستند.
 
4. کتابخانه کلاس Mono : همچنین mono کلاسهای بسیاری فراهم می آورد که بالاتر و فراتر از کلاس پایه فراهم شده توسط مایکروسافت می رود. اینها کارایی اضافه فراهم می آورند که به خصوص در ساخت برنامه های Linux مفید هستند. برای مثال کلاسهایی که برای Gtk+، فایلهای Zip، LDAP، OpenGL، Cairo، POSIX و ... هستند.
 
1-3 - مزایا Mono

مزایای زیادی در انتخاب Mono برای تولید برنامه وجود دارد.
 
1. شهرت : بر پایه موفقیت Net. میلیونها برنامه نویس وجود دارند که تجربه ساخت برنامه ها در #C را دارند.همچنین ده ها هزار کتاب، وب سایت و سورس کد مثال برای کمک به هر نوع مشکل قابل تصور وجود دارد.
 
2. برنامه نویسی سطح بالاتر : همه زبانهای Mono از بسیاری ویژگیهای زمان اجرا، مانند مدیریت حافظه خودکار، reflection، generics و threading نفع می برند.این ویژگیها به شما امکان می دهد تا روی نوشتن برنامه تان تمرکز کنید تا اینکه یک کد زیرساختار سیستمی بنویسید.
 
3. کلاس کتابخانه ای پایه : داشتن یک کتابخانه کلاس وسیع، هزاران کلاس توکار برای افزایش بهره وری را فراهم می آورد.احتیاج به کد سوکت یا پشته دارید ؟ احتیاجی نیست خودتان بنویسید وقتی که به صورت توکار در بستر وجود دارد.
 
4. مستقل از بستر : Mono ساخته شده، تا مستقل از بستر باشد. mono روی لینوکس، ویندوز، OSX، BSD و Solaris اجرا می شود. همچنین روی x86، x86-64، IA64، PowerPC، Sparc، ARM، Alph و بیشتر سیستمها اجرا می گردد. تولید برنامه با mono به شما اجازه می دهد تا آن را تقریبا روی هر نوع کامپیوتر موجود اجرا کنید.
 
5. زبان مشترک در زمان اجرا CLR): CLR) به شما اجازه می دهد تا زبان برنامه نویسی را که بیشتر دوست دارید برای کار کردن انتخاب کنید و آن می تواند با سایر کدهایی که به هر زبانی در CLR نوشته شده همکاری کند. برای مثال، می توانید یک کلاس در #C بنویسید، از ان در VB.Net به ارث ببرید و از آن در Eiffel استفاده کنید. شما می توانید در mono، کد را به زبانهای برنامه نویسی متعدد بنویسید.
 
1 -4 - نصب mono

برای نصب Mono کافیست rpm های موجود در سایت Mono را دانلود کنید و همه آنها را در یک پوشه کپی کنید و با دستور زیر انها را نصب کنید.

[vahid@localhost ~]$ rpm - Uvh *.rpm

توجه داشته باشید که امکان دارد بعضی از این rpm ها به یکدیگر وابسته باشند و برای نصب به یکدیگر نیاز داشته باشند بهتر است برای اینکه مشکل وابستگی پیش نیاید از دستور بالا برای نصب استفاده کنید.
ممکن است در هنگام نصب بسته Libgdiplus، مخصوصا در RHEL5 با مشکل مواجه شوید. به همین خاطر باید این بسته به صورت جداگانه با دستور زیر نصب گردد و سپس سایر بسته ها به صورتی که در بالا آمده نصب گردند.

[vahid@localhost~]$ rpm -ivh --force libgdiplus-1.2.6-2.rhel4.novell.i386.rpm
 
 
لیست rpm های مورد نیاز برای نصب و راه اندازی mono به صورت زیر است :

 
1 -5 - تست درستی نصب mono

بعد از نصب mono اگر می خواهید از صحت نصب، اطمینان حاصل کنید کافی است کد زیر را در فایل Hello.cs با یک ویرایشگر بنویسید.


سپس برای کامپایل کردن برنامه دستور زیر را اجرا کنی
د
[vahid@localhost opt]$ mcs hello.cs

بعد از اجرای دستور بالا یک فایل به نام Hello.exe در آن مسیر ساخته می شود . اکنون می توانید با دستور زیر این فایل را اجرا کنید و خروجی را مشاهده کنید.

[[vahid@localhost opt]$ mono hello.exe
What we think, we become.

با مشاهده پیغام بالا می توانید اطمینان حاصل کنید که حداقل پایه های mono روی دستگاهتان نصب شده است. به همین روش می توانید یک برنامه که شامل فرمهای ویندوزی است را کامپایل و اجرا کنید لازم به توضیح است که همانطور که قبلا گفته شد، با دستورmono می توانید برنامه هایی که در سایر Platform ها مانند Windows کامپایل شده را نیز اجرا کنید .

2- معرفی و نصب Mod_Mono

2 -1 - Mod_Mono چیست ؟

Mod_Mono یک ماژول Apache است که این امکان را فراهم می اورد که Apache از ASP.Net پشتیبانی کند.
این ماژول، درخواستهایی که برای صفحات ASP.NETمی رسند را به یک برنامه خارجی
، mod-mono-server، که در واقع درخواستها را مدیریت می کند، ارسال می کند. ارتباط بین ماژولApache و mod-mono-server با استفاده از یک سوکت Unix یا یک سوکت TCP برقرار می شود.
 
2 -2 - نیازمندیهای Mod_Mono

قبل از نصب mod_mono باید Apache روی سیستم نصب باشد که با mod_mono سازگاری داشته باشد. ترجیحا آخرین نسخه آن را از سایت Apache دانلود و نصب کنید. نحوه نصب در ادامه آمده است.
mono نیز باید روی سیستم نصب باشد که نحوه نصب آن در قسمت قبل به تفصیل شرح داده شد.
در قسمت دانلود سایت Mono، بسته xsp و ترجیحا سورس فایل mod_mono را دانلود کنید.
از انجاییکه نصب rpm احتیاج به پیکر بندی اضافی دارد با کامپایل کردن سورس، کار نصب راحت تر انجام می گیرد.ما در اینجا نصب از طریق کامپایل را توضیح می دهیم.
 
2 -3 - نصب و راه اندازی Apache

برای کامپایل کردن Apache دستورات زیر را به ترتیب اجرا می کنیم.

[vahid@localhost~]$ tar xvfz httpd-2.2.8.tar.gz
[vahid@localhost~]$ cd httpd-2.2.8
[vahid@localhost httpd-2.2.8]$ ./configure --enable-so
[vahid@localhost httpd-2.2.8]$ make
[vahid@localhost httpd-2.2.8]$ make install

اکنون برای اینکه از صحت نصب مطمئن شویم کافیست سرویس Apache را با دستور زیر اجرا کنیم.

[vahid@localhost httpd-2.2.8]$ cd /usr/local/apache2/bin
[vahid@localhost bin]$ ./apachectl start

توجه داشته باشید که چون ما در هنگام کامپایل، مسیری برای نصب Apache مشخص نکردیم، Apache در مسیر پیش فرض یعنی apach2//usr/local نصب گردید. می توانستیم با گزینه
--prefixمسیر نصب را در هنگام کامپایل مشخص کنیم. یعنی در هنگام ساختار سازی از دستور زیر استفاده کنیم.

./configure --prefix= path/apache2

با مشاهده صفحه زیر در مرورگر وب می توانید اطمینان حاصل کنید که Apache به درستی روی سیستم شما
نصب گردیده است.

 
2 -4 - کامپایل کردن Mod_Mono

برای کامپایل کردن mod_mono بعد از دانلود سورس برنامه از سایت، دستورات زیر را به ترتیب اجرا می کنیم.

[vahid@localhost ~]$./configure --with-apache2=/usr/local/apache2
[vahid@localhost ~]$ make
[vahid@localhost ~]$ make install

اگر نصب موفقیت آمیز باشد دو فایل به نامهای mod_mono.so mod_mono.so.0.0.0 در آدرس ماژولهای Apache (modules//usr/local/apache2 ) قرار می گیرند.

2 -5 - راه اندازی صفحه Asp.Net نمونه

برای راه اندازی یک سایت Asp.Net نمونه کافیست بسته Xsp را از سایت mono دانلود کنید و نصب نمایید. هنگامیکه XSP را نصب می نمایید یک سری صفحه های نمونه ASP.NET و وب سرویس نیز نصب می گردند. اگر مسیر نصب را تغییر نداده باشید در مسیر /usr/lib/xsp/test صفحات نمونه قرار می گیرند.فایلهای پوشه test را در خانه Apache (مثلا در rhel5 مسیر usr/local/apache2/htdocs به عنوان خانه Apache است) کپی کنید.
برای راه اندازی این نمونه صفحات کافیست فایل پیکر بندی mod_mono.conf را در فایل پیکر بندی Apache به صورت زیر وارد کنیم.

Include /usr/local/apache2/conf/mod_mono.conf

توجه داشته باشید که امکان دارد این روش صرفا برای نیازهای ساده جوابگو باشد و برای نیازهای پیچیده تر مجبور باشید فایل پیکر بندی Apache را تغییر دهید.
اکنون با restart کردن سرویس Apache قادر خواهید بود صفحه نمونه زیر را در مرور گر خود ببینید.



-------------------------------------------------

تهیه و تنظیم :سید وحید محمدی