آنچه در این صفحه می خوانید:
معرفی سی شارپ
سی شارپ (#C) یک زبان برنامه نویسی مولتی پارادایم همه منظوره است که شامل تایپ قوی، اعلامی، کاربردی، عمومی، شی گرا و از نظر لغوی محدود شده و همچنین از رشته های برنامه نویسی مبتنی بر کلاس و مؤلفه است. در سال 2000 توسط مایکروسافت به عنوان بخشی از دات نت توسعه داده شد و بعداً توسط ECMA و ISO به عنوان یک استاندارد بین المللی تصویب شد. Mono نام پروژه رایگان و اوپن سورس برای تهیه کامپایلر و ران تایم زبان است. سی شارپ یکی از زبان های برنامه نویسی است که برای زیرساخت زبان مشترک (CLI) طراحی شده است. سی شارپ یک زبان همه کاره است که توسط آن می توانید برنامه نویسی برنامه های ویندوز، برنامه های گوشی های هوشمند، برنامه نویسی سمت سرور، بازی سازی و غیره را انجام دهید.
استاندارد Ecma این اهداف طراحی را برای #C لیست می کند:
- یک زبان برنامه نویسی ساده، مدرن، همه منظوره و شی گرا باشد.
- این زبان و پیاده سازی های موجود در آن باید از اصول مهندسی نرم افزار مانند بررسی تایپ قوی، چک کردن مرزهای آرایه، تشخیص تلاش برای استفاده از متغیرهای ناشناخته و جمع آوری زباله خودکار پشتیبانی کند. استحکام نرم افزار، دوام و بهره وری برنامه نویسان دارای اهمیت هستند.
- این زبان برای استفاده در توسعه اجزای نرم افزاری مناسب برای استقرار در محیط های توزیع شده در نظر گرفته شده است.
- قابلیت حمل برای سورس برنامه نویسی و برنامه نویسان بسیار مهم است، به خصوص کسانی که قبلاً با C و ++C آشنا هستند.
- پشتیبانی بین المللی بسیار مهم است.
- #C برای نوشتن برنامه های کاربردی که برای هر دو سیستم میزبان و جاسازی شده، اعم از سیستم های بزرگی که از سیستم عامل های پیشرفته استفاده می کنند یا سیستم های کوچک و دارای عملکردهای اختصاصی، مناسب باشد.
- اگرچه برنامه های #C با توجه به نیاز حافظه و قدرت پردازش از نظر اقتصادی مقرون به صرفه هستند، اما این زبان برای رقابت مستقیم با عملکرد C یا زبان اسمبلی درنظر گرفته نشده است.
تاریخچه سی شارپ
در طی توسعه فریمورک دات نت، کتابخانه های کلاس ابتدا با استفاده از یک سیستم کامپایلر کد مدیریت شده به نام Simple Managed C نوشته شده اند. در ژانویه سال 1999، Anders Hejlsberg را برای ساختن زبان جدید به نام Cool، تشکیل داد که در برابر "زبان شی گرا مانند C" قرار داشت. مایکروسافت تصمیم نگه داشتن نام "Cool" را به عنوان نام نهایی زبان در نظر گرفته بود اما به دلایل برند تجاری این کار را نکرد. در زمان اعلام پروژه NET. در کنفرانس توسعه دهندگان حرفه ای ژوئیه 2000، این زبان به #C تغییر نام داده شد و کتابخانه های کلاس و ران تایم ASP.NET به #C منتقل شد.
ویژگی های سی شارپ
- قابلیت حمل
#C زبان برنامه نویسی است که به طور مستقیم منعکس کننده زیرساخت زبان مشترک (CLI) است. بسیاری از انواع ذاتی آن مطابق با انواع ارزشی است که توسط فریمورک CLI پیاده سازی شده است. با این حال، مشخصات زبان الزامات تولید کد کامپایلر را بیان نمی کند: یعنی اینگونه بیان نمی کند که کامپایلر #C باید یک Runtime Common Language را هدف قرار دهد، یا یک زبان Intermediate Common (CIL) ایجاد کند، یا فرمت خاصی را تولید کند. از لحاظ تئوری، یک کامپایلر #C می تواند کد ماشین را مانند کامپایلرهای سنتی ++C یا Fortran تولید کند.
- متا پروگرمینگ
برنامه نویسی metaprogramming از ویژگی های #C و بخشی از این زبان است. بسیاری از این ویژگی ها عملکرد دستورالعمل های پیش پردازنده در بستر GCC و ++VisualC را در بر می گیرند.
- متد ها و توابع
متد در #C عضو یک کلاس است که می تواند به عنوان یک تابع (دنباله ای از دستورالعمل ها) مورد استفاده قرار گیرد، نه اینکه صرفاً توانایی نگه داشتن ارزش یک ویژگی کلاس را داشته باشد. متد عبارت است از: کلمات کلیدی اصلاح کننده دامنه اختیاری(Private)، مشخصات صریح نوع بازگشت آن (مانند int، یا کلمه کلیدی void اگر هیچ مقدار برگشتی داده نشود)، نام روش و در آخر، یک توالی پرانتز از مشخصات پارامتر جدا از کاما، هر یک از نوع پارامتر، نام رسمی و اختیاری آن تشکیل شده است، یک مقدار پیش فرض است که در هر زمان وجود ندارد ارائه شده است.
- خواص (Property)
#C خواص را به عنوان syntactic sugar برای یک الگوی رایج فراهم می کند که در آن یک جفت روش، دسترسی (گیرنده) و جهش دهنده (تنظیم کننده) عملیات را با یک ویژگی واحد از یک کلاس جمع می کنند.
سی شارپ دارای یک نوع داده بولین (boolean) است. برخی از عبارتها مانند while و if که شرطی هستند، نیازمند یک تابع نوع بولین هستند. همانطور که سی پلاس پلاس نیز دارای نوع داده بولین است، این نوع داده به راحتی میتواند به Integer ها تبدیل شود. کامپایلر سی شارپ برنامهنویس را در این شرایط مجبور به استفاده از عباراتی میکند که به درستی یک مقدار bool را برمیگردانند؛ بنابراین دستوری مانند (if(a = b باعث بروز خطا میشوند که در این صورت به جای = بایستی از == استفاده شود.
- دسترسی به حافظه
در سی شارپ، اشاره گرهای به حافظه بایستی فقط در داخل بلوکهای unsafe استفاده شوند و برنامه در این حالت برای اجرا نیاز به اجازه کاربر دارد. بیشتر دسترسی آبجکت از طریق آبجکت امن است که یا همیشه در حال اشاره به آبجکت صحیح موجود است یا یک مقدار Null دارد. اشارهگری به آبجکت بدون استفاده یا بلاک حافظه رندم غیرممکن است. اشاره گر نا امن میتواند به نمونهای از value-type، آرایه، رشته یا بلاکی که حافظه به آن داده شده است اشاره نماید. کدی که به عنوان نا امن علامت نخورده باشد، هنوز میتواند اشاره گرها را از سامانه بازیابی یا در آن ذخیره کند ولی نمیتواند مرجع جدیدی به آنها اختصاص دهد. حافظه ساماندهی شده نمیتواند صریحاً آزاد شود، ولی بهطور خودکار بدون استفاده تلقی میشود. انتخاب آدرسهای بدون استفاده حافظه نفوذ ناپذیر است.
- پلی مورفیسم
وراثت چندگانه از کلاسها در این زبان پشتیبانی نمیشود. البته یک کلاس امکان ارث بری از تعداد نامحدود واسط ها را دارد. پشتیبانی نکردن از وراثت چندگانه به دلیل اهداف معماری این زبان در CLI و برای جلوگیری از پیچیدگی است. در عوض میتوان از اینترفیس های مختلف استفاده کرد. یعنی برای یک کلاس که احتمالاً فرزند کلاسی دیگر است میتوان چندین اینترفیس را پیادهسازی نمود.
سی شارپ بسیار بی خطر تر از سی پلاس پلاس است. تنها تبدیلات ضمنی مثل تبدیل نوع داده کوچکتر به بزرگتر یا تبدیل نوع مشتق شده به نوع پایه بهطور پیشفرض و بدون خطا صورت میپذیرد. هیچ تبدیل ضمنی ای میان Boolean ها و Integer ها وجود ندارد و هر تبدیل user-defined بایستی به صراحت با یکی از کلمات explicit یا implicit نشانه گذاری شود.
مزایای زبان سی شارپ باید توسط هر برنامه نویس یا کسانی که به یک زبان برنامه نویسی علاقه مند هستند، شناخته شود. بسیاری از مزایای زبان #C وجود دارد که در اینجا شرح داده شده است:
- شی گرا :زبان برنامه نویسی #C یک زبان خالص محور است به گونه ای که به شما امکان می دهد برنامه های قابل نگهداری مدولار و کدهای قابل استفاده مجدد ایجاد کنید. این یکی از بزرگترین مزایای زبان های #C نسبت به زبان ++C است.
- کراس پلتفرم :مهمترین نیاز برای برنامه نویسی #C، فریمورک دات نت است. سیستم ها برای اجرای خوب برنامه باید NET Framework. را نصب داشته باشند.
- جمع آوری زباله خودکار :در برنامه نویسی #C، یک سیستم بسیار کارآمد نصب شده است که زباله های موجود در سیستم را جمع آوری می کند. زبان #C در مدیریت سیستم بسیار کارآمد است زیرا باعث ایجاد اختلال در سیستم نمی شود.
- جلوگیری از مشکل نشت حافظه :مهمترین مزیت زبان #C، تهیه پشتیبان از حافظه قوی آن است. زبان برنامه نویسی #C حاوی پشتیبان حافظه بالا است به طوری که مشکل نشت حافظه و دیگر انواع مشکل آن اتفاق نمی افتد همانطور که در مورد زبان ++C اتفاق می افتد.
- توسعه آسان :زبان #C دارای یک کلاس کتابخانه ای غنی است که بسیاری از کارکردها را آسان می کند تا عملی شود. زبان برنامه نویسی #C بیشتر برنامه نویسان جهان را تحت تأثیر قرار داده و در دنیای برنامه نویسی دارای سابقه ای است.
- ادغام بهتر :برنامه نوشته شده در NET. در مقایسه با سایر فناوری های دات نت دارای ادغام و توانایی تفسیر بهتری خواهد بود. برنامه نویسی #C بر روی CLR اجرا می شود که ادغام آن با مؤلفه های نوشته شده به زبان های دیگر را آسان می کند.
- سود :هزینه نگهداری کمتر است و نسبت به سایر زبان ها کارآمدتر است. زبان #C می تواند با کمک فریمورک Xamarin برنامه های نیتیو iOS، Android و Windows Phone را توسعه دهد.
- سینتکس آشنا :انتخاب و کار با تولید دانش با زبان های C، C ++، Java بسیار آسان است زیرا سینتکس اصلی آن شبیه به زبان های سبک C است.
- پشتیبانی برنامه نویسی :می توانید برای برنامه نویسی #C از مایکروسافت پشتیبانی بخرید. در صورت بروز هر مشکلی می توانید آن را با پشتیبانی مایکروسافت حل کنید.
- ویژگی ها و فهرست های ارائه شده :برنامه نویسی #C دارای ویژگی هایی مانند Properties و Indexers است که به زبان جاوا در دسترس نیست.
- مفید ترین :این نرم افزار می تواند با کمک فریمورک Xamarin برنامه های نیتیو iOS، Android و Windows Phone را توسعه دهد. با این حال، همچنین برای تهیه یک برنامه ویندوز (موبایل، دسکتاپ) بسیار مورد استفاده قرار می گیرد.
- قدرتمند ترین :زبان #C قدرتمندترین زبان برنامه نویسی برای فریمورک NET. است.
کتابخانه های سی شارپ
Autofac
Autofac یک کانتینر IoC برای Microsoft .NET است. این کتابخانه وابستگی بین کلاس ها را کنترل می کند به طوری که برنامه ها در هنگام بزرگ شدن در اندازه و پیچیدگی بسیار ساده می شوند.
AutoMapper
این یک کتابخانه کوچک ساده است که برای حل یک مشکل فریبنده پیچیده ساخته شده است خلاص شدن از کد که نقشه ای از یک آبجکت به دیگری است.
FluentValidation
FluentValidation یک کتابخانه اعتبار سنجی NET محبوب برای ساخت قوانین اعتبار سنجی به شدت تایپ شده است. این یک کتابخانه اعتبار سنجی کوچک برای NET. است که از یک رابط روان و عبارات لامبدا برای قوانین اعتبارسنجی ساختار استفاده می کند.
Hangfire
روشی آسان برای انجام پردازش کار پس زمینه در برنامه های دات نت و بدون سرویس ویندوز یا فرآیند جداگانه کاربرد دارد.
Swagger (Swashbuckle) - OpenAPI
توسعه API را برای کاربران، تیم ها و شرکت های دارای اوپن سورس و ابزار حرفه ای Swagger ساده کنید. ابزار Swagger برای API با ASP.NET Core ساخته شده است. مستندات API زیبا، از جمله UI را برای کشف و آزمایش عملیات، مستقیماً از مسیرها، کنترلرها و مدل های خود ایجاد کنید. علاوه بر ژنراتور Swagger 2.0 و OpenAPI 3.0، Swashbuckle همچنین نسخه جاسازی شده ای از swagger-ui عالی را ارائه می دهد که از تولید Swagger JSON تولید شده است. این بدان معناست که می توانید API خود را با مستندات زنده که همیشه همگام با آخرین کد است، تکمیل کنید. از همه مهمتر، نیاز به حداقل کدگذاری و نگهداری دارد و به شما امکان می دهد تا بر ساخت یک API عالی متمرکز شوید.
Serilog
Serilog یک کتابخانه ورود به سیستم تشخیصی برای برنامه های دات نت است. تنظیم آسان، دارای API تمیز و اجرا بر روی تمام سیستم عامل های جدید NET. است. در حالی که حتی در ساده ترین برنامه ها مفید است، پشتیبانی Serilog برای ورود به سیستم ساختاری در هنگام ابزار دقیق برنامه ها و سیستم های پیچیده، توزیع و ناهمزمان می درخشد.
xUnit
xUnit.net یک ابزار تست واحد اوپن سورس، با محوریت جامعه است که برای فریمورک NET. استفاده می کند. xUnit.net که توسط مخترع اصلی NUnit v2 نوشته شده است، آخرین فناوری برای تست واحد اف شارپ (#F)، سی شارپ و وی بی دات نت (VB.NET) و سایر زبان های NET. است. xUnit.net با ReSharper،CodeRush،TestDriven.NET کار می کند.
Moq
محبوب ترین و دوستانه ترین کتابخانه mocking برای دات نت است. Moq تنها کتابخانه mocking برای NET است که از مزایای کامل Linq و اصطلاحات لامبدا استفاده کند و این باعث می شود پربار و بی خطر و سازگار با refactoring باشد. همچنین از رابط های mocking و همچنین کلاس ها پشتیبانی می کند. API آن بسیار ساده و واضح است و نیازی به دانش قبلی یا تجربه قبلی در مورد مفاهیم mocking نیست.
چرا باید از زبان سی شارپ استفاده کنیم؟
به طور کلی، یادگیری برنامه نویسی رایانه می تواند تا حد زیادی به بهبود توانایی حل مسئله کمک کند. اغلب اوقات، ما در حل مشکل در مراحل مختلفی که برای حل مسئله مورد نیاز است، مشکل داریم. شاید ما راه حل را ببینیم، اما نمی دانیم چگونه به آن برسیم. با این حال، این دقیقاً همان کاری است که ما باید یاد بگیریم که به منظور ارائه دستورالعمل های رایانه ای در مورد چگونگی حل مشکلات خود، انجام دهیم. برنامه نویسان رایانه اغلب متخصصان در حل مشکل هستند زیرا این همان کاری است که ما بطور روزانه انجام می دهیم تا ماشین آلات را برای درک جریان کار انسانی بدست آوریم. بنابراین، هر شخصی که یاد می گیرد همان کار را انجام دهد، می رود به نفع مهارت حل مسئله، سودمندی شناختی کسب کند.
- ابزار ها
اما چرا به طور خاص #C را یاد می گیریم وقتی که بسیاری از زبان های برنامه نویسی وجود دارد؟ شاید دلیل اصلی یادگیری سی شارپ، میزان عظیم ابزارها و فریمورک هایی باشد که شما برای پشتیبانی از این زبان دریافت می کنید، و همه این موارد توسط مایکروسافت پشتیبانی می شوند. تقریباً هر توسعه دهنده ای به آسانی می پذیرد که ویژوال استودیو یکی از مهمترین، اما نه بیشترین، محیط های توسعه ممتاز و قدرتمند در بازار است. فریمورک دات نت صدها کتابخانه برای ساخت وب سایت، اجرای امنیت، کار با سیستم فایل و غیره فراهم می کند.
اعتراض اصلی به همه این موارد قبلاً این بود که "اما اوپن سورس نیست"، که مطمئناً یک نگرانی مشروع بود. با این حال، در نوامبر سال 2014، مایکروسافت اعلام کرد که می تواند فریمورک دات نت را اوپن سورس کند و مجوزهای رایگان ویژوال استودیو را فراهم کند.
- پشتیبانی
به ویژه، #C به شدت توسط مایکروسافت پشتیبانی می شود، با ویژگی های جدید و پیشرفت های سینتکس بسیار سریعتر از سایر زبان های دیگر مانند جاوا استفاده می شود. اگر از ویژگی های زبانی مانند LINQ و دیگر زبان های شوگر سینتکس استفاده می کنید، ممکن است #C را ترجیح دهید.
- محبوبیت
#C همچنین یکی از محبوب ترین زبان ها و بسیار شبیه جاوا است. این یک مورد مهم برای توسعه دهندگان است زیرا محبوبیت یک زبان نسبتاً متناسب با میزان پشتیبانی مواد برای آن زبان به صورت آنلاین است. غالباً ما برای کمک به حل مسئله، اغلب Google یا Stack Overflow را برای کمک به شما حل می کنیم، و غالباً پاسخ های موجود در #C یا جاوا خواهد بود. به عنوان یک توسعه دهنده یکی از این زبان ها، به ویژه مبتدی، این امر می تواند زمان زیادی را در توانایی درک راه حل های داده شده یا یافتن راه حل برای دوره مشکل صرفه جویی کند. هنگام شروع به یادگیری یک زبان جدید، باید با دقت در نظر بگیرید که آیا می خواهید یک زبان محبوب را بیاموزید یا چیزی مبهم تر که ممکن است مستندات کمتری داشته باشد.
- انعطاف پذیری
انعطاف پذیری #C در مقایسه با برخی از زبان ها نیز فواید بزرگی دارد. تنوع برنامه هایی که می توانند با برنامه های C#،.NET و Visual Studio ایجاد شوند، بی حد و حصر است: برنامه های نیتیو ویندوز، REST APIS، برنامه های تلفن همراه، وب سایت ها، بازی ها و حتی برنامه های نیتیو اندروید یا iOS با چند فریمورک اضافی مانند Xamarin یا Mono . اگرچه انجام همه این کارها با زبان های دیگر نیز امکان پذیر است، اما معمولاً این کار را با استفاده از انواع مختلفی از ابزارهای شخص ثالث به صورت همزمان انجام می دهد تا همه این کارها انجام شود، در حالی که توسعه دهندگان #C مجموعه ای از ابزارهای کاملاً منسجم با پشتیبانی مایکروسافت را در اختیار دارند.
الگوهای طراحی (Design Patterns) در سی شارپ
الگوهای طراحی راه حل هایی برای مشکلات طراحی نرم افزار است که بارها و بارها در توسعه برنامه دنیای واقعی پیدا می کنید. الگوهای طراحی مربوط به طرح های قابل استفاده مجدد و تعامل اشیا هستند. سورس کد سی شارپ برای هر الگوی به دو شکل ارائه می شود: ساختاری و دنیای واقعی. کد ساختاری از نام های نوع استفاده شده در تعریف الگوی و نمودارهای UML تعریف می کند. کد نویسی شرایط برنامه نویسی در دنیای واقعی را فراهم می کند که در آن شما می توانید از این الگوهای استفاده کنید.
فرم سوم، NET. بهینه سازی شده، الگوهای طراحی را نشان می دهد که کاملاً از ویژگی های داخلی NET 4.5 داخلی استفاده می کند. این موارد و موارد دیگر در فریمورک الگوی طراحی NET 4.5. موجود است.
کاربرد سی شارپ
سی شارپ برای ساخت بازی با استفاده از موتور بازی Unity که امروزه محبوب ترین موتور بازی است، بسیار مورد استفاده قرار می گیرد. بیش از یک سوم بازی های برتر با یونیتی ساخته شده اند و تقریباً 770 میلیون کاربر فعال بازی برای بازی هایی که با موتور یونیتی ساخته شده وجود دارد. یونیتی همچنین برای واقعیت مجازی (VR) استفاده می شود، که 90٪ از کل Samsung Gear و 53٪ از کل بازی های Oculus Rift VR با استفاده از Unity ساخته شده اند. سی شارپ ابزاری بسیار محبوب برای ایجاد این برنامه ها است، بنابراین برای هر برنامه نویس که امیدوار است به صنعت توسعه بازی یا برای هر کسی که علاقه مند به واقعیت مجازی باشد، می تواند یک انتخاب عالی باشد. سی شارپ برای ساختن برنامه های NET. استفاده می شود. تمام برنامه های کاربردی که می توانید در دات نت توسعه دهید و همچنین می توانید از سی شارپ در آن برنامه ها استفاده کنید. انواع مختلفی از برنامه های کاربردی ایجاد شده در NET وجود دارد. بسیاری از برنامه های رایج توسعه یافته در #C عبارتند از:
- سرویس های Windows برای فرآیند طولانی مدت بدون UI
- برنامه های وب برای سرور و کلاینت
- برنامه های کاربردی ویندوز که روی دسکتاپ اجرا می شود.
- برنامه های وب سرویس هایی که عملکرد HTTP را ارائه می دهند.
- بازی سازی با استفاده از Unity
- برنامه های کنسول که UI ندارند.
- برنامه های WokFlow برنامه هایی که فرایندها را خودکار می کنند.
- برنامه های كتابخانه ای Class كه برنامه های کاربردی دیگر را فراهم می كند.
توسعه اپلیکیشن دسکتاپ با سی شارپ
پلتفرم دات نت را گسترش می دهد تا امکان توسعه برای دستگاه های ویندوز 10 مانند رایانه های شخصی، تبلت ها، تلفن همراه، Xbox،HoloLens،Surface Hub و Windows 10 IoT Core را فراهم کند. UWP یک فریمورک UI برای نوشتن برنامه های رسپانسیو را فراهم می کند که تعدادی از اندازه های صفحه و مدل های تعامل مانند لمس، موس و صفحه کلید، کنترلر بازی و قلم را پشتیبانی می کند. Windows Forms یک کتابخانه کلاس رابط کاربری گرافیکی (GUI) است که در Net Framework. همراه است. هدف اصلی آن ارائه رابط کاربری آسان تری برای توسعه برنامه های دسکتاپ، تبلت ها، رایانه های شخصی است. همچنین به عنوان WinForms نامیده می شود. برنامه هایی که با استفاده از Windows Forms یا WinForms تولید می شوند به عنوان برنامه های Windows Forms که روی رایانه دسکتاپ اجرا می شوند شناخته شده اند. WinForms فقط برای توسعه برنامه های Windows Forms است و برای برنامه های وب قابل استفاده نیست. برنامه های WinForms می توانند حاوی یک نوع کنترل مختلف مانند لیبل ها، لیست باکس، راهنمای ابزار و غیره باشند.
توسعه اپلیکیشن موبایل با سی شارپ
با استفاده از ویژوال استودیو می توانید برنامه هایی را برای دستگاه های Android، iOS و Windows ایجاد کنید. برنامه های خود را با استفاده از #C و دات نت فریمورک، اچ تی ام ال (HTML) و جاوااسکریپت (Javascript) یا ++C بسازید.
زامارین یک ابزار برنامهنویسی چندسکویی است که با استفاده از سی شارپ می توان برای اندروید، آی او اس (iOS)، ویندوزفون کدنویسی کرد. زبان #C به شما این امکان را می دهد که از یک Syntax و ویژگی های پیشرفته مانند Generics، لینک (LINQ) و کتابخانه Parallel Task استفاده کنید. ابزار IDE به ویژوال استودیو در مک و ویندوز اجازه می دهد تا شما بتوانید پروژه های Xamarin را ایجاد کنید. یکی از راه های ساخت رابط کاربر یا UI استفاده از Xamarin.forms است. Xamarin از دستگاه های wearable نیز پشتیبانی می کند. شما می توانید برنامه های نیتیو را برای Android Wear و Apple Watch نیز ایجاد کنید.
فروشگاه کامپوننت Xamarin به شما امکان افزودن قابلیت های بیشتر به برنامه های خود را با دانلود پلاگین های ساده می دهد. شما همچنین می توانید روش های احراز هویت محبوب را اضافه کنید. همچنین افزونه هایی برای افزودن پشتیبانی از صورتحساب و سایر ویژگی ها نیز در دسترس هستند. بیشتر پلاگین های محبوب چندسکویی هستند اما پلاگین های خاص پلتفرم نیز وجود دارند، برای مثال، پلاگین پشتیبانی از پرداخت صورت حساب در Google Play.
شرکت نرم افزاری زامارین در کالیفرنیا/سانفرانسیسکو در سال ۲۰۱۱ توسط مهندسان پروژه مونو (Mono) و تحت مالکیت مایکروسافت تاسیس شد. شرکت مایکروسافت از StackOverFlow و گیت هاب (Github) زامارین پشتیبانی می کند. زامارین برای توسعه دهنده ها ابزارهایی فراهم می کند که می توانند به آنها در ساخت اپلیکیشن تلفن همراه چندسکویی کمک کند. اپلیکیشن ها می توانند تمام ویژگی های نیتیو را داشته باشند و همچنین همزمان یک codebase مشترک را نیز به اشتراک بگذارند. ابزارهای زامارین با ویژوال استودیو برای دانلود در دسترس هستند و شما می توانید به طور مستقیم برنامه های اندروید، iOS و ویندوز را از ویژوال استودیو خود ایجاد کنید. بیشتر کدها در سی شارپ نوشته شده است. بنابراین اگر دانش سی شارپ را دارا هستید، شما نیازی به یادگیری جاوا، Objective-C و یا Swift برای ساخت برنامه های خود ندارید. اگر شما یک مبتدی هستید، پس به جای فرایند یادگیری متعارف، مسیر Xamarin را در نظر بگیرید، که می تواند برنامه های بیشتری را برای چند سیستم عامل به شما آموزش دهد.
توسعه وب با سی شارپ
ای اس پی دات نت (ASP.NET) به شما امکان می دهد برنامه های کراس پلتفرم وب با عملکرد بالا را ایجاد کنید. الگویی مانند MVC و پشتیبانی داخلی از Dependency Injection به شما امکان می دهد برنامه هایی بسازید که آزمایش و نگهداری آنها ساده تر است. NET Core. و دات نت کور (ASP.NET Core) چندین مزیت نسبت به توسعه سنتی دات نت ارائه می دهد. اگر موارد زیر برای موفقیت برنامه شما مهم هستند باید از NET Core. برای برنامه های سرور خود استفاده کنید:
- پشتیبانی از قابلیت کراس پلتفرم
- استفاده از میکرو سرویس ها
- استفاده از کانتینر داکر (Docker)
- عملکرد بالا و مقیاس پذیری
- نسخه به صورت Side-by-side از نسخه های دات نت توسط برنامه بر روی همان سرور.
برنامه های دات نت سنتی می توانند بسیاری از این الزامات را پشتیبانی کنند، اما ASP.NET Core و NET Core. برای ارائه پشتیبانی بهتر از سناریوهای فوق بهینه شده اند.
ساخت بازی با یونیتی و سی شارپ
ساخت بازی ویدیویی فرآیندی است که در آن بازیهای ویدئویی عرضه میشوند. توسعه بازی های کامپیوتری و کنسول های تجاری سنتی معمولا توسط یک ناشر تامین می شود. تهیهکننده و ناشر معمولاً خارج از تیم طراحی و از شرکتهای بیرونی هستند و می توانند در طول چند سال این فرآیند را به اتمام برسانند. بازی های Indie معمولا زمان و پول کمتری می گیرند و می توانند توسط افراد و توسعه دهندگان کوچک تولید شوند. صنعت بازی مستقل افزایش یافته است و با رشد سیستم های جدید توزیع آنلاین مانند Steam و Uplay و همچنین مارکت های بازی موبایل برای دستگاه های Android و iOS این روند تسهیل شده است.
یک موتور بازی سازی چندسکویی است که برای ساخته بازی های دو بعدی و سه بعدی برای کامپیوترهای شخصی، کنسولهای بازی، دستگاههای همراه و وب سایتها استفاده میشود. یونیتی از جمله موتورهای بازی ساز است که میتواند از زبانهای برنامهنویسی معروف پشتیانی کند. زبانهای برنامهنویسی سیشارپ، جاوااسکریپت، در یونیتی قابل استفاده هستند. زبان سیشارپ قابلیت شی گرایی دارد و به واسطه این، قابلیتهایی همچون ارثبری را نیز دارا میباشد، این قابلیتها در پروژههای بزرگ برنامهنویسی بسیار سودمند هستند.
سی شارپ برای هوش مصنوعی
در علم رایانه، هوش مصنوعی (Artificial Intelligence) که گاه به آن هوش ماشین نیز گفته می شود، برخلاف هوش طبیعی است که توسط انسان نشان داده شده است. به اصطلاح هوش مصنوعی اغلب برای توصیف ماشین ها یا رایانه ها استفاده می شود و از عملکردهای شناختی که با ذهن انسان در ارتباط است، مانند یادگیری و حل مسئله استفاده می کند. قابلیت های ماشین مدرن که به طور کلی به عنوان AI طبقه بندی می شوند شامل درک موفقیت آمیز گفتار انسان، رقابت در بالاترین سطح در سیستم های بازی استراتژیک مانند شطرنج و گو، اتومبیل های خودران، مسیریابی هوشمند و در شبکه های تحویل محتوا و شبیه سازی های نظامی است.
ML.NET یک فریمورک یادگیری ماشینی اوپن سورس و رایگان است که بطور ویژه برای توسعه دهندگان دات نت ساخته شده است. در حالی که می توانید به خودتان اصول یادگیری ماشین را آموزش دهید، مدل های یادگیری ماشین سفارشی را در برنامه های خود توسعه داده و ادغام کنید. ML.NET یک بستر گسترده است که قدرت ها ویژگی های مایکروسافت مانند Windows Hello،Bing Ads، ایده های طراحی پاورپوینت و موارد دیگر را به رسمیت می شناسند. با استفاده از ML.NET، می توانید مدل های ML دلخواه را با استفاده از #C یا #F ایجاد کنید بدون اینکه مجبور به ترک اکوسیستم NET. شوید. همچنین به شما اجازه می دهد تا از تمام دانش، مهارت ها، کد ها و کتابخانه هایی که قبلاً به عنوان یک توسعه دهنده دات نت فرا گرفته اید، استفاده کرده تا بتوانید به راحتی یادگیری ماشین را در برنامه های وب، تلفن همراه، دسکتاپ، بازی و اینترنت اشیا خود به کار بگیرید. ML.NET به شما امکان می دهد یادگیری ماشین را به برنامه های دات نت، در سناریوهای آنلاین یا آفلاین اضافه کنید. با استفاده از این قابلیت، می توانید پیش بینی خودکار را با استفاده از داده های موجود در برنامه خود بدون نیاز به اتصال به یک شبکه انجام دهید.
بلاک چین و سی شارپ
بلاک چین (Blockchain) یک لیست در حال رشد از سوابق به نام بلوک است که با استفاده از رمزنگاری به یکدیگر پیوند می دهند. هر بلوک حاوی یک هش رمزنگاری از بلوک قبلی، یک جدول زمانی و داده های معامله (که عموماً به عنوان یک درخت مرکل نشان داده می شود) است. با این طراحی، بلاک چین در برابر تغییر داده ها مقاوم است. این "یک دفترکل باز و توزیع شده است که می تواند معاملات بین دو طرف را به طور موثر و به روشی قابل اثبات و دائم ثبت کند". برای استفاده به عنوان یک دفترکل توزیع شده، یک بلاک چین معمولاً توسط یک شبکه peer-to-peer مدیریت می شود که بصورت جمعی به پروتکل برای ارتباطات بین گره و اعتبارسنجی بلوک های جدید پایبند هستند. پس از ثبت، داده ها در هر بلوک معین، بدون تغییر کلیه بلوک های بعدی، که نیاز به اجماع اکثریت شبکه دارد، نمی توانند به صورت برگشتی تغییر کنند. اگرچه سوابق بلاک چین تغییر ناپذیر است، ممکن است بلاک چین با طراحی ایمن در نظر گرفته شود و یک سیستم محاسباتی توزیع شده با تلرانس بالا را مثال بزند. بنابراین اجماع غیر متمرکز با بلاک چین ادعا شده است.
Blockchain یک سیستم عامل و زبان agnostic است. یعنی می توانید از هر زبان برنامه نویسی محبوب برای ایجاد blockchain استفاده کنید. برخی از بلاکچین های محبوب با استفاده ازسی پلاس پلاس ( ++C)، جاوا (Java)، جاوااسکریپت (Javascript)، گو (GO)، پایتون (Python)، #C، روبی (Ruby)، Solid و پی اچ پی (PHP) توسعه یافته اند. #C یکی از محبوب ترین زبان برنامه نویسی است که توسط مایکروسافت ساخته شده است. اکنون، #C و .NET Core اوپن سورس هستند و با سرعت بیشتری در حال رشد هستند.
LINQ در سی شارپ
Language Integrated Query به اختصار لینک (LINQ)، یک مدل و روش برنامه نویسی مایکروسافت است که اساسا قابلیت های پرس و جو رسمی را به زبان های برنامه نویسی مبتنی بر دات نت اضافه می کند. LINQ یک سینتکس جمع و جور، مفسر و قابل فهم را برای تغییر داده ها ارائه می دهد. LINQ از یک سینتکس مشابه اس کیو ال استفاده می کند تا عبارات پرس و جو را فراتر از قابلیت های SQL جاسازی شده در زبان های برنامه نویسی ایجاد کند.
LINQ شش روش استاندارد برای دسترسی به داده ها ارائه می دهد. البته، به معنای واقعی کلمه ده ها ارائه دهنده شخص ثالث برای LINQ وجود دارد که یکی از نقاط قوت LINQ به عنوان یک فناوری است. برای دسترسی به SQL، مایکروسافت LINQ را به SQL ارائه می دهد. مایکروسافت همچنین از فناوری های دیگری مانند ADO.NET مستقیم، Entity Framework و سرویس های داده WCF برای دسترسی به پایگاه داده پشتیبانی می کند. اگرچه بیشتر این فناوری ها از قابلیت های منحصر به فردی برخوردار هستند، اما تعدادی از آنها نیز در برخی از سطح با هم همپوشانی دارند.
سی شارپ و پایگاه داده
سی شارپ و دات نت می توانند با اکثر پایگاه داده ها کار کنند که رایج ترین آنها اوراکل و اس کیوال سرور است. اما با وجود هر پایگاه داده، منطق کار با همه آنها اکثراً یکسان است. پایگاه داده مجموعه ای سازمان یافته از اطلاعات ساختار یافته یا داده ها است که معمولا بصورت الکترونیکی در یک سیستم رایانه ای ذخیره می شود. سیستم مدیریت پایگاه داده (DBMS) نرم افزاری است که با کاربران نهایی، برنامه ها و خود پایگاه داده در تعامل و ضبط اطلاعات است.
علاوه بر این، نرم افزار DBMS شامل امکانات اصلی ارائه شده برای اداره پایگاه داده است. از مجموع دیتابیس، DBMS و برنامه های مرتبط می توان به عنوان "سیستم پایگاه داده" نام برد. غالباً اصطلاح "بانک اطلاعاتی" نیز به کار می رود تا به راحتی از هر DBMS، سیستم پایگاه داده یا برنامه کاربردی مرتبط با پایگاه داده استفاده شود. داده ها در متداول ترین انواع پایگاه داده ها در حال فعالیت امروزه به طور معمول در ردیف ها و ستون ها در یک سری جداول مدل سازی می شوند تا پردازش و پرس و جو داده ها کارآمد باشد. سپس بر روی داده ها می توان به راحتی قابلیت دسترسی، مدیریت، اصلاح، به روز رسانی، کنترل و سازماندهی را قرار داد. اکثر بانک های اطلاعاتی برای نوشتن و جستجوی داده از زبان پرس و جو ساختار یافته (SQL) استفاده می کنند.
دانشمندان رایانه ممکن است سیستم های مدیریت پایگاه داده را طبق مدل های پایگاه داده ای که پشتیبانی می کنند طبقه بندی کنند. پایگاه داده رابطه ای در دهه 1980 حاکم شدند. این داده های مدل به صورت ردیف و ستون در یک سری جداول و اکثریت قریب به اتفاق از اس کیوال (SQL) برای نوشتن و جستجوی داده استفاده می کنند. در دهه 2000، پایگاه داده غیر رابطه ای رایج شدند و از آنها به عنوان NoSQL یاد می شود زیرا از زبان های مختلف پرس و جو استفاده می کنند.
ADO.NET در سی شارپ
ای دی او دات نت (ADO.NET) مجموعه ای از کلاس ها است که خدمات دسترسی به داده را برای برنامه نویسان NET Framework. قرار می دهد. ADO.NET مجموعه ای غنی از مؤلفه ها را برای ایجاد برنامه های توزیع شده و به اشتراک گذاری داده فراهم می کند. این بخشی جدایی ناپذیر از فریمورک NET. است، دسترسی به داده های رابطه ای، XML و برنامه را فراهم می کند. ADO.NET از انواع مختلفی از نیازهای توسعه، از جمله ایجاد مشتری های پایگاه داده اولیه و اشیاء تجاری ردیف میانی که توسط برنامه ها، ابزارها، زبان ها یا مرورگرهای اینترنتی استفاده می شود پشتیبانی می کند.
ما می دانیم که ADO.NET به ما اجازه می دهد تا با انواع مختلفی از منابع داده و انواع مختلفی از بانک های اطلاعاتی ارتباط برقرار کنیم. با این حال، یک مجموعه کلاس واحد وجود ندارد که به شما امکان دهد این کار را به صورت جهانی انجام دهید. از آنجا که منابع داده های مختلف پروتکل های مختلفی را در معرض دید ما قرار می دهند، ما به روشی برای برقراری ارتباط با منبع داده مناسب با استفاده از پروتکل مناسب نیاز داریم برخی از منابع داده قدیمی از پروتکل ODBC استفاده می کنند، بسیاری از منابع داده جدید از پروتکل OleDb استفاده می کنند و هر روز منابع داده بیشتری وجود دارد که به شما امکان می دهد مستقیماً از طریق کتابخانه های کلاس ADO.NET ارتباط برقرار کنید.
ADO.NET روشی نسبتاً متداول برای تعامل با منابع داده فراهم می کند اما در مجموعه های مختلفی از كتابخانه ها برای هر راهی كه می توانید با یک منبع داده صحبت كنید، ارائه می شود. به این كتابخانه ها Data Provider گفته می شود و معمولاً برای پروتكل یا نوع منبع داده از آنها نامیده می شود كه به شما اجازه تعامل می دهند. در جدول 1 برخی از ارائه دهندگان داده های شناخته شده، پیشوند API مورد استفاده آنها و نوع منبع داده ای که به شما امکان تعامل می دهد، آورده شده است.
سی شارپ و OpenCV
اوپن سی وی (OpenCV) کتابخانه بینایی رایانه ای اوپن سورس و کتابخانه نرم افزاری یادگیری ماشینی است. OpenCV برای ارائه یک زیرساخت مشترک برای برنامه های کاربردی Computer Vision و سرعت بخشیدن به استفاده از ادراک ماشین در محصولات تجاری ساخته شده است. به عنوان یک محصول با مجوز BSD، کسب و کار را برای استفاده و اصلاح کد آسان می کند. OpenCV برای پردازش تصویر و Computer Vision است که در ابتدا توسط Intel ساخته شد و اکنون توسط Willow Garage پشتیبانی می شود که برای استفاده تجاری و غیر تجاری رایگان است. OpenCV یک کتابخانه از توابع inbuilt است که عمدتا برای پردازش تصویر در real-time است. در حال حاضر دارای صدها پردازش تصویر و الگوریتم های Computer Vision است که باعث می شود برنامه های کاربردی پیشرفته رایانه ای را آسان و کارآمد کنند.
OpenCV به زبان C نوشته شده است و رابط اصلی آن در C است، اما هنوز هم یک رابط C قدیمی اما جامع است. ارتباطات در پایتون، جاوا و MATLAB / OCTAVE وجود دارد. API برای این واسط ها را می توان در مستندات آنلاین یافت. همچنین به زبان های دیگر مانند سی شارپ ،پرل ،هاسکل و روبی برای تشویق مخاطبان گسترده تر ساخته شده اند.
نرم افزار های برنامه نویسی سی شارپ
#C یک زبان برنامه نویسی است که به طور گسترده ای در شرکت ها بکار می رود، به ویژه مواردی که به شدت وابسته به مایکروسافت هستند. اگر برنامه هایی را با استفاده از #C ایجاد می کنید، به احتمال زیاد از ویژوال استودیو استفاده می کنید. در زیر لیست برخی از نرم افزار های برنامه نویسی سی شارپ را تهیه کرده ایم:
یک محیط توسعه یکپارچه (IDE) تولید شده در شرکت مایکروسافت است. برای توسعه برنامه های رایانه ای برای Microsoft Windows استفاده می شود. ویژوال استودیو یک فروشگاه برای همه برنامه های کاربردی ساخته شده بر روی پلتفرم دات نت است. با استفاده از ویژوال استودیو می توانید برنامه های کاربردی را توسعه، اشکال زدایی و اجرا کنید. هر دو برنامه مبتنی بر فرم و وب را می توان با استفاده از این IDE طراحی و توسعه داد.
ویژوال استودیو کد محبوب ترین ویرایشگر کد برای توسعه #C است. برای ویرایش قدرتمند می توانید از ویژوال استودیو کد با پسوند #C استفاده کنید، به علاوه پشتیبانی کامل از C# IntelliSense و اشکال زدایی را شامل می شود.
توسعه یافته توسط زامارین، بسیاری از ویژگی های مشابه VS Code را دارد و همچنین به صورت متقاطع است. با استفاده از MonoDevel می توانید به سرعت برنامه های دسکتاپ و وب را در ویندوز، لینوکس و Mac OS X بنویسید.
- Rider
Rider از میان مجموعه محصولات جامع Jet Brains، یک IDE کراس پلتفرم NET. است که مبتنی بر پلتفرم IntelliJ و ReSharper است.
Entity Framework در سی شارپ
انتیتی فریمورک (Entity Framework) یک فریمورک نگاشت شی رابطهای اوپن سورس با تکنولوژی ORM برای ADO.NET است. شرکت مایکروسافت زیرمجموعه ای از ORM به نام انتیتی فریمورک را با هدف داشتن بعضی از قابلیتهای برنامهنویسی شیگرا در استفاده از بانک های اطلاعاتی برای برنامهنویسان تولید کرد. در واقع انتیتی فریمورک تکنولوژی توسعه یافته ADO.Net است.
The Entity Framework مجموعه ای از فناوری ها در ADO.NET است که از توسعه برنامه های نرم افزاری مبتنی بر داده پشتیبانی می کند. معماران و توسعه دهندگان برنامه های داده گرا معمولاً با نیاز به دستیابی به دو هدف بسیار متفاوت دست و پنجه نرم کرده اند. آنها باید موجودیت ها، روابط و منطق مشکلات تجاری را که حل می کنند، الگوبرداری کنند و همچنین باید با موتورهای داده استفاده شده برای ذخیره و بازیابی داده ها کار کنند. داده ها ممکن است دارای چندین سیستم ذخیره سازی باشد که هرکدام پروتکل های خاص خود را دارند. حتی برنامه هایی که با یک سیستم ذخیره سازی منفرد کار می کنند باید در برابر الزامات نوشتن کد برنامه کارآمد و پایدار، نیاز سیستم ذخیره را متعادل کنند.
مایکروسافت در حال حاضر طراحی مجدد معماری اصلی فریمورک دات نت را از ابتدا طراحی کرده است. توسعه دهندگان هم اکنون می توانند از NET Core. به عنوان یک پلتفرم اوپن سورس و کراس پلتفذم برای توسعه انواع برنامه ها استفاده کنند. از این رو، توسعه دهندگان می توانند با توجه به نیازهای دقیق هر پروژه، اجزای خاصی را به سیستم ORM اضافه یا حذف کنند.
سی شارپ و دات نت کور (NET Core.)
دات نت کور (NET Core.) یک پلتفرم توسعه اوپن سورس و عمومی است که توسط مایکروسافت و جامعه دات نت در GitHub نگهداری می شود. همچنین دارای ویژگی کراس پلتفرم است که از از ویندوز، MacOS و Linux پشتیبانی می کند و می تواند برای ساخت برنامه های دستگاه ها، cloud و IoT مورد استفاده قرار گیرد و جانشین NET Framework. است.
NET Core. در سال 2016 منتشر شد. برخلاف نسخه قدیمی، مهندسین اکنون می توانند از این محصول در لینوکس و OS X استفاده کنند و برنامه هایی را ایجاد کنند که لزوماً به خانواده ویندوز مربوط نشوند. این سیستم جدید به دنبال تسخیر فضای ابر است زیرا برخی از ارائه دهندگان مانند Digital Ocean مبتنی بر لینوکس هستند. نه تنها NET Core. کراس پلتفرم است، بلکه نسخه های مختلف آن را می توان به صورت جانبی در یک دستگاه نصب کرد NET Core. شامل ASP.NET Core و Universal Windows Platform است.
نکته برجسته NET Core پشتیبانی از برنامه های دسکتاپ ویندوز بود که متمرکز بر فرم های ویندوز، فریمورک WPF و UWP و اکس ای ام ال (XAML) بود. در لحظه اعلام، استاندارد NET. به عنوان پایه مشترک برنامه های Windows Desktop و NET Core نشان داده شد. همچنین، دات نت کور به عنوان بخشی از ترکیبات حاوی ASP.NET Core،Entity Framework Core و ML.NET در نظر گرفته شده است.
مثال های سی شارپ
در زیر یک برنامه #C ساده، نسخه ای از نمونه کلاسیک "Hello World!":
using System;
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello, world!");
}
}
یک مثال GUI:
using System;
using System.Windows.Forms;
class Program
{
static void Main()
{
MessageBox.Show("Hello, World!");
Console.WriteLine("Is almost the same argument!");
}
}