استفاده از Cross-Platform در #C

یکشنبه 6 دی 1394

در این مقاله راجع به فرم ورک .NET و مبحث Cross-Platform صحبت خواهیم کرد.همچنین راجع به ورژن MONO ویژوال استودیو که امکان اجرای برنامه های تحت NET. را در سکوها یا Platform های مختلف می دهد ، صحبت خواهیم کرد.

استفاده از Cross-Platform در #C

Cross-Platform به نرم افزارهایی گفته می شود که در چندین سکو (چندین سیستم عامل ) قابلیت اجرا دارند.برنامه های Cross-Platform  به دو دسته کلی تقسیم می شوند. دسته اول که در آن نسخه های قابل اجرا در سکوهای مختلف توسط کامپایلر تولید میشود.دسته دوم این نرم افزارها به صورتی است که توسط مفسر های موجود در هر سکوی رایانه ای قابل اجرا هستند.

C# زبان قدرتمندی است که قابلیت نوشتن برنامه های Cross-platform را به ما میدهد. به این معنی که شما قادرید برنامه ایی که با زبان C3 نوشته شده است ، با همان قابلیت ها و امکانات در Mac و یا لینوکس هم اجرا بگیرید.

این قابلیت به خاطر ساختار .NET به وجود آمده است .همان طور که میدانید وقتی برنامه ای در دات نت نوشته می شود سریعا به زبان ماشین ترجمه نمی شود بلکه به یک زبان میانی به نام MSIL ترجمه می شود .سپس این زبان در سیستم عامل های مختلف بر اساس ساختار آن سیستم عامل به زبان ماشین ترجمه می شود.

همان طور که در شکل  می بینید CLR با ماژول ها کار نمی کند بلکه با اسمبلی کار می کند .اسمبلی یک مجموعه از ماژول های مدیریت شده است .

درون هر اسمبلی مجموعه ای از ماژول ها وجود دارند این ماژول ها برای اینکه تبدیل به اسمبلی شوند هر کدام دارای مانیفست هستند .علاوه بر این اگر این ماژول ها به ماژول های موجود در اسمبلی های دیگر Reference داده باشند این ارجاعات نیز توسط CLR مشخص خواهند شد.

وقتی کدی کامپایل می شود همراه آن متادیتا هم تولید می شود .متادیتا فهرستی از  اطلاعات موجود در کد کامپایل شده است .

Mono چیست؟

یک پروژه open Source است که توسط شرکت Novell ارائه شده است . منظور از MONO این بود که در داخل Unix برنامه های قابل اجرا بر روی سکوی .NET نوشت .

مونو قابلیت اجرا بر روی سکوهای مختلف از جمله لينوكس، FreeBSD ،UNIX ،Mac OSX را دارد.

مونو ابزاري براي كامپايل و ايجاد اسمبلي ها و برنامه هاي كاربردي نوشته شده با قابليت هاي دات نت است و اين امكان را مي دهد تا يك كد يكتا بدون نياز به بازنويسي يا كامپايل مجدد روي پلتفرم هاي مختلف  به راحتي و آساني قابل اجرا باشد.

برای شروع کار عملی ابتدا نسخه مونو برای ویندوز و یا اگر با mac کار می کنید نسخه mac را دانلود کرده و نصب کنید.برای نصب بر روی لینوکس از دستور زیر استفاده کنید .

sudo apt-get install mono-complete

برای نصب بر روی سیستم عامل ubonto از دستور زیر استفاده کنید

sudo apt-get install monodevelop

برای دیدن IDE به مسیر زیر بروید.

برای مثال در کد زیر برنامه ساده HelloWorld نشان داده شده است . می بینید که ساختار کدها در داخل IDE ویژوال و مونو با هم فرقی ندارد .

اگر برنامه را اجرا کنید شکل زیر را خواهید دید. این خروجی بر روی سایر سکوها هم به همین منوال است .

برنامه نویسی سی شارپ با استفاده از Collection

Collection  یا مجموعه شامل تعدادی از اشیا هم نوع است . که با هم در یک مجموعه هستند .الزاما همه این اشیا از یک نوع نیستند .

در کد زیر یک کلاس Person تعریف کرده ایم .یک مجموعه از جنس این کلاس تعریف کرده و آن را پر کرده ایم .توسط تابعی این اشیا را به رشته تبدیل کرده ایم و سپس آنها را چاپ می کنیم .

 class MainClass
    {
        public static void Main(string[] args)
        {
            // Create the list of the people.  
            var people = new List<Person>();
            people.Add(new Person
            {
                Name = "Somayeh-Hatami",
                Age = 20
            });
            people.Add(new Person
            {
                Name = "Sepinood-Soltanieh",
                Age = 19
            });
            people.Add(new Person
            {
                Name = "Nooshin-Taghian",
                Age = 15
            });
            people.Add(new Person
            {
                Name = "Shiva-Mohammadi",
                Age = 43
            });
            // Printing the details for people.  
            foreach (var person in people)
            {
                Console.WriteLine(person);
            }
        }
    }
    class Person
    {
        // Provide the attributes.  
        public string Name
        {
            get;
            set;
        }
        public int Age
        {
            get;
            set;
        }
        // Override the default ToString  
        public override string ToString()
        {
            return string.Format("[Person: Name={0}, Age={1}]", Name, Age);
        }
    }

بعد از اجرا خروجی به صورت زیر است .

استفاده از سی شارپ برای دسترسی به منابع آنلاین

در کدی که در زیر نوشته ایم قصد داریم از یک Api اطلاعاتی را دانلود کرده و نمایش دهیم .برای این کار باید فضای نام System.Net را به برنامه اضافه کنیم .

    class MainClass  
    {  
        public static void Main(string[] args)  
        {  
            downloadAndPrint();  
        }  
        private static void downloadAndPrint()  
        {  
            System.Threading.Tasks.Task.Run(async() =>  
            {  
                using(var client = new HttpClient())  
                {  
                    Console.WriteLine("Downloading the data...");  
                    var message = await client.GetStringAsync("http://afzaalahmadzeeshan.gear.host/api/sample");  
                    Console.WriteLine();  
                    Console.WriteLine(message);  
                }  
            }).Wait();  
            Console.WriteLine("Exiting the function..");  
        }  
    }  
}  

اگر قصد استفاده از سرویس Api در لینوکس را داشته باشیم، باز هم به همین منوال عمل می کردیم .اگر به کد توجه کرده باشید از امکان دیگر سی شارپ به نام Async هم استفاده کرده ایم .لازم به ذکر است که با استفاده از مونو و سایر سکوها هم این امکان در دسترس است .

بعد از اجرا شکل زیر را خواهید دید.

آموزش سی شارپ

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 4k بازدید
  • 4 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید