BluePink BluePink
XHost
Servere virtuale de la 20 eur / luna. Servere dedicate de la 100 eur / luna - servicii de administrare si monitorizare incluse. Colocare servere si echipamente de la 75 eur / luna. Pentru detalii accesati site-ul BluePink.
Despre C#
-Facilitati, comparare cu alte limbaje de programare, exemple de cod-

Ioana Neagu, Diana Hora, Zorita Radosavlevici


Avantajele C#
C# este un mediu RAD
Alte facilitati C#
Facilitati care nu exista in C#
Exemple de cod
Linkuri

Iulie 31, 2000: viziunea initiala a Microsoft-ului asupra conceptului "Internet" este departe de continutul retelelor web din zilele noastre. Microsoft considera Internetul viitor ca o lume a serviciilor interdependente dezvoltate de indivizi diferiti, scrise in limbaje diferite, desfasurate pe tipuri diferite de suportul fizic, si gazduite de diferite sisteme de operare Internet.
        Oferta companiei pentru aceasta noua lume este platforma .Net. De fapt, .Net nu este o platforma in sensul traditional; nu este un sistem software sau hardware comun. In schimb, .Net este o colectie de protocoale care permit diverselor aplicatii internet sa se foloseasca de servicii disparate care ruleaza pe masini diferite
        Un rezultat direct al strategiei firmei Microsoft este ca versiunea de Microsoft Visual Studio include limbaje remodelate, modificate explicit sa suporte platforma .Net.

Avantajele C#                                                                                                                                                      sus
C# este un mediu RAD.                                                                                                                                             sus

         C# asigura colectarea spatiului disponibil in stilul limbajului Java: Una dintre cele mai semnificative caracteristici RAD ale limbajului C# este colectarea spatiului disponibil in stilul limbajului Java. La intervalele arbitrare din timpul momentul executiei, toate obiectele care nu mai sunt referite sunt in mod automat sterse. Usurand treaba programatorului de a elibera manual memoria- colectarea spatiului disponibil face generarea programelor mai usoară si fără eroare. Colectarea spatiului disponibil automatăeste totusi consumatoare de timp si imprevizibila. In consecintă, C# permite programatorilor sa dezactiveze local colectarea spatiului disponibil, marcand codul cu "nesigur", in situatiile in care  este necesară realizarea performantei in timp real.

         C# pune in aplicare un tip  un sistem valoare/referinta in stilul limbajelor Java/Delphi: Pentru a sprijini RAD, C# foloseste in continuare pointerul de C, C++ in favoarea tipului de sistem valoare/referinta Java si Delphi. in acest sistem, tipurile predefinite (intreg, real,string, si asa mai departe), enumerările, si structurile, sunt toate tipuri de valoari. Operatori de comparatie copiaza si verifica valorile acestor tipuri de variabile. Interfetele, clasele, si "delegate"-urile sunt toate tipuri de referinte. Operatorii de comparare copiaza si verifica identitatea obiectelor la care se refera aceste tipuri de variabile.
 Aceast tip de sistem este mai mult simplu decat pointerii din C++.Face mai usoară folosirea obiectelor si elimină multe din erorile ce apar in programele de C si C++.

         In C# interfetele sunt declarat separat fata de clase: C# de asemenea sprijin&a un model de interfata Delphi si Java, unde interfetele sunt declarate in mod independent de clase.Este opusul modelului C++, unde interfetele sunt clase de baza abstracte. Ambele interfete si clase pot sa mosteneasca interfetele multiple. In timp ce clasele pot sa mosteneasca o singura clasa de baza, interfetele nu pot sa mosteneasca clase deloc. Acest model evita problema multiplei mosteniri, in care pot aparea conflicte. Nevoia pentru mecanismele complexe ca de exemplu mostenirea virtuala este de asemenea eliminata. Interfata simplificata a C#-ului ajuta la marirea vitezei aplicatiei.

         Declaratiile si definitiile metodelor de clasa sunt combinate: C# simplifica dezvoltarea aplicatiilor prin combinarea declaratiilor si definitiilor de metodele clasei,asa cum face Java. Programatorii de C++ trebuie sa mentina separate fisierele pentru declaratii( fisierul antet) si definitii( fisierul de implementare), complicand dezvoltarea procesului software. Usurand programatorul de inca un task, C# descopera automat relatii printre modulele sursei. Acolo unde C++ necesita #include( si Delphi "uses") C# nu are nevoie de nimic aditional pentru a localiza fisierele inrudite de sursa.

         C# foloseste referirile metodelor, numiti "delegate", in loc de pointerii la metoda: C# foloseste referintele la metode pentru a conecta repede obiectele si metodele. Numite si "delegate",aceste metode sunt asemanatoare cu tipurilor procedurale ale limbajului Delphi. Hejlsberg a prezentat acel mecanism in Visual J++ desi el nu este parte standard a limbajului Java. Referintele la metoda sunt intrucatva asemanatoare cu pointerii la metoda din C++, dar sunt de departe mult mai elegante, sigure, si folositoare.

         Un delegat este un tip de o referinta care tine semnatura metodei. O aplicatie sa poata sa desemneze oricare metoda care un potriveste aceasta o semnatura la o variabila "delegate". Cand "delegate" este invocat, este chemata si metoda asociata..
        Spre deosebire de tipurile de proceduri Delphi, "delegates" suporta si multicasting-ul. O aplicatie poate sa desemneze multe metode la o variabila "delegat"; Cand variabila este invocata, sunt apelate toate metodele.
   
         C# foloseste mecanismul Java pentru sincronizarea unui singur fir: Pentru a pune in aplicare sincronizarea firelor de executie in C#, un programator pur si simplu marcheaza blocurile critice de cod. Unde un programator Java foloste cuvantul cheie "synchronised",un programator de C# foloseste"lock"=lacat. Un mutex protejeaza blocul, permitand numai un fir sa execute codul odata.

         Declaratiile suprascrise explicite: in cele din urma, C# foloseste declaratiile de suprascriere explicit pentru a sprijini RAD-ul. Declaratiile de suprascriere explicite sprijina dezvoltarea rapida a aplicatiilor, protejand metoda claselor namespaces si expunand accidental conflictele.
 Un programator al unei o clase C# derivate, trebuie in mod clar sa marcheze o suprascriere de metoda cu cuvantul cheie "override", asa cum face si in Delphi. Daca o clasa derivata include o metoda care are acelasi nume ca metoda virtuala din clasa de baza, compilatorul nu poate precis sa desluseasca intentia autorului.

         Pe de alta parte, un conflict de nume ar putea foarte bine accidental; se intampla in special cand clasa de baza si clasa derivata au fost implementate in mod independent de doi programatori, lucrand poate in companiile diferite. in astfel de caz, compilatorul va da un avertisment si va trata metodele clasei derivate ca o declaratie noua,nu ca pe o suprascriere.

         Daca, pe pe de alta parte, programatorul a decis in mod constient sa foloseasca nume pentru o noua metoda dintr-o clasa derivata, care are acelasi nume ca o metoda virtuala din clasa de baza, el sau ea poate includa cuvantul cheie "new" pentru a impiedica avertizarea data de compilator.
 
Alte facilitati C#                                                                                                                                               sus

        Luand in considerare toate caracteristicile discutate deja, suport puternic pentru RAD pare a fi unul din principalele obiective ale Microsoft pentru C#. Sunt si alte nevoi de dezvoltare importante la care C# trebuie sa raspunda. Acestea includ dezvoltare independenta de platforma, acces la resurse tipice platformei, si suport petru platformele COM si .NET. Sa examinam facilitatile C# prin care se intentioneaza a satisface aceste nevoi.
De exemplu, C# pune la dispozitie clase de atribute care convertesc interfete C# in interfete COM. Altele convertesc clase C# in coclase COM. Nu este nevoie de IDL sau de vreo fabrica de clase pentru a face aceste conversii. Unii comentatori ai limbajului au declarat ca toate clasele C# sunt obiecte COM. Acest lucru nu corespunde tocmai adevarului, dar nu atributele corespunzatoare, orice clasa C# poate fi exprimata ca un obiect COM. Alta biblioteca de atribute oferita impreuna cu compilatorul de C# impacheteaza clasele si functiile ca servicii Web. Un serviciu Web este un modul software gazduit care poate fi chemat prin internet folosind un protocol precum SOAP. SOAP impacheteaza apelari de metode, impreuna cu parametrii si valorile returnate de acestea, inpachete de date XML. Serviciile Web pot fi scrise in multe limbaje si livrate pentru multe platforme software si hardware. Mai mult, mai multe servicii Web pot coopera si forma o intreaga aplicatie Web. Folosind atributele corespunzatoare, un programator poate modifica cu usrinta  orice clasa sau functie C# intr-un serviciu Web.

Facilitati care nu se gasesc la C#                                                                                                                                 sus

            Multe din facilitatile pe care C# le foloseste in aplicatille Internet sunt alese din Delphi si Java. Totusi Microsoft pretinde ca C# descende din C si C++. De aceea vom examina unele caracteristici prezente la C++ si care lipsesc la C#.
           Totusi, chiar fara aceste facilitati ale limbajului C++, C# este un limbaj puternic, proiectat cu facilitati asemanatoare java si Delphi pentru a permite dezvoltarea de aplicatii internet. Datorita orientarii spre masina, si a lipsei de suport RAD,  C++ nu ar fi fost o baza potrivita pentru un limbaj menit sa fie folosit la a dezvolta aplicatii internet. Orice developer de C++ care trebuie sa scrie aplicatii si servicii pentru platforma .Net, va fi sfatuit sa invete C#. Iar acestea doua difera mai mult decat ar putea sugera numele.

  Exemple de cod                                                                                                                                                        sus

        In exemplul de mai jos vom arata cum C# face uz de resursele sistemului de operare (folosind o functie API,
InternetGetConnectedState). Aplicatia este folosita pentru a determina conectivitatea la internet a calculatorului gazda.

using System ;
using
System.Runtime ;
using System.Runtime.InteropServices ;

public class InternetCS
{

//Creating the extern function...
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState( out int Description, int ReservedValue ) ;

//Creating a function that uses the API function...
public static bool IsConnectedToInternet( )
{

int Desc ;
return InternetGetConnectedState( out Desc, 0 ) ;

}

}

Linkuri utile                                                                                                                                                                                             sus

http://www.c-sharpcorner.com/Internet.asp

www.msdn.com

http://www.javaworld.com/