Советы и лайфхаки

Шарп программирование – C Sharp — Википедия

C Sharp — это… Что такое C Sharp?

У этого термина существуют и другие значения, см. C.
Правильный заголовок этой статьи — C#. Он показан некорректно из-за технических ограничений.
C#
Семантика:

императивный

Класс языка:

мультипарадигменный:
объектно-ориентированный,
обобщённый, процедурный, императивный, функциональный, событийный, рефлективный

Появился в:

2000

Автор(ы):

Андерс Хейлсберг

Релиз:

5.0 (15 августа 2012)

Типизация данных:

статическая, динамическая, строгая, утиная, вывод типов

Основные реализации:

Visual C#, .NET Framework, Mono, DotGNU

Диалекты:

Cω, Spec#, Polyphonic C#

Испытал влияние:

C++, Java[1][2]

[3], Delphi, Модула и Smalltalk

Повлиял на:

Cω, F#, Nemerle, Vala, Windows PowerShell

C# (произносится си шарп) — объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework и впоследствии был стандартизирован как ECMA-334 и ISO/IEC 23270.

C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.

Переняв многое от своих предшественников — языков C++, Java, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# в отличие от C++ не поддерживает множественное наследование классов (между тем допускается множественное наследование интерфейсов).

Особенности языка

C# разрабатывался как язык программирования прикладного уровня для CLR и, как таковой, зависит, прежде всего, от возможностей самой CLR. Это касается, прежде всего, системы типов C#, которая отражает BCL. Присутствие или отсутствие тех или иных выразительных особенностей языка диктуется тем, может ли конкретная языковая особенность быть транслирована в соответствующие конструкции CLR. Так, с развитием CLR от версии 1.1 к 2.0 значительно обогатился и сам C#; подобного взаимодействия следует ожидать и в дальнейшем. (Однако эта закономерность была нарушена с выходом C# 3.0, представляющего собой расширения языка, не опирающиеся на расширения платформы .NET.) CLR предоставляет C#, как и всем другим .NET-ориентированным языкам, многие возможности, которых лишены «классические» языки программирования. Например, сборка мусора не реализована в самом C#, а производится CLR для программ, написанных на C# точно так же, как это делается для программ на VB.NET, J# и др.

Название языка

Название «Си шарп» (от англ. sharp — диез) происходит от музыкальной нотации, где знак диез, прибавляемый к основному обозначению ноты, означает повышение соответствующего этой ноте звука на полутон.[4] Это аналогично названию языка C++, где «++» обозначает, что переменная должна быть увеличена на 1.

Вследствие технических ограничений на отображение (стандартные шрифты, браузеры и т. д.) и того обстоятельства, что знак диез ♯​ не представлен на стандартной клавиатуре, знак номера # был выбран для представления знака диез при записи имени языка программирования.[5] Это соглашение отражено в Спецификации Языка C# ECMA-334.[6] Тем не менее, на практике (например, при размещении рекламы и коробочном дизайне

[7]), Майкрософт использует предназначенный музыкальный знак.

Названия языков программирования не принято переводить, поэтому зачастую язык называют по-английски «Си шарп».

Стандартизация

C# стандартизирован в ECMA (ECMA-334)[8] и ISO (ISO/IEC 23270)[9].

Известно, как минимум, о трёх независимых реализациях C#, базирующихся на этой спецификации и находящихся в настоящее время на различных стадиях разработки:

Версии

На протяжении разработки языка C# было выпущено несколько его версий:

Общая информация по версиям
C# 2.0C# 3.0C# 4.0C# 5.0
Новые
возможности
  • Обобщения
  • Смешанные типы
  • Анонимные методы
  • Итераторы
  • Нуль-типы
  • Неявно типизируемые локальные переменные
  • Инициализаторы объектов и коллекций
  • Автоматическая реализация свойств
  • Анонимные типы
  • Методы расширения
  • Запросы
  • Лямбда-выражения
  • Деревья выражений
  • Динамическое связывание
  • Именованные и дополнительные аргументы
  • Обобщенная ковариантность и контрвариантность
  • Асинхронные методы
  • Компилятор как служба

Версия 1.0

Проект C# был начат в декабре 1998 и получил кодовое название COOL (C-style Object Oriented Language). Версия 1.0 была анонсирована вместе с платформой .NET в июне 2000 года, тогда же появилась и первая общедоступная бета-версия; C# 1.0 окончательно вышел вместе с Microsoft Visual Studio .NET в феврале 2002 года.

Первая версия C# напоминала по своим возможностям Java 1.4, несколько их расширяя: так, в C# имелись свойства (выглядящие в коде как поля объекта, но на деле вызывающие при обращении к ним методы класса), индексаторы (подобные свойствам, но принимающие параметр как индекс массива), события, делегаты, циклы

foreach, структуры, передаваемые по значению, автоматическое преобразование встроенных типов в объекты при необходимости (boxing), атрибуты, встроенные средства взаимодействия с неуправляемым кодом (DLL, COM) и прочее.

Кроме того, в C# решено было перенести некоторые возможности C++, отсутствовавшие в Java: беззнаковые типы, перегрузку операторов (с некоторыми ограничениями, в отличие от C++), передача параметров в метод по ссылке, методы с переменным числом параметров, оператор goto (с ограничениями). Также в C# оставили ограниченную возможность работы с указателями — в местах кода, специально обозначенных словом unsafe и при указании специальной опции компилятору.

Версия 2.0

Проект спецификации C# 2.0 впервые был опубликован Microsoft в октябре 2003 года; в 2004 году выходили бета-версии (проект с кодовым названием Whidbey), C# 2.0 окончательно вышел 7 ноября 2005 года вместе с Visual Studio 2005 и .NET 2.0.

Новые возможности в версии 2.0
  • Частичные типы (разделение реализации класса более чем на один файл).
  • Обобщённые, или параметризованные типы (generics). В отличие от шаблонов C++, они поддерживают некоторые дополнительные возможности и работают на уровне виртуальной машины. Вместе с тем, параметрами обобщённого типа не могут быть выражения, они не могут быть полностью или частично специализированы, не поддерживают шаблонных параметров по умолчанию, от шаблонного параметра нельзя наследоваться, и т. д.[12]
  • Новая форма итератора, позволяющая создавать сопрограммы с помощью ключевого слова yield, подобно Python и Ruby.
  • Анонимные методы, обеспечивающие функциональность замыкания.
  • Оператор ‘??’: return obj1 ?? obj2; означает (в нотации C# 1.0) return obj1!=null ? obj1 : obj2;.
  • Обнуляемые (‘nullable’) типы-значения (обозначаемые вопросительным знаком, например,
    int? i = null;
    ), представляющие собой те же самые типы-значения, способные принимать также значение null. Такие типы позволяют улучшить взаимодействие с базами данных через язык SQL.
  • Возможность создавать хранимые процедуры, триггеры и даже типы данных на .Net языках (в том числе и на C#).
  • Поддержка 64-разрядных вычислений, что кроме всего прочего, позволяет увеличить адресное пространство и использовать 64-разрядные примитивные типы данных.

Версия 3.0

В июне 2004 года Андерс Хейлсберг впервые рассказал на сайте Microsoft о планируемых расширениях языка в C#3.0.[13] В сентябре 2005 года вышли проект спецификации C# 3.0 и бета-версия C# 3.0, устанавливаемая в виде дополнения к существующим Visual Studio 2005 и .NET 2.0. Окончательно эта версия языка вошла в Visual Studio 2008 и .NET 3.5.

Новые возможности в версии 3.0

В C# 3.0 появились следующие радикальные добавления к языку:

  • ключевые слова select, from, where, позволяющие делать запросы из SQL, XML, коллекций и т. п. (запрос, интегрированный в язык, Language Integrated Query, или LINQ)
  • Инициализация объекта вместе с его свойствами:
Customer c = new Customer(); c.Name = "James"; c.Age=30;
можно записать как
Customer c = new Customer { Name = "James", Age = 30 };
listOfFoo.Where(delegate(Foo x) { return x.size > 10; });
теперь можно записать как
listOfFoo.Where(x => x.size > 10);
  • Деревья выражений:
лямбда-выражения теперь могут представляться в виде структуры данных, доступной для обхода во время выполнения, тем самым позволяя транслировать строго типизированные C#-выражения в другие домены (например, выражения SQL).
  • Вывод типов локальной переменной: var x = "hello"; вместо string x = "hello";
  • Безымянные типы: var x = new { Name = "James" };
  • Методы-расширения — добавление метода в существующий класс с помощью ключевого слова this при первом параметре статической функции.
public static class StringExtensions
{
  public static int ToInt32(this string val)
  {
    return Int32.Parse(val);
  }
}
// ...
string s = "10";
int x = s.ToInt32();
  • Автоматические свойства: компилятор сгенерирует закрытое (private) поле и соответствующие аксессор и мутатор для кода вида
public string Name { get; private set; }

C# 3.0 совместим с C# 2.0 по генерируемому MSIL-коду; улучшения в языке — чисто синтаксические и реализуются на этапе компиляции. Например, многие из интегрированных запросов LINQ можно осуществить, используя безымянные делегаты в сочетании с предикатными методами над контейнерами наподобие

List.FindAll и List.RemoveAll.

Версия 4.0

Превью C# 4.0 было представлено в конце 2008 года, вместе с CTP-версией Visual Studio 2010.

Visual Basic 10.0 и C# 4.0 были выпущены в апреле 2010 года, одновременно с выпуском Visual Studio 2010.

Новые возможности в версии 4.0[14]
  • Возможность использования позднего связывания, для использования:
    • с языками с динамической типизацией (Python, Ruby)
    • с COM-объектами
    • отражения (reflection)
    • объектов с изменяемой структурой (DOM). Появляется ключевое слово dynamic.
  • Именованные и опциональные параметры
  • Новые возможности COM interop
  • Ковариантность и контрвариантность
  • Контракты в коде (Code Contracts)

Примеры:

dynamic calc = GetCalculator();
int sum = calc.Add(10, 20);  // Динамический вызов
public void SomeMethod(int x, int y = 5, int z = 7);  // Опциональные параметры

Пример «Hello, World!»

Ниже представлен код классической программы «Hello world» на C# для консольного приложения:

using System;
 
namespace Example
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Hello World!"); // Вывод заданного текста в консоль
            Console.ReadKey(); // Ожидание нажатия клавиши пользователем
        }
    }
}

и код этой же программы для приложения Windows Forms:

using System;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }
        private void OnButtonClick(object sender, EventArgs e) // Элемент lbl_hello добавлен предварительно
        {
            lbl_hello.Text = "Hello, World!";
        }
    }
}

Реализации

Существует несколько реализаций C#:

  • Реализация C# в виде компилятора csc.exe включена в состав .NET Framework (включая .NET Micro Framework, .NET Compact Framework и его реализации под Silverlight и Windows Phone 7).
  • В составе проекта Rotor (Shared Source Common Language Infrastructure) компании Microsoft.
  • Проект Mono включает в себя реализацию C# с открытым исходным кодом.
  • Проект DotGNU также включает компилятор C# с открытым кодом.
  • DotNetAnywhere[15] — ориентированная на встраиваемые системы реализация CLR, поддерживает практически всю спецификацию C# 2.0.

См. также

Примечания

  1. «Поскольку язык С# унаследовал свой синтаксис от C++ и Java…» (Трей Нэш «C# 2010: ускоренный курс для профессионалов» («Accelerated C# 2010») — М.: Вильямс, 2010. — С. 592. — ISBN 978-5-8459-1638-9; стр. 17)
  2. «Язык C# … унаследовал много полезных возможностей от других языков программирования и напрямую связан с двумя наиболее широко применяемыми в мире компьютерными языками — C и C++, а также с языком Java.», однако далее: «Связь между C# и Java более сложная. Оба языка разработаны для создания переносимого кода, базируются на C и C++, используют их синтаксис и объектную модель. Однако между этими языками нет прямой связи, они больше похожи на двоюродных братьев, имеющих общих предков, но отличающихся многими признаками.» (Герберт Шилдт «C# учебный курс». — М.: Питер. 2003. — стр. 20).
  3. Герберт Шилдт Полный справочник по С#. : Пер. с англ. — М. : Издательский дом «Вильямс», 2004. — 752 с. : ил. — Парал. тит. англ. ISBN 5-8459-0563-X (рус.) стр. 26-27.
  4. Kovacs, James C#/.NET History Lesson (September 7, 2007). Архивировано из первоисточника 21 августа 2011. Проверено 23 марта 2011.
  5. Microsoft C# FAQ. Microsoft.(недоступная ссылка — история) Проверено 25 марта 2008.(недоступная ссылка — история)
  6. C# Language Specification. — 4th. — ECMA International, 2006.
  7. Visual C#.net Standard (JPEG). Microsoft (September 4, 2003). Архивировано из первоисточника 21 августа 2011. Проверено 18 июня 2009.
  8. Standard ECMA-334 C# Language Specification, 4rd edition (June 2006)
  9. ISO/IEC 23270:2003, Information technology — C# Language Specification
  10. Спецификация по Microsoft C# 2.0 содержит описание лишь новых возможностей версии 2.0. Особенности версии описаны в спецификации 1.2, приведенной выше.
  11. Для версий языка C# 3.0, 4.0 и 5.0 пока нет утвержденных ECMA или ISO/IEC спецификаций.
  12. Differences Between C++ Templates and C# Generics (C# Programming Guide)
  13. MSDN News
  14. C# Future
  15. Dot Net Anywhere

Литература

  • Джозеф Албахари, Бен Албахари C# 5.0. Справочник. Полное описание языка = C# 5.0 in a Nutshell: The Definitive Reference. — М.: «Вильямс», 2013. — 1008 с. — ISBN 978-5-8459-1819-2
  • Эндрю Троелсен. Язык программирования C# 2010 и платформа .NET 4.0 = Pro C# 2010 and the .NET 4.0 Platform. — 5-е изд. — М.: Вильямс, 2010. — С. 1392. — ISBN 978-5-8459-1682-2
  • Герберт Шилдт. C# 4.0: полное руководство = C# 4.0 The Complete Reference. — М.: «Вильямс», 2010. — С. 1056. — ISBN 978-5-8459-1684-6
  • Джон Скит. C#: программирование для профессионалов, 2-е издание = C# in Depth, 2nd Edition. — М.: «Вильямс», 2011. — 544 с. — ISBN 978-5-8459-1555-9
  • Кристиан Нейгел, Карли Уотсон и др. Visual C# 2010: полный курс = Beginning Microsoft Visual C# 2010. — М.: Диалектика, 2010. — ISBN 978-5-8459-1699-0
  • Кристиан Нейгел, Билл Ивьен, Джей Глинн, Карли Уотсон, Морган Скиннер. C# 4: Платформа .NET 4 для профессионалов = Professional C# 4 and .NET 4. — М.: Диалектика, 2010. — С. 1440. — ISBN 978-5-8459-1656-3

Ссылки

  Стандарты ISO
Перечни:  Перечень стандартов ИСО • Перечень романизаций ISO • Перечень стандартов IEC
Категории:  Категория:Стандарты ISO • Категория:Протоколы OSI
1
по
9999
1 • 2 • 3 • 4 • 5 • 6 • 7 • 9 • 16 • 31 (-0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13) • 128 • 216 • 217 • 226 • 228 • 233 • 259 • 269 • 296 • 302 • 306 • 428 • 639 (-1, -2, -3, -5, -6) • 646 • 690 • 732 • 764 • 843 • 898 • 1000 • 1004 • 1007 • 1073-1 • 1413 • 1538 • 1745 • 2014 • 2015 • 2022 • 2108 • 2145 • 2146 • 2281 • 2709 • 2711 • 2788 • 3029 • 3103 • 3166 (-1, -2, -3) • 3297 • 3307 • 3602 • 3864 • 3901 • 3977 • 4031 • 4157 • 4217 • 5218 • 5775 • 5776 • 5964 • 6166 • 6344 • 6346 • 6425 • 6429 • 6438 • 6523 • 6709 • 7001 • 7002 • 7098 • 7185 • 7388 • 7498 • 7736 • 7810 • 7811 • 7812 • 7813 • 7816 • 8000 • 8217 • 8571 • 8583 • 8601 • 8632 • 8652 • 8691 • 8807 • 8820-5 • 8859 (-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16) • 8879 • 9000 • 9075 • 9126 • 9241 • 9362 • 9407 • 9506 • 9529 • 9564 • 9594 • 9660 • 9897 • 9945 • 9984 • 9985 • 9995
10000
по
19999
10006 • 10118-3 • 10160 • 10161 • 10165 • 10179 • 10206 • 10303 • 10303-11 • 10303-21 • 10303-22 • 10303-238 • 10303-28 • 10383 • 10487 • 10585 • 10589 • 10646 • 10664 • 10746 • 10861 • 10957 • 10962 • 10967 • 11073 • 11170 • 11179 • 11404 • 11544 • 11783 • 11784 • 11785 • 11801 • 11898 • 11940 • 11941 • 11941 (TR) • 11992 • 12006 • 12164 • 12182:1998 • 12207:1995 • 12207:2008 • 12234-2 • 13211 (-1, -2) • 13216 • 13250 • 13399 • 13406-2 • 13407 • 13450 • 13485 • 13490 • 13567 • 13568 • 13584 • 13616 • 14000 • 14031 • 14396 • 14443 • 14496-10 • 14496-14 • 14644 (-1, -2, -3, -4, -5, -6, -7, -8, -9) • 14649 • 14651 • 14698 • 14698-2 • 14750 • 14882 • 14971 • 15022 • 15189 • 15288 • 15291 • 15292 • 15408 • 15444 • 15445 • 15438 • 15504 • 15511 • 15686 • 15693 • 15706 • 15706-2 • 15707 • 15897 • 15919 • 15924 • 15926 • 15926 WIP • 15930 • 16023 • 16262 • 16750 • 17024 • 17025 • 17369 • 17799 • 18000 • 18004 • 18014 • 18245 • 18629 • 18916 • 19005 • 19011 • 19092-1 • 19092-2 • 19114 • 19115 • 19439 • 19501:2005 • 19752 • 19757 • 19770 • 19775-1 • 19794-5
20000+20000 • 20022 • 21000 • 21047 • 21827:2002 • 22000 • 23008-2 • 23270 • 23360 • 24613 • 24707 • 25178 • 26000 • 26300 • 26324 • 27000 series • 27000 • 27001 • 27002 • 27003 • 27004 • 27005 • 27006 • 27007 • 27729 • 27799 • 29199-2 • 29500 • 31000 • 32000 • 38500 • 42010 • 50001 • 80000
См. также: Все статьи, начинающиеся с «ISO»

dic.academic.ru

Уроки программирования с нуля. Си-шарп для чайников

Книги по изучению языка Си-шарп, на которые я советую обратить особое внимание:
C# и платформа .NET 3.0. Автор: Эндрю Троелсен. Очень хорошая книга, которая подходит, как опытным программистам, так и новичкам. Начинать изучать Си-шарп стоит с нее. Получить эту книгу вы можете здесь.
CLR via C#. Программирование на платформе Microsoft .NET Framework 4.5 на языке C#. 4-е изд.. Автор: Дж. Рихтер. Эта книга является классическим учебником по Си-шарп. Для начинающего программиста эта книга не рекомендуется, но если вы уже кое-что умеете и понимаете — обязательно к прочтению. Получить эту книгу вы можете здесь.
C#. Сборник рецептов. Автор: Павел Агуров. Как понятно из названия, в этой книге собраны решения типичных, стандартных задач, что позволит вам в будущем тратить меньше времени на решение подобного рода задач. Книга будет интересна опытным программистам. Получить эту книгу вы можете здесь.
ASP.NET MVC 4. Разработка реальных веб-предложений с помощью ASP.NET MVC. Авторы: Чедвик Дж., Снайдер Т., Панда Х. Если вы уже неплохо разбираетесь в Си-шарп, и хотите создавать на нем веб-приложения (сайты) с помощью технологии ASP.NET MVC — эта книга для вас. Получить эту книгу вы можете здесь.

Ошибка в тексте? Выделите ее мышкой и нажмите Ctrl+Enter

Поблагодарить автора: Номер карты (ПриватБанк)
5168 7572 4170 8660
WebMoney
R372544961915 U685637142028 Z999792764387

Наверх

mycsharp.ru

История развития C# (си шарп)

Язык программирования C# (си шарп) – язык объектного ориентирования, который разрабатывался с 1998 года специально для сети Интернет, а вернее, для платформы .NET. Он опирается на строгую компонентную архитектуру и обеспечивает надежные алгоритмы безопасности программного кода.


Первая бета-версия C# 1.0 увидела свет летом 2000 года, а в феврале 2002 с Microsoft Visual Studio вышла окончательная версия языка. Версия 1.0 вобрала в себя лучшие стороны предшествующих ей популярных языков программирования C, Java и C++. Это позволило программистам легко осуществить переход на C#, основываясь на знаниях любого из перечисленных ранних языков.
Основной синтаксис и операторы перешли в C# из C. Объектная модель, реализованная в C++, в C# гораздо усовершенствована. Если, по отношению к C и C++, первая версия C# является прямым потомком, то для Java он будет, скорее всего, кровным братом. Конечно, Java тоже происходит от семейства C, и имеет так же много общего с C#, как и много отличий.
Отличием от предшественников является то, что в C# включено поддержание написания компонентов программ. Подобной поддержкой, например, выступают такие средства, как события, методы и свойства. Но главным ключом в компонентной ориентированности C# является, конечно же, обеспечение безопасной работы в среде мультиязыкового программирования.
В 2005 году вышел окончательный релиз версии 2.0 C#. Она укрепила позиции этого языка программирования и окончательно убедила в его эффективности и дальнейшем развитии. Добавление новых возможностей, таких как анонимные методы, обобщения, частичные и параметризованные типы значительно расширили возможности применения C#. Во второй версии была добавлена поддержка 64-х разрядных вычислений, что открыло возможности в увеличении адресного пространства. Также было реализовано создание триггеров, хранимых процедур и типов данных на .NET языках.
Следующая версия C# 3.0, окончательно вышедшая уже в 2008 году, полностью изменила мир программирования. Множество важных новшеств позволили C# стать флагманом в эволюционном развитии языков программирования. К ним относятся такие нововведения как: язык интегрированных запросов (LINQ), позволивший осуществлять запросы из XML из SQL; не явно типизированные переменные и методы расширения; Lambda-выражения, которые назначают реализацию кода делегатам с помощью нового, более простого синтаксиса. Lambda-выражения вместе с языком интегрированных запросов выразили и акцентировали C# в качестве ведущего языка программирования. Анонимные типы переменных позволили избежать громоздкости и откровенного неудобства при описании переменных, дав возможность объявлять новый тип непосредственно при ее создании. Интересной новинкой в C# 3.0 стали так называемые «ленивые вычисления», которые производят необходимые вычисления только при запросе нужных соответствующих данных. Вы можете использовать корпоративную мобильную связь на сайте http://www.westek.ru/corportivnaya-mobilnaya-svyaz, чтобы быть постоянно на связи со всеми сотрудниками, централизовано оплачивать все мобильные счета персонала компании, избегая лишних хлопот. С корпоративной мобильной связью Вам больше не придется сталкиваться с блокировкой счета мобильного номера, не беспокоясь, что у сотрудников закончились деньги на счету.
В 2010 году была выпущена текущая версия C# 4.0. Ее главным дополнением к предыдущим версиям стали именованные и необязательные аргументы. Именованные дают возможность привязки аргумента и параметра по имени, а неименованные позволяют указать аргумент, который используется по умолчанию, для каждого параметра. Не менее важное новшество – тип dynamic. Он объявляет объекты, проверка на соответствие типов которых происходит не при компиляции, а непосредственно во время выполнения программы.
Другие важные средства C#, представленные в версии 4.0 значительно упрощают процесс создания программ. Правда, реализованы они не языком программирования, а средой Framework 4.0. Это библиотека распараллеливания задач (TPL) и параллельный вариант языка интегрированных запросов (PLNQ). Их поддержка позволяет осуществить параллельность выполнения кода в компьютерах с многоядерными процессорами или несколькими одно ядерными.

. история возникновения си шарп c# delphi что общего история развития языков программирования visual studio и c# . история возникновения си шарп c# delphi что общего история развития языков программирования visual studio и c#

Комментирование и размещение ссылок запрещено.

delphi-box.ru

Сетевое программирование в Си-шарп

Несколько следующих уроков будут посвящены теме сетевого программирования. Это достаточно большая область программирования, и для начала ее освоения необходимо разобраться с базовыми понятиями и терминологией.

Компьютерная сеть – это система компьютеров, или другого вычислительного оборудования, которые объединены между собой теми или иными каналами связи, и могут обмениваться между собой информацией.

Сети классифицируются по такому признаку как архитектура. Наиболее распространенная архитектура «клиент-сервер», о которой многие не раз уже слышали.

Рассмотрим аналогию архитектуры клиент-сервер в ситуации из жизни. Человек идет в магазине за хлебом. В данном случае клиентом выступает покупатель, который говорит, что хочет купить хлеб (запрашивает некий ресурс, услугу). Продавец в этой ситуации выступает сервером, который обрабатывает запрос (какой продукт, деньги заплатили, или нет), и выдает ответ (хлеб если заплатили, или до свидания). Покупателей много – клиентов, и всех обслуживает один продавец – сервер.

Физически клиентом и сервером могут выступать компьютеры и программное обеспечение. Обмен данными между клиентом и сервером осуществляется посредством сетевых протоколов (http, ftp, pop3, smtp, tcp, udp…).

Протокол – сводка правил и методов, по которым будут передаваться данные между узлами сети. Протокол обеспечивает способ передачи информации и обработку ошибок.

Протоколы делятся на уровни по своему назначению. В современных сетях используется так называемый стек протоколов TCP/IP. Он имеет 4 уровня. Стек означает то, что протокол, который располагается выше по уровню, не знает и не имеет необходимости знать, как именно осуществляется передача данных протоколом нижнего уровня, используя механизм инкапсуляции.

#УровеньПримеры протоколов
4Прикладной (Application layer)HTTP, SMTP, FTP, DNS
3Транспортный (Transport layer)TCP, UDP
2Сетевой (Internet layer)IP
1Канальный (Link layer)Ethernet, IEEE 802.11 Wireless Ethernet

Работу стека протоколов можно описать следующей ситуацией. Один начальник компании хочет передать посылку другому начальнику компании. Первый сообщает второму, что пришлет посылку, и второй одобряет. Эти договоренности начальников происходили посредством протокола наивысшего уровня в стеке. Дальше первый начальник сообщает секретарю, что надо сделать и этот секретарь связывается с секретарем второго начальника и говорит «ожидайте курьера, который доставит посылку». Общение секретарей было уже протоколом ниже в стеке. Дальше секретарь вызывает курьера и говорит, что и куда доставить, и тот уже на самом нижнем уровне стека осуществляет передачу данных. Добраться до второй компании он может разными способами — пешком, такси, на рабочем автомобиле. В этой ситуации секретарю (протоколу выше) без разницы, как доберется курьер до места назначения, также как и начальнику не нужно ничего знать про то, как секретари договорятся доставить посылку (может другим способом, не курьером). Это демонстрирует нам механизм инкапсуляции.

Если брать сеть Интернет (WWW), то в качестве клиента выступает веб-браузер, а сервером является веб-сервер. Веб-сервер — это компьютер, на котором установлено программное обеспечение, которое реализует необходимый серверный функционал. В интернете обмен данными происходит посредством протокола HTTP (HyperText Transfer Protocol) – протокол передачи гипертекста. Вы вводите в строке браузера имя страницы, браузер делает запрос к веб-серверу, веб-сервер обрабатывает запрос и возвращает страницу.

Электронная почта (email) – еще один способ передачи данных (электронных писем) между компьютерами, объединенными в сеть. Есть сервер электронной почты, и его клиенты. Когда клиент1 отправляет почту клиенту2, она посредством протокола SMTP отправляется на сервер. Клиент2 же получает почту с сервера используя протокол POP3.

Следующие несколько уроков будут посвящены работе в сети с протоколами прикладного уровня, что на данном этапе обучения будет наиболее полезно и актуально.

В платформе .Net для работы с сетью существует пространство имен System.Net;

Это пространство имен предоставляет классы для работы со многими протоколами передачи данных, классы описывающие запрос (WebRequest) к серверу, ответ (WebResponse), класс веб-клиента WebClient, который обеспечивает обмен данными с ресурсом, по заданному URI, классы IP адреса, авторизации, «куков» и многое другое. Более детально всё это будет рассмотрено в соответствующих уроках.

Сетевое программирование очень широкая тема, тут парочкой уроков не обойдешься, и всё я охватывать пока не собираюсь, но самое актуальное и необходимое будет рассмотрено.

mycsharp.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *