C# Friends – Telegram
C# Friends
117 subscribers
58 photos
4 videos
29 files
72 links
C#, Asp.Net Core, Blazor & Architecture
Guids, Experiences, Tutorials, News and Codes.
Github: saeedrezayi/mrgrayhat
Contact me: @mrgrayhat
Download Telegram
Channel created
🔸با ذکر نام و یاد خداوند متعال و با سلامی به تمامی دوستان، همکاران و عاشقان برنامه نویسی، شروع فعالیتمان را در این کانال و تحت عنوان دوستداران سی شارپ اغاز مینماییم.
🔹امید است با عنایت خداوند متعال، سخت کوشی و همراهی شما عزیزان این کانال را به مرجعی مفید برای تمامی برنامه نویسان و توسعه دهندگان، جهت رشد و تقویت مهارت و استعدادهای علاقه مندان مبدل نماییم.

"دلیلی وجود ندارد که نتوانید بسیار موفق باشید. و درنهایت اگر کسی به شما برچسب «بااستعداد» زد، به او بگویید که سخت‌کوشی باعث موفقیت‌تان شده است."

📝سعید رضایی، 8 اردیبهشت 1397
خب ابتدا بیایم و رزومه جناب سی شارپ رو بررسی کنیم.🙂

سی شارپ چیه؟
این زبان برپایه سادگی، مدرن بودن، همه منظوره و شئ گرا بودن ساخته شد که یک زبان برنامه نویسی سطح بالاست، بدین معنی که به زبان محاوره ای (انگلیسی) بسیار نزدیک میباشد زبان هایی مانند C و ++C سطح متوسط هستند یعنی ما بین زبان ماشین و زبان محاوره ای ما؛ زبان اسمبلی زبان 0و1 زبان سطح پایین و ماشین هستند و یادگیری آن دشوار میباشد، گرچه همه ی سطوح نامبرده در پایان توسط کامپایلر به زبان صفر و یک یا همان ماشین ترجمه میشوند تا برای کامپیوتر قابل فهم و اجرا شوند.
زبان سی شارپ را اسان تر میتوان درک کرد و آموخت و به دلیل کاربردی بودن آن در تمامی پلتفرم ها مانند ویندوز - وب - اندروید - IOS و ... ، در دانشگاه ها و بعضی مدارس در سطوح بین المللی تدریس میشود.
خوشبختانه در سال های اخیر در کشور عزیزمان هم زبان سی شارپ به سرفصل های دروس دانشگاهی و مدارس نمونه اضافه شده و اشنایی نسل جوان با برنامه نویسی و سی شارپ بسیار بیشتر از قبل شده است.
گرچه سطح اموزش اکثر دانشگاه ها و اساتید، مبتدی و در حد اشنایی با این زبان و نوشتن یک ماشین حساب ساده ختم میشود، اما خوشبختانه اموزشگاه ها، شرکت ها و اساتید مجرب بسیاری در این حوزه فعالیت و مشارکت میکنند. از این رو میتوان نگرش مثبتی برای چندسال آینده جهت رشد سواد اموزشی کشور و شکوفایی استعداد علاقه مندان داشت.
از سال ۲۰۰۲ تاکنون زبان سی شارپ به صورت گسترده ای توسعه پیدا کرده است و شاید توسعه یافته ترین زبان برنامه نویسی باشد. برای همین یادگیری بخش بزرگی از آینده شغلی شما را برای هماهنگی با پیشرفت های فناوری و نیازهای بازار کار را تشکیل میدهد.
سی شارپ از کجا اومده؟
سی شارپ توسط شرکت مایکروسافت در سال 2000 میلادی از خانوادهٔ زبان‌های چارچوب دات‌نت معرفی شد. زبان سی شارپ همچنین از خانواده زبان‌های برنامه‌نویسی سی نیز است.
آندرس هجلزبرگ، طراح زبان برنامه‌نویسی دلفی، سرپرستی تیم طراحان زبان سی شارپ را بر عهده داشت. این زبان دارای دستوری شیءگرا مشابه ++C است و به شدت از زبان‌های جاوا و دلفی تأثیر پذیرفته‌است.
در ابتدا نام این زبان COOL بود که مخفف C like Object Oriented Language بود، هر چند در ژوئیه ۲۰۰۰م، زمانی که مایکروسافت پروژه را عمومی اعلام کرد، اسم آن به سی شارپ تغییر پیدا کرد. (منبع Wikipedia)
تاریخچه کامل و مفید سی شارپ را میتوانید در ویکی پدیا فارسی بخوانید.
https://goo.gl/RJUNFa


کاربرد های سی شارپ چیه؟
سی شارپ در اکثریت زمینه ها مورد اسقبال توسعه دهندگان قرار گرفت. از سی شارپ در صنعت تولید نرم افزار های کامپیوتری تحت دسکتاپ و وب،وب سایت ها، بازی های کامپیوتری، هوش مصنوعی، اپلیکیشن های تلفن های هوشمند(android, ios)، آموزشی و حتی در صنایع دفاعی مورد استفاده قرار گرفته است.
چطور میشه سی شارپ رو یاد گرفت؟

به راحتی! باور نمیکنید؟! همراه من باشید.
چرا سی شارپ؟

سوال خوب و البته بی انتها و پربحثی هست. در تمام دنیا بر سر این موضوع بحث و جدل هست.!
- " چرا {فلان زبان}؟ "
- #C بهتره یا C ؟
- asp.net یا php ؟
- python یا java ؟
و هزاران سوال دیگر ازین قبیل.
در حال تهیه مطلب و دسته بندی هستم.
به زودی به صورت دوره ای مطالبی را منتشر خواهم کرد.
مضمون مطالب آموزشی و کاربردی، نقد و بررسی، معرفی و تکنولوژی های روز، نظرسنجی، مسابقات، تحلیل و برنامه سازی می‌باشد.
یکی از مهمترین نکات یک وب‌سایت خوب، داشتن سرعت بالای Load است، به شکلی که حتی داشتن سرعت بارگیری یک وب سایت حتی بر SEO آن نیز تاثیر گذار است. نکات بسیاری برای افزایش سرعت وب‌سایت وجود دارد که به تجربه توسعه دهنده و میزان اطلاعات وی بستگی دارد.

برخی از مهمترین نکات جهت افزایش سرعت یک وب‌سایت ASP.NET در زیر آمده است:

۱- به‌روز رسانی NET Framework. مربوط به وب‌سایت
ویرایش فعلی فریم ورک سایت خود را بررسی کنید. تنظیم آن به مقدار 4.5 (آخرین ویرایش فعلی) باعث افزایش بهره‌وری و سرعت خواهد شد. NET 4.5. دارای یک Garbage Collector بسیار قدرتمند است که می‌تواند heap‌های بسیار بزرگ را مدیریت کند. از بهینه‌سازی انجام شده دیگر در این نسخه، می توان به بهینه شدن چند هسته‌ای کامپایلر JIT و قابلیت معلق سازی برنامه‌های ASP.NET اشاره کرد. این بهینه‌سازی‌ها نیازی به تغییر کد برنامه ندارند.

- اعمال Caching
۱-۲- از صفت OutputCache برای صفحاتی که پویا نیستند و میزان بازدید آن‌ها زیاد است استفاده کنید. برای استفاده از این صفت در MVC می‌توان آن را به یک Controller به‌خصوص یا کل کلاس Controller اختصاص داد. برای مثال در زیر کنترلر Index برای ۲۰ ثانیه کش شده است:
[OutputCache(Duration = 20, VaryByParam = "None")]
public ActionResult Index(string Id)
{}

۲-۲- سعی کنید عملیات I/O مورد نیاز برای داده‌ها را از دیسک کاهش دهید. به‌جای آن از کش کردن داده‌ها در حافظه‌ی اصلی کمک بگیرید. با این‌کار جلوی بسیاری از عملیات پر‌هزینه مانند کوئری‌های مکرر برای دریافت داده را خواهید گرفت. به علاوه کش کردن داده یک خاصیت مهم دیگر نیز دارد و آن این است که وقتی Data Source موقتا با مشکل مواجه می‌شود داده‌ها از دسترس خارج نمی شوند. دات نت کلاس‌های بسیار خوبی برای استفاده از امکانات کش در ASP.NET فراهم کرده است. این کلاس‌ها در فضای نام System.Runtime.Caching موجودند.

- نگهداری اطلاعات CSS و JavaScript خارج از صفحه
اضافه‌کردن کلاس‌های CSS و یا کدهای جاوا اسکریپت به‌صورت inline در Viewها باعث تولید مجدد آنها در هر بار درخواست صفحه خواهد شد. با این کار شما مزایای کش شدن صفحه را از دست خواهید داد. بنابراین همیشه این کدها را خارج از صفحه مورد استفاده نگهداری کنید و فقط ارجاعات آنها را (link) به صفحه اضافه کنید.

- فشرده سازی فایل
عموما در بیشتر وب‌سایت‌ها درخواست‌های مکرر و زیادی برای فایل‌های استاتیک از وب‌سرور داده می‌شود. این فایل‌ها می‌توانند فشرده شوند تا پهنای باند کمتری در هر درخواست مصرف شود. یک تنظیم بسیار عالی برای این‌کار در IIS 7 و بالاتر وجود دارد:
<configuration>
<system.webServer>
<urlCompression doStaticCompression=true doDynamicCompression=true />
</system.webServer>
</configuration>
به نظر تگ urlCompression کمی برای این‌کار عجیب به‌نظر می‌رسد ولی این تگ واقعا URL را فشرده نمی‌کند. این تگ محتوای اطلاعاتی که قرار است به مرورگر کاربر فرستاده شود را فشرده می‌کند. برای فعال سازی آن کافی است مقادیر ویژگی‌های این تگ به true تنظیم شود تا عمل فشرده سازی انجام شود و پهنای باند استفاده شده کاهش یابد.

۵- بسته‌بندی (Bundling) و کوچک سازی (Minification)
فایل‌های CSS و JavaScripts می‌توانند در یک فایل تکی قرار گیرند. با این‌کار تعداد درخواست‌های Http به وب‌سرور کاهش می‌یابد. همچنین با عملیات Minification بسیار از فضا‌های خالی این‌فایل‌ها حذف می‌شوند و در نتیجه حجم فایل ارسالی کاهش خواهد یافت. ابزار‌های بسیاری در وب برای این‌کار موجود است.

۶- استفاده از CDN
بهتر است فایل‌های جاوا اسکریپت پر استفاده و معروف مانند Jquery را به جای این‌که در یک هاست شخصی قرار دهیم آنها را در CDN بگذاریم. سرورهای CDN برای ارائه فایل‌های استاتیک پراستفاده طراحی شدند و به‌دلیل در نظر گرفتن موقعیت جغرافیایی درخواست کننده و سرعت بالا و پهنای باند بالای سرورهای آنها بسیار سریعتر از هاست شخصی عمل می‌کنند. همچنین احتمال زیادی وجود دارد که مرورگر به طور خودکار فایل‌های JavaScript را با درنظر گرفتن درخواست‌های متعدد با URL یکسان کش کند. یکی از معروف‌ترین سرویس‌های ارائه دهنده CDN، این سایت است.
- کنترل کردن درخواست‌های مربوط به تصاویر

۱-۷- استفاده از تکنیک Image Sprits:
با استفاده از تکنیک می‌توان تعداد زیادی تصویر کوچک را در قالب یک تصویر بزرگ ادغام کرد و سپس با استفاده از دستورات CSS هر قسمت را جداگانه فراخوانی کرد. این کار باعث کاهش تعداد درخواست‌ها از وب‌سرور و افزایش قابل توجه سرعت می‌شود. ابزارهای زیادی برای ایجاد این‌تصاویر و CSS تولیدی وجود دارد.
۲-۷- استفاده از Base64 Data URIs:
با استفاده از این تکنیک شما می‌توانید بدون نیاز به درخواست مستقیم تصویر از وب‌سرور به تصویر خود دست‌پیدا کنید.

۸- ترتیب رندر شدن اسکریپت‌ها
تگ‌های <noscript> را به انتهای هر صفحه منتقل کنید. این کار از این جهت مفید است که مرورگر هنگام رندر صفحه وقتی به تگ <noscript> می‌رسد تا اتمام کامل پردازش آن صبر می‌کند و سپس ادامه می‌دهد. این کار باعث می‌شود محتوای HTML صفحه سریعتر از مابقی بخش‌ها رندر شده و به کاربر نمایش داده شود. البته گاهی اوقات مانند زمانی که فایل‌های CSS به این اسکریپت‌ها نیازمند است؛ امکان انتقال آن‌ها به انتهای صفحه وجود ندارد.

روش دیگر اینکار استفاده از صفت‌های این تگ است:
<noscript src=some.js defer>
</noscript>
استفاده از صفت defer باعث می‌شود اجرای اسکریپت تا پردازش کل صفحه به تعویق بیافتد.
<noscript src=some.js async>
</noscript>
استفاده از صفت async باعث می‌شود اجرای اسکریپت به صورت غیرهمزمان در اولین فرصت انجام شود.

۹- حذف ماژول‌هایHTTP پیش‌فرض ASP.NET
ASP.NET دارای ماژول‌های HTTP بسیاری است که آماده گرفتن درخواست و پردازش هستند، این ماژول‌ها می‌توانند کل Pipeline را تسخیر کنند حتی درصورتی که برای برنامه‌ی شما پیکربندی نشده باشند.
همه‌ی این ماژول‌های پیش‌فرض در یک فایل machine.config در مسیر:
"WINDOWS%\Microsoft.NET\Framework\%VERSION%\CONFIG%"
قرار دارد. بنابراین در صورتی که دارای وب‌سرور اختصاصی هستید برخی از ماژول‌های پیش‌فرض را که استفاده‌ای از آن‌ها را ندارید از این فایل حذف کنید.

۱۰- کامپایل پروژه در حالت Release
همیشه گزینه Build پروژه را درحالت Release قرار دهید. این‌کار باعث می‌شود بسیاری از متادیتا‌ها و اطلاعات اضافی که صرفا جهت Debug برنامه کاربرد دارد از اسمبلی حذف شود و عملیات بهینه‌سازی برای اجرا روی کد نهایی انجام شود.

هرچقدر تجربه‌ی شما در زمینه طراحی و توسعه وب‌سایت و کار با ASP.NET بالاتر برود نکات بیشتری را باید رعایت کنید تا سایت سریعتری داشته باشید. برای رسیدن به این منظور تلاش کنید چون هرکسی می‌تواند با استفاده از یک CMS و یا این ابزارها یک سایت معمولی طراحی کند.

منبع aghamohammadi.ir, microsoft.com
Forwarded from Mr.Grayhat [Saeed.R]
This media is not supported in your browser
VIEW IN TELEGRAM
وقتی که به شما می گویند ماژولی را که کل هفته پیش را رویش کار کرده اید، کنار گذاشته و هرگز از آن استفاده نخواهد شد 😞
Forwarded from Mr.Grayhat [Saeed.R]
This media is not supported in your browser
VIEW IN TELEGRAM
وقتی که رئیستان دنبال شخصی برای رفع سریع مشکلی دشوار می گردد
Forwarded from Mr.Grayhat [Saeed.R]
This media is not supported in your browser
VIEW IN TELEGRAM
وقتی که تیم فروش، موفق به فروش محصول به مشتری می شود.
Forwarded from Mr.Grayhat [Saeed.R]
This media is not supported in your browser
VIEW IN TELEGRAM
وقتی که نسخه بتا را تحویل میدهید و اولین گزارش باگ را دریافت میکنید
Forwarded from Software Philosophy
آیا ترکیب WebAssembly و .Net آینده برنامه‌نویسی front-end است؟ این نام مقاله جدید اسکات هانسلمن است که در آن توضیح می‌دهد چطور .NET Core 2.0 این ایده را امکان پذیر کرده‌است که کدهای front-end را با c# نوشت و به WebAssembly کامپیال کرد. در این مقاله توضیح داده شده که چطور Steve Sanderson (برنامه نویس اصلی فریم‌ورک knockout) در یک پروژه آزمایشی به نام Blazor دقیقا مانند Angular, Knockout و Ember کد نوشته، با این تفاوت که این کد با C# نوشته شده.

مقاله زیر جزئیات نوشتن کد روی WebAssembly را با استفاده از .Net Core و C# شرح داده‌است.

https://www.hanselman.com/blog/NETAndWebAssemblyIsThisTheFutureOfTheFrontend.aspx

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/KVCh30ewRvs

#مهران_داودی (http://ow.ly/GwIl309lFEm)

کانال تلگرام:
@SoftwarePhilosophy

___
Forwarded from Mr.Grayhat [Saeed.R]
بحثی که گزاشتم درباره فریم ورک جدید دات نت core هست بنام Blazor و خیلی جالب و کاربردیه ساده اش میشه کدنویسی سمت کاربر مثل انگولار و ری اکت، با زبان C# ! و البته js هم میشه، من خودم خوشم نمیاد هی آنگولار و ری اکت کار کنم واقعا برای من که خوب بود و پیشنهاد میکنم سرچ کنین
فول استک بنویسین وب رو فقط با html,css,C#.net + signalR
Forwarded from 0027-HooshCoPL💎 (D4NTE SPARDA)
امروز می خوام یه سری از گروها و کانال خوب برنامه نوسی در تلگرام رو بذارم که سوال هم میتونین داخلشون مطرح کنین و جواب بگیرین. در کل زیادن، یه سریاشو که فعال تر و بهتره میذارم.

‏--------------------------------
1️⃣ کانال اول:
https://news.1rj.ru/str/IranAspMvc

⚪️توضیحات کانال:
بزرگترین کانال آموزش و اشتراک اطلاعات در زمینه AspNet Mvc در سطح کشور

سوپرگروه تخصصی ASP.NET MVC
به علت اسپم فعلا لینک گروه منتشر نمیشه.

نویسنده : محمد جواد ابراهیمی
Senior .NET Developer and Consultant
@mjebrahimi
09136461951

🔵توضیحات تکمیلی:
گروه مربوطش رو هم از طریق کانال می تونید برید.

تو این گروه سوالاتتون رو میتونین بپرسین، و چندین ادمین داره که جوابتونو میدن حتما، و تقریبا همشونم فوق العاده این کاره هستن.

‏--------------------------------
2️⃣کانال دوم:
https://news.1rj.ru/str/barnamenevis_net

🔵توضیحات تکمیلی:
کانال مربوط به مهدی کرامتی و سایت barnamenevis.net هست.

‏--------------------------------
3️⃣کانال سوم:
https://news.1rj.ru/str/barnamenevis_org

⚪️توضیحات کانال:
جامعه برنامه نویسان فارسی زبان ، بزرگترین
مرجع تخصصی فارسی زبان

ارتباط با مدیریت
@MohammadAshtiani

گروه برنامه نویس
https://news.1rj.ru/str/joinchat/BNjUIz17vyJ74Fq1UhyJaQ

شامد
https://goo.gl/uzqSiB

🔵توضیحات تکمیلی:
توی این کانال هم آقای مهدی کرامتی هستن، و از طریق خود کانال هم می تونید به بخش DISCUSS یا همون گروهش مراجعه کنید. این کانال هم مربوط به سایت barnamenevis.org هست.

‏--------------------------------
4️⃣کانال چهارم:
https://news.1rj.ru/str/SoftwarePhilosophy

⚪️توضیحات کانال:
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید


🔵توضیحات تکمیلی:
مربوط به آقای مهران داوودی و سایت mehrandvd.me هست.

‏--------------------------------
5️⃣کانال پنجم:
https://news.1rj.ru/str/codehaks

⚪️توضیحات کانال:
آموزشگاه تخصصی ASP NET Core

https://codehaks.com

گروه :
https://news.1rj.ru/str/joinchat/BWx3thEALjcFi2mwO2w2OQ
لینکدین :
https://www.linkedin.com/in/codehaks

ارتباط با مدیر :
Admin : @codehak
Email : ghods.hakim@hotmail.com
Mobile : 09380146555

🔵توضیحات تکمیلی:
این کانال و گروهش هم مربوط به آقای حکیم قدس هستش.

‏--------------------------------
6️⃣کانال ششم:
https://news.1rj.ru/str/Dexign

⚪️توضیحات کانال:
این کانال چکیده‌هایی از مقالات روز، نمونه‌های موفق، ابزارها و هر آنچه که متعلق به دنیای زیبا و هیجان‌انگیز دیزاین است.

ارتباط با کانال:
رامین خطیبی @raminix

‏--------------------------------
7️⃣کانال هفتم:

⚪️توضیحات کانال:
A channel about all kind of programming languages, and their architectures and concepts.

🔵توضیحات تکمیلی:
این کانال خودم هست، که خیلی قدیمی هم هست و توضیح راجع به کانال داده شده در پست اولش که اینه: https://telegram.me/ProgrammingLanguages/1 و پانزدهم اکتبر 2015 هم تاسیس شد، اما متاسفانه وقت نمیکنم توش زیاد فعالیت کنم و پست بذارم.

‏==========================

یه سری گروه پشتیبانی هم میذارم واسه سوال و جواب:

‏--------------------------------
1️⃣گروه اول: MATLAB پرسمان
🌐لینک: https://news.1rj.ru/str/joinchat/Atel5jvA64h6GEq3L8Uojg

‏--------------------------------
2️⃣گروه دوم: Tech Tip | Group
🌐لینک: https://news.1rj.ru/str/joinchat/AAAAADxgpmRapWXnBdGd8A و https://telegram.me/PCTalk

‏--------------------------------
3️⃣گروه سوم: C# پرسمان (کانال آموزشی هم داره)
🌐لینک: https://news.1rj.ru/str/joinchat/BVDwzz8ZZQijDMlssL_1Ow

‏==========================

داخل این کانالا و گروه ها میتونین کلی کارتون رو راه بندازین، و با افراد بسیاری که خیلیاشون هم خیلی از من حرفه ای تر هستن کارتونو پیش ببرین و کلی چیز یاد بگیرین. البته به شرطی که وقت بذارین. اینا رو گذاشتم که باز نگید چرا ما رو عضو نمیکنیو از این حرفا 😁

بعدا هم یه سری چیزا واسه فرصت شغلی و اینا میذارم
♨️📛 خون نوشته های یک برنامه نویس 📛♨️

همکاران عزیز و گرامی .... خواهشمندم عزت نفس داشته باشید .... برای گرفتن پروژه ها یا استخدام شدن در شرکتها به صورت کارمندی به هر قیمتی کار نکنید... اگه خودتون رو در حد یه پزشک نمیدونید حداقل درآمدتون رو با یک تعمیرکار آب گرمکن یا لوله کش یا یه کفاش مقایسه کنید ببینید جایگاهتون کجاست؟ کی مجبورتون کرده وقت و دانشتون رو مفتی بفروشید؟ کارگری ساده باشید بهتر از اینه تخصصتون رو ذلیلانه به شرکتهای مفت خور بدید یا به مشتری بفروشید و ازتون سواستفاده بشه.

🖥 رشته ما جزو مشاغل سخت محسوب میشه که بهره وری و استفاده از مغزمون در طول ساعات کاری به بیش از 90% می رسه و در مقایسه با سایر مشاغل بیشترین فشار بر مغز و جسم(استهلاک بدن و چشم و...) وارد میشه و استفاده مهارتهای به روز نسبت به سایر مشاغل قابل مقایسه نیست.

📡 اگه بتونیم این پیام ها رو به همه همکاران برسونیم و بتونیم هرکسی برای خودش این ذهنیت و باور رو برای خودش نهادینه کنه ... کمتر از چند ماه تحول رو در وضع برنامه نویسان خواهیم دید.

☹️ متاسفانه ما با هم اتحاد نداریم آلان این کانال بیش از 2 ساله راه اندازی شده ولی هنوز تعدادمون به 10% از کل برنامه نویسای کشورمون نرسیده... خواهشاً هرکسی این پیام رو میبینه عضو بشه و برای سایر همکاران بفرسته که بتونیم تصمیمات همگانی تر رو بگیریم و وضع شغلیمون رو بهتر کنیم قبل از اینکه همه فرار کنن برن خارج

⚖️ کانال تلگرامی: صنف مجازی برنامه نویسان
senfprogrammer
مباحث پایه برنامه نویسی C# و شئ گرایی رو بزارم یا برم سمت مباحث تکنیکال و پیشرفته تر و ASP.net ؟
Anonymous Poll
60%
شئ گرایی و مفاهیم اصلی برنامه نویسی
0%
سی شارپ پیشرفته تر
20%
مباحث تکنیکال و کد نویسی + SQL
20%
ASP.net Core
0%
EntityFramework
C# Friends
خب ابتدا بیایم و رزومه جناب سی شارپ رو بررسی کنیم.🙂 سی شارپ چیه؟ این زبان برپایه سادگی، مدرن بودن، همه منظوره و شئ گرا بودن ساخته شد که یک زبان برنامه نویسی سطح بالاست، بدین معنی که به زبان محاوره ای (انگلیسی) بسیار نزدیک میباشد زبان هایی مانند C و ++C سطح…
.NetFramework
اصول برنامه نویسی C#.Net
سعید رضایی 12 مرداد 1398 - قسمت 1

Summary
خلاصه:
چارچوب برنامه نویسی دات نت Net Framework.
OOP برنامه نویسی شئ گرا، پارادایم شئ گرایی OOPS
نکته قابل توجه:: مباحث اصلی شئ گرایی شامل وراثت(Inheritance)، چند ریختی(Polymorphism)، کپسوله سازی(Encapsulation) و برخی قوانین معروف و شهودی برنامه نویسی میباشد که اکثرا وابسته به زبان برنامه نویسی خاصی نبوده و یادگیری و بکار بردن آنها برای هر برنامه نویس واقعی لازم میباشد.
الگوهای طراحی Design Patterns، برنامه نویسی چند لایه N-Layer


چارچوب فریم ورک دات نت

BCL (Base Class Library)
BCL stands for Base class library also known as Class library (CL). BCL is a subset of Framework class library (FCL). Class library is the collection of reusable types that are closely integrated with CLR. Base Class library provides classes and types that are helpful in performing day to day operation e.g. dealing with string and primitive types, database connection, IO operations.
while Framework class library contains thousands of classes used to build different types of applications and provides all the basic functionalities and services that application needs. FCL includes classes and services to support different variety of application e.g.
Desktop application, Web application (ASP.Net, MVC, WCF), Mobile application, Xbox application, windows services etc.
CLR (Common Language Runtime)
محیط اجرای مشترک بین تمام زبان های برنامه نویسی که وظایفی چون کامپایل کردن کد، برقراری امنیت اجرای کد و ایجاد ارتباط بین زبان های برنامه نویسی دات نت و مدیریت حافظه را بر عهده دارد.
به برنامه های تحت net. اصطلاحا مدیریت شده یا Managed گفته میشود(تحت مدیریت CLR)، زبان های مثل C++,Pascal UnManaged هستند.
CLS (Common Language Specification)
یک سری قوانین را بیان میکند که اگر هر زبان برنامه نویسی آن را رعایت کند، همه زبان های تحت دات نت میتوانند کد نوشته شده آن را اجرا کنند.

برخی قوانین CLS:
عدم استفاده از Pointer
عدم استفاده از انواع داده ای بدون علامت(uint, ulong=>در c#)
عدم استفاده از لیست متغیر در آرگومانهای توابع Params یا ParamArray (اندیس شروع تمام آرایه ها باید صفر باشد)
اینترفیس ها(Interface) نمی توانند توابع استاتیک static داشته باشند
یک سازنده Constructor باید قبل از هرکاری سازنده کلاس پدر Parent را فراخوانی نماید
CTS (Common Type System)
مشخص کننده یک سری نوع داده ئ قوانینی در مورد این نوع داده هاست که در مورد تمام زبان های تحت دات نت مشترک است. مثلا تابع نوشته شده در vb.net با نوع برگشتی single را در c# فراخوانی کنید بصورت float میبینید؛ زیرا float و single یکی هستند و در نهایت به ساختار System.Single تبدیل میشوند.
MSIL (Microsoft Intermediate Language)
کدهای برنامه نویسی در هر یک از زبان های تحت Net. به زبان IL تبدیل خواهند شد و سپس توسط JIT یا همان Just In Time Compiler به زبان ماشین ترجمه میشوند.
:مسیر کامپایلر های دات نت در ویندوز
[windows drive]:\windows\Microsoft.Net\framework\[version]\csc.exe (for c#.net)- vbc.exe (for vb.net) - vjc.exe (for j#.net)
Csc CompileMe.cs => CompileMe.exe مثال نحوه کامپایل دستی
Csc /target:Library خروجی کتابخانه کلاس
Csc /out:OutputName.exe خروجی اجرایی با نام دلخواه
Assembly (اسمبلی)
اسمبلی یا جداسازی فیزیکی، کوچکترین واحد مستقل است که می تواند نصب شود، به عنوان مثال یک فایل dll یا exe
NameSpace (فضای نام)
فضای نام یک جور حدا سازی بین کلاس ها به صورت منطقی است. مثلا تمام enum ها و class های مربوط به کار با فایل ها را در فضای نام System.IO داریم، یا هر چیز مربوط به XML داخل System.XML قرار دارد و داخل آن فضای نام های دیگری مانند System.XML.XPath وجود دارد(انسجام کلاس های مرتبط) و میتوانیم دو کلاس هم نام ولی در دو فضای نام متفاوت داشته باشیم.؟؟
GC (Garbage Collection)
یکی از ویژگی های مهم دات نت جمع آوری زباله یا GC است و به این معنی است که پس از ایجاد متغیر ها و زمانی که کارمان با آنها تمام شد، CLR حافظه آن ها را آزاد کرده و در اختیار Runtime قرار میدهد (مدیریت خودکار حافظه)
پس ایجاد و تخصیص حافظه در Stack بسیار سریعتر از Heap انجام میشود و GC فقط روی Heap انجام میشود.