FACULTY OF SCIENCE, PHYSICAL EDUCATION AND INFORMATICS Dissertation thesis Scientific coordinator, Conf. univ. dr. Popescu Doru Anastasiu Graduate,… [309871]
[anonimizat],
Conf. univ. dr. [anonimizat]
2017
[anonimizat] / news website with
C# / ASP .[anonimizat]. univ. dr. [anonimizat]
2017
List of figures
Figure 2.2.1 The .NET compilation process……………………………………26
Figure 2.4.1 Illustrative presentation of ORM…………………………………36
Figure 2.4.2.1 Illustrative presentation of…… EDM………………………….38
Figure 2.4.2.2 Illustrative presentation of…… Designer………………………39
List of tables
Table 1.3.1 Escape sequences from strings……………………………………12
Table 1.3.2 Types of numeric columns………………………………………..13
Table 1.3.3 Types of columns string…………………………………………..14
Table 1.3.4 Types of columns date and time…………………………………..14
Table 1.3.5 Arithmetic operators………………………………………………15
Table 1.3.6 Logical operators…………………………………………………..15
Table 1.3.7 Operators per bit……………………………………………………15
Table 1.3.8 Operators of comparison…………………………………………..16
Table 1.4.1 [anonimizat]………………………………………17
Table 1.4.2 Forms of the SHOW statement……………………………………21
[anonimizat] 'century of speed', the access to the desired information is faster than ever. [anonimizat], accessed either from a desktop, laptop, [anonimizat], or other gadget. [anonimizat] a [anonimizat], [anonimizat]. [anonimizat], [anonimizat].
The theme of the dissertation thesis
As a [anonimizat], my experience teached me that the greatest satisfaction and gratitude for myself is that i know that my final software product would help and simplifies the lives of other people in a certain way.
The main idea behind this dissertation thesis consist by developing an software application, a [anonimizat] a blog / news articles.
[anonimizat], lost their glow.
Chapter 1 SQL Technology
1.1 [anonimizat], [anonimizat], interpretation. [anonimizat] a way that at any time it is possible to extract promptly and accurately the data favorable to the achievement of a specific purpose.
The data is facts gathered from the real world. They are taken from measurements and observations and constitute any message received by a receiver in a certain form. A perception of the real world can be seen as a series of distinct or interdependent objects or phenomena.
The data itself is of no significance. Moreover, being nothing but a series of letters and figures, they can get various interpretations, most of them usually wrong. Data refer to numbers, facts, various documents, and so on. The information refers to organized data, data that have been filtered and ordered according to certain criteria. The desire of any user is to obtain information rather than manipulate dry data. A correctly-formed data model enables the information to be transformed into data and back into information without distorting its original meaning.
Getting information means actually entering the data available in a certain context, giving them a certain meaning in this way. What is stored in a database is data that is static in the sense that it remains in the same state until it is modified by the database administrator through a manual or automated process. For data to be transformed into information, it must be organized so that it can be effectively processed. In order to determine the data organization mode for an application, it is necessary to determine those data characteristics that allow the essence of their meaning to be extracted.
A formal and consistent set of rules defines a data model. For a particular application of a data model, the name of the database objects together with their properties and the associations between them is called a schema.
A data set organized according to certain criteria is a collection of data. A collection of objects that have their own identity and are characterized by a membership condition is called a lot.
The process of defining and structuring data in collections, grouping them together, and establishing linking between collection components and collections is the organization of data.
The file is a collection of data organized on qualitative, processing and purposeful criteria. A file is a collection of data in a combination that has a name and which is usually represented by a sequence of bytes in the form of two views:
Logical view: is the way the user views the file;
Physical view: is the way the file is stored in the external memory of your computer.
These two views may obviously be very different.
A database is an integrated and structured collection of operational data stored on a storage medium. Elsmari and Navathe define a database in the form of a collection of data in association. The purpose of a database is to store the data in such a way that the desired information can be obtained at any time. Information, unlike data, is dynamic in the sense that it changes according to the data stored in the database, but also in the sense that it can be processed and presented in various ways.
To make the difference between data and information, Hernandez proposes the following axiom:
Data is what is stored; Information is what is extracted.
In other words, the data must be extracted from the database so that it is meaningful. The evolution of the data organization methods over time is related to the technical solutions for their storage and includes the levels:
Level I – organization of data in classical files;
Level II – mixed file organization;
Level III – organization of data in classical databases;
Level IV – organization of data in relational databases;
Level V – organization of data in distributed databases.
Starting from Codd's work on relational modeling and language based on relational algebra or relational calculus, the international community has, over time, made great efforts to redefine and improve these concepts. In this respect, a number of relational language versions have been developed, such as SQL (Structured Query Language), QBE (Query-By-Example), and QUEL (Query Language).
SQL has its origins in 1974 when IBM used it for the first time in its System R research project running on VS / 2 mainframe systems under the Structured English Query Language (or SEQueL). The name was later changed to SQL (Structured Query Language, pronounced "sequel" or S-Q-L). Subsequent products of IBM, SQL / DS and then the popular DB2 use this language. SQL is based on the relational calculus that considers the use of tuple variables. In 1986, the National Standards Institute (ANSI) developed and launched the SQL standards, thus contributing to its extension to the entire community of database makers, which, although it has many variants, still uses the same set of standardized commands and structures.
1.2 SQL Characteristics
Advantages of database management systems (DMS- SGBD)
The advantages of database management systems to classic file systems are as follows:
1. Control of data redundancy
The waste of space that is made by storing the same information in multiple files is greatly diminished by the use of databases, but not completely eliminated due to other demands for performance improvement.
2. Data coherence
If a data item is stored multiple times, it must be ensured that all copies of it are updated if a value is updated (the article's value is the same for all its copies).
3. More information from the same amount of data
It can be obtained by integrating files containing different information about the same data.
4. Data sharing
Data can be used by multiple users at the same time. Changes or additions to the existing database can also be made without the need to repeatedly define all of the requirements.
5. Increased data integrity
It refers to the validity and consistency of stored data and is expressed by constraints (rules of coherence). The constraints can apply to data items in a single record or the relationships between records.
6. Increased security
It is done by assigning usernames and passwords to identify the persons authorized to use the database and impose the use of these data.
7. Applying standards
It refers to data format, name conventions, documentation, refresh procedures, access rules.
8. Cost reduction
By integrating, centralized funds are allocated, not separate to each department.
9. Conflict resolution
Each user will have his / her own requirements that may conflict with others. The database administrator can make decisions that make optimal use of resources.
10. Increase data accessibility and responsiveness
It is done through the use of programming languages in the fourth generation (SQL, QBE).
11. Increased productivity
By providing features that allow file manipulation and introduction of fourth-generation programming languages that greatly reduce programming time.
12. Independence of data
It leads to increased maintenance capacity as data descriptions are separated by applications.
13. Competition control is improved
It ensures that if two or more users access the same data at the same time, no information is lost or no integrity is impaired.
14. Ensure safety and restoration
By recovering the last coherent state of the database in the event of a hard or soft failure.
Disadvantages of database management systems
The disadvantages of database management systems to classic file systems are as follows:
1. Complexity
A number of data issues are to be considered in addition to classical applications. First, a thorough analysis of the data and then the actual application is made.
2. Size
DMSs (SGBDs) occupy a lot of disk space.
3. Cost of
A) DMS (SGBD) systems;
B) purchased hard drives;
C) conversion of existing applications to the new SGBD and new hard drive configuration.
4. Performance
It is lower when using more general-purpose SGBDs than a simple file-based application that calls a single function.
5. The effect of a malfunction
It is much larger due to centralization (a minor malfunction affects all users).
1.3 Tools, data types/columns/operators in SQL (Microsoft SQL Server)
Microsoft SQL Server is a relational database management system, or RDBMS, that supports a wide variety of transaction processing, business intelligence and analytics applications in corporate IT environments. It is one of the three market-leading database technologies, along with Oracle Database and IBM's DB2.
1.3.1 Working with data in SQL
By definition, the purpose of a database management system is to manage data, so practically everything we do in SQL implies, in one way or another, data. Each value of a SQL data has a certain type. For example, 12.3 is a number, and "xyz" is a string. Sometimes data types are explicit, such as when we issue a CREATE TABLE statement that specifies the type of each column that we declare as part of the table:
CREATE TABLE my_table
(
int_col INT, /* column with integer values */
char_col CHAR(20), /* column with string values */
date_col DATE /* column with calendar date values */
)
In some situations, data types are implicit, such as when we reference literal values in an expression, when we transfer values to a function or when we use the value returned from that function:
INSERT INTO my_table (int_col, char_col, date_col)
VALUES(98, CONCAT("t", "c"), 20170630)
To use SQL effectively, it is essential to understand exactly how data is being manipulated in SQL.
1.3.2 SQL data types
SQL Server „knows” many types of data, in this case general categories where different values can be represented:
Numeric values
Numbers are values like 57 or 98.69. SQL Server understands numbers specified as integers (non-fractional) or floating point values (fractional). The whole can be specified in decimal or hexadecimal format. Numbers can also be preceded by a minus sign (-) to indicate a negative value.
String values (character)
Strings are values like "Trump, Obama" or "Ana has apples". We can use single or double quotes to delimit a string value. Special characters can be specified using escape sequences, as can be seen in table 1.3.1.
Table 1.3.1 Escape sequences from strings
To include quotes in a string, we can proceed as follows:
• Duplicate quotes if the string is enclosed in quotes using the same character:
'Years "80s'
"She said: ""Take care of yourself!"" "
• Frame the string using the other quotes; in this case, we do not duplicate the quotes in the string:
"Years '50s"
'She said: "Take care of yourself!" '
• We cancel the meaning of quotes with a backslash character; this method is applicable regardless of the type of quotes used to fit the string:
'Years \'50s'
'Years \'50s"
"She said: \"Take care of you!\" "
'She said: \"Take care of yourself! \" '
NULL value
NULL is a kind of "no-type" value, generally used with the meaning "worthless", "unknown value", "missing value", "out of range", "none of the previous options" and so on. We can insert NULL values in the tables, find them in the tables, and test whether a value is NULL or not. We can not perform arithmetic operations with NULL values. (If we try, the result is NULL.)
1.3.3 Types of SQL Server columns
SQL Server provides user types of columns that include values from all general categories of data types, expecting the NULL value. The NULL value is rather treated as a type attribute in the sense that it specifies the ability of a column to contain or not NULL values. SQL Server provides for use, column types for both integer values and floating point values, as can be seen in table 1.3.2.
Table 1.3.2 Types of numeric columns
We also find in SQL Server types of string columns, as can be seen in Table 1.3.3. Strings can contain anything, even pictures or sounds, as arbitrary binary data.
Table 1.3.3 Types of columns string
Types of date and time columns in SQL Server are shown in table 1.3.4. For time values, SQL Server provides data types (with or without time), hours and time stamps.
Table 1.3.4 Types of columns date and time
1.3.4 Types of SQL Server operators
SQL Server includes many types of operators. Arithmetic operators, presented in table 1.3.5, include regular gathering, subtracting, multiplying and dividing operators as well as the modulo operator. Arithmetic operations are performed using BIGINT (64-bit) integer values. Note that if an operation involves high values, so the result exceeds the 64-bit domain, we will get unpredictable results.
Table 1.3.5 Arithmetic operators
The logical operators, presented in table 1.3.6, evaluate expressions to determine whether they are true (different from zero) or false (zero). SQL Server includes C-style operators &&, ||, and ! as alternative forms for AND, OR and NOT.
Table 1.3.6 Logical operators
Bit counter operators, presented in table 1.3.7, execute intersections and bitstream meetings where each bit of the result is evaluated in the form of the intersection or logical reunion of the corresponding bits of the operands. We can also make left or right bit shifts.
Table 1.3.7 Operators per bit
The comparison operators presented in Table 1.3.8 include operators for testing the relative size or lexicographic arrangement of numbers and rows, as well as operators to establish correspondence with a model and to detect NULL values.
Table 1.3.8 Operators of comparison
1.4 Syntax and SQL use in SQL Server
SQL statements in SQL Server can be grouped into several broad categories, as can be seen in table 1.4.1. Some of the SQL Server utilities provide what is essentially a command-line interface with some SQL statements.
Table 1.4.1 SQL Categories-Instructions
Almost every SQL statement refers, in one way or another, to a database or its constituent elements. The names take account of sensitivity to the difference between uppercase and lowercase, which are also described.
When we use names to refer to database elements, we are limited by the number of characters we can use and the length of the name. The form of names also depends on the context in which we use them:
• The length of the name. The database names, tables, columns, and indexes can be up to 64 characters long. Alias names can be up to 256 characters long.
• Name qualifiers. To refer to a database, we simply specify its name:
USE database_name
SHOW TABLES FROM database_name
To refer to a table, we have two options. A fully-determined table name consists of the database name and table name:
SHOW TABLES FROM database_name.table_name
SELECT * FROM database_name.table_name
Creating, deleting and selecting databases
SQL Server provides three database instructions: CREATE DATABASE to create databases, DROP DATABASE to remove them, and USE to select a default database.
The CREATE DATABASE statement
Creating a database is a simple operation; we simply name the database in a CREATE DATABASE statement:
CREATE DATABASE database_name
Restrictions are that the name must be allowed, the database must not already exist, and we must have enough privileges to create it.
The DROP DATABASE statement
Deleting a database is as simple as creating it, assuming we have enough privileges:
DROP DATABASE database_name
Important note, the DROP DATABASE statement removes the database and all the tables within it. After we deleted a database, it ended with it. Note that a database is represented by a catalog under the data catalog. If we have files that are not tables in that catalog, those files will not be deleted by the DROP DATABASE statement, in which case the database catalog is not removed.
The USE statement
The USE statement selects a database to turn it into the current (default) database for a server connection:
USE database_name
We must have some access privileges to the database; otherwise, we can not select it. In fact, we do not need to select a database to use its tables, because we can refer to its tables using the form database_name.table_name. However, it is much more convenient to refer to tables without having to specify a qualifier for the database.
Selecting a default database does not mean it must be the default database for the duration of the connection. We can issue any number of USE instructions to switch from one database to another whenever we want, provided we have access privileges to use them.
Creating, deleting, indexing, and changing tables
In SQL Server, we are allowed to create tables, delete them, and modify their structure using the CREATE TABLE, DROP TABLE, and ALTER TABLE statements. The CREATE INDEX and DROP INDEX instructions allow us to add or remove indexes from existing tables.
The CREATE TABLE statement
Tables are created using the CREATE TABLE statement. The CREATE TABLE statement specifies at least the name of the table and a list of columns within the table.
CREATE TABLE table_name
(
name CHAR(40),
age INT,
address CHAR(100),
sex ENUM('F', 'M')
)
The DROP TABLE statement
Deleting a table in SQL Server is much easier than creating it, and it's not required to specify anything about its content:
DROP TABLE table_name
SQL Server extends the DROP TABLE statement in some useful ways. First, we can delete multiple tables by specifying them all in the same instruction:
DROP TABLE table_name1, table_name2, ….
The ALTER TABLE statement
ALTER TABLE is a useful instruction in SQL Server when we notice that the structure of a table no longer reflects its finality. Here are some of the features of the ALTER TABLE statement:
• Rename a table. We can rename a table simply by specifying the old name and the new name:
ALTER TABLE table_name RENAME AS new_table_name
• Modify the type of a column. To change the type of a column, we have the CHANGE and MODIFY clauses.
ALTER TABLE table_name MODIFY i MEDIUMINT UNSIGNED
ALTER TABLE table_name CHANGE i i MEDIUMINT UNSIGNED
Getting information about databases and tables
We have many instructions for getting information about the databases and the tables that they contain. The SHOW statement is very useful in obtaining information on many aspects of the data bases and their tables, as can be seen in the following table:
Table 1.4.2 Forms of the SHOW statement
Recovering records
It makes no sense to place records in a SQL Server database unless we can easily retrieve them at a later time and do not use them in one way or another. Here is the role of the SELECT statement: to help us get to our data. It's probably the most commonly used statement in SQL language, but at the same time it may be the most difficult; the restrictions we use in choosing ranges may require, in many tables, comparisons between columns and may be arbitrarily complex.
The basic syntax of the SELECT statement is as follows:
SELECT list_selection Columns to be selected
FROM list_tables Tables from which rows are selected
WHERE primary_restriction The conditions that the rows must meet
GROUP BY group_columns How to group results
ORDER BY sort_columns How to sort out the results
HAVING secondary_restriction Secondary conditions the rows must meet
LIMIT number Limit applied to the results
All elements in this syntax are optional, except the SELECT word and the list_selection parameter, which specifies the data we want to find. Some database systems also require the use of the FROM clause.
Chapter 2 C# / ASP .Net Technology
2.1 Short history
"The name of the C # language was inspired by the ♯ (diez) notation in music, indicating that the music note followed by ♯ is taller with a semiton. It is a similarity with the C++ language, where ++ represents both the increment of a variable with a value of 1, but also the fact that C++ is more than C language.
The C# language was developed within Microsoft. The main creators of the language are Anders Hejlsberg, Scott Wiltamuth and Peter Golde. The first widely deployed C# deployment was launched by Microsoft as part of the .NET initiative in July 2000. From that moment on, we can talk about a spectacular evolution. Thousands of C, C++ and Java programmers have migrated easily to C #, thanks to the similarity of these languages, but especially to the qualities of the new language. At this point, C# has earned and continues to attract many followers, becoming one of the most widely used languages in the world. Creators of C# intended to endow language with more facilities. The success he is enjoying today confirms his qualities:
* It is a simple, modern programming language of general utility, with high productivity in programming.
* It's object-oriented language.
* Allows the development of robust, sustainable industrial applications.
* Provides full support for the development of software components that are very needed, for example in distributed environments. In fact, C# can be characterized as being not only object-oriented but also component-oriented.
These features include other features, such as internationalization support, namely the ability to write applications that can be easily adapted to be used in different regions of the world where different languages are spoken without being necessary changes in the software architecture."
Conformable Constantin Gălățan and Susana Gălățan, C# pentru liceu, page 2
Closely related to the .NET Framework architecture (.NET Framework) on which it works, C# manages the memory used automatically. The release of the occupied memory (garbage collection) by objects that are no longer needed by the application is an important feature of language.
Programmers do not have to decide on their own, as they do in C++, for example, where and when objects have to be destroyed. In C#, applications are also written for complex systems that operate under a wide variety of operating systems as well as embedded systems. The latter range from portable devices such as digital clocks, mobile phones, MP3 players to stationary traffic lights or controllers for automation of production.
Syntactically C# derives from C++, but also includes influences from other languages, especially Java.
2.2 The architecture of .NET Framework
The .NET architecture is a software component that provides an application programming and execution environment for Microsoft operating systems. It is included in the Windows Server 2008 and Windows Vista operating systems and can be installed on Windows XP and Windows Server 2003. The .NET Framework is an environment that allows the development and running of platform-independent Web applications and services.
The C# language is in close association with the .NET architecture. Initially, C# was developed by Microsoft to create the .Net platform’s code, just as the original C-language was to deploy the UNIX operating system. .NET provides an impressive collection of classes organized in libraries that C# uses.
It's time to specify that C # works with .NET as an infrastructure, but .NET also supports other languages, such as C++, Visual Basic or Java. In any of these languages you’re programming, you have the same class libraries available. .NET makes interoperability of languages.
.NET is made up of two important entities:
Common Language Runtime (CLR)
This is the programs execution environment. It is the module that manages and executes code written in .NET-specific languages. CLR also provides important services such as application security, portability, memory management and exception handling.
Base Class Library
This is the .NET Class Library. This library covers a wide range of programming needs, including user interface, database connectivity and data access, web application development, network communication and more. The library’s code is precompiled, usually encapsulated in functions, called methods, which the programmer can call from his own program. In their turn, the methods belong to classes, and the classes are organized and separated by namespaces. What is to be remembered is that programmers combine their own code with the .NET Class Library’s code for application development.
2.2.1 Compiling programs on the .Net platform
Interpreted languages
When we’re programming in an interpreted programming language, we will write the code and run the application. Using a language-specific interpreter, each code line is interpreted at the time of the roll, and is immediately converted to machine code and executed. The good part is that we can run the code until the first bug, we can remove the error in the code and then continue the code execution. The language does not require compilation and binding time. The unpleasant part is that the interpreted languages are slow.
The Basic language was originally a interpreted language, but later, since the 1980s, compiled versions also appeared. The vast majority of Web scripting languages are such interpreted languages.
Compiled languages
The code written in such a language, called source code, is translated by the compiler into a code close to the machine level, called executable code (for example the code contained in the files (*.exe). If errors occur during compilation, then it is necessary to remove them, and then compile again. If the application passes now the compilation without syntax errors, then the executable code will be resulted and we will be able to run the application. C and C++ are classical examples of compiled languages.
From this perspective C# is a compiled language. But not in the sense described above. To understand, we need to know that after compiling a C# program, an executable code is not created. A file called assembly is created, which typically identifies itself with the extension .exe or .dll. Such a file can not be executed on a system that does not have the .NET infrastructure. The file contains a special type of code, called Intermediate Language, briefly CIL (Common Intermediate Language). The CIL language defines a set of portable instructions, independent of any type of processor and platform. Figure 2.2.1 illustrates the process of creating the executable code on the .NET platform.
Figure 2.2.1 The .NET compilation process
When a program is executed, CLR activates a special compiler called JIT (just in time). It takes the CIL code and converts it into executable code. Transformation is "on demand", in the sense that a code sequence is compiled only when it is first used. A compiled program in CIL format can run on any system where the Common Language Runtime is installed. This ensures the portability of .NET applications.
The compiled .exe or .dll file contains, in addition to CIL code, the so-called metadata. Metadata describes the data used by the application.
2.2.2 The main features of .NET architecture
From the point of view of those presented up to now, we can summarize the following features:
Multilanguage development: Because there are multiple languages for this platform, it is easier to implement specific parts in the most appropriate languages. The number of currently implemented languages is greater than 10. This development also addresses the debugging of applications developed in several languages.
Processor and platform independence: CIL is independent of the operating system and processor. Once written and compiled, any .NET application (managed by CLR) can be run on any platform. Thanks to the CLR, the application is isolated from hardware or operating system specificities.
Automatic memory management: Memory deallocating issues are largely resolved; the overhead induced by the garbage collection mechanism is supportive, being implemented in much earlier systems. Note, however, that there is still the possibility of leakage of memory in an application managed by the .NET platform.
Versioning support: Versioning is now a consideration. If an application has been deployed and tested using certain components, installing a newer version component will not interfere with the proper functioning of the application in question: the two versions will coexist peacefully, choosing them on the basis of manifests.
Support for open standards: Not all devices run Microsoft operating systems or use Intel processors. For this reason anything closely related to them is avoided. It uses XML and its most prominent descendant, SOAP. Since SOAP is a simple XML-based protocol that uses HTTP protocol, it can easily cross firewalls, unlike DCOM or CORBA.
Easy distribution: Currently, installing an application under Windows means copying files to specific folders, changing registry values, installing COM components and so on. Complete uninstalling an appplication is in most cases a utopia. .NET applications, thanks to metadata and reflection, are going through these issues. It is hoped that the installation of an application will not mean more than copying the necessary files to a directory, and uninstalling the application will be done by deleting that directory.
Distributed architecture: The new philosophy is to provide access to distributed Web services; it work together to obtain the desired information. The .NET platform provides support and tools for doing this type of applications.
Security: Distributed component applications automatically require security. The current security mode, based on user or Java rights, where the suspected code is run in a "sandbox" without access to critical resources, is replaced in .NET by a finer control based on assembly metadata (the area it comes from – Internet, intranet, local car, etc.) as well as security policies that can be set.
2.3 Web development with ASP .Net
2.3.1 Introduction in ASP .Net Web Forms
To understand how to develop a website with ASP. Net is important to know how communication between the browser and the web server works.
This process consists of the following main steps:
The Web Browser initiates a request (request) of a resource to the Web server where the desired application is installed.
The request is sent to the Web server using the HTTP protocol.
The Web server processes the request.
The web server sends an answer to the browser using the HTTP protocol.
The browser processes the HTML response by displaying the web page.
The user can enter data (say in a form), press the button Submit and send data back to the server.
The Web server processes the data.
Repeat from step 4.
The web server receives the request and then sends a response, back to the browser, after which the connection is closed, and the resources used to process demand are released. This is the way of working used for display static pages (data in a page does not depend on other data from other pages or on other previous user actions) and no information is stored on the server.
In the case of dynamic web pages, the server can process page requests contains code that runs on the server, or the data can be saved on the server between two browser requests.
Sending data from the browser to the server can be done using GET or POST.
Through GET, the URL is completed with a string of characters (QueryString) made up of pairs of key type = value separated by &.
Example:
GET /news-details.aspx?Id=13&IsVisible=True HTTP / 1.1
Using POST, the data is placed in the body of the message sent to the server:
Example:
POST /news-details.aspx HTTP / 1.1
Id=53&IsVisible=False
With Get can not send large data, and because of the data are written in the browser URL, security issues may occur. That's why it is preferable to use the POST method for sending data.
Sending data back to the server is often called PostBack. The action of PostBack can be used with both GET and POST methods. To know if data is sent (POST) or the page is only required by the browser (GET), with others words to know if the current page is loading for the first time or not, in ASP .Net uses a property of the Page class called IsPsotBack.
2.3.2 Structure of an ASP.NET page
When creating a new project, a new webpage appears in the Solution Explorer window called Default.aspx. Any .aspx webpage consists of 3 sections: the section of directives, section of code and the layout section.
The directive section is used to set the work environment, specifying how the page is processed.
<%@ Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="news-details.aspx.cs" Inherits="Customizable_Blog_News_Website.news_details" %>
The code section contains the C# code associated with the page or objects on the page. The code can be placed directly on the page or in a file with the .cs extension, with the same name as the page (e.g. news-details.aspx.cs). If it is found directly on the page, the code is comprised of <script> </ script> tags:
<script runat=”server”>
protected void btnTest_Click(object sender, EventArgs e)
{
Page.Title = “My web project”;
}
</script>
Typically, <script> blocks contain code that runs on the client side, however if the runat = "server" attribute is used, the code will run on the web server. In the example above, when the button is pressed, the title of the webpage changes in browser.
If in the window to add a new page to the project, check Place code in separate file, the code is placed in a separate file, and in the the section of the directive specifies the name of this file.
Example: CodeFile="default.aspx.cs"
The layout section contains the HTML code in the body section:
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="BtnTest" runat="server" OnClick="BtnTest_Click"
Text="Click me" />
</div>
</form>
</body>
The runat = "server" attribute for a specific control, specifies that for the object
respectively, the ASP .Net Runtime Engine running on the web server (IIS) will do
transforming into a standard HTML object. This conversion is done by browser type, javascript version installed on the browser and code C# associated with that object (called code behind).
2.3.3 Server controls
A server control can be programmed through a server-side code to respond to certain events on the page. It automatically maintains the state between 2 requests to the server, it must have the id attribute and the runat attribute.
There are two types of server controls: Web and Html. Web server controls provide more programmable features than HTML. It can also detect the browser type and can be properly transformed into html tags harmful. ASP .Net comes with a very rich suite of controls that can be used by programmers and covering a large part of the functionalities required by a web application.
An important property of server controls is AutoPostBack. To understand the example, we will consider a page where we have a checkbox object and a textbox object that has the property visible = false. In the moment when the checkbox is checked, we want the textbox object to appear on the page. The code can be the following:
protected void chkTest_CheckedChanged(object sender, EventArgs e)
{
if (chkTest.Checked == true)
{
txtTest.Visible = true;
txtTest.Focus();
}
else
{
txtTest.Visible = false;
}
}
When we run the page, we find that nothing happens. To be executed the chkTest_CheckedChanged method, the page must be resent to the server in the moment that the checkbox is checked. The server must execute the code and then resend it to the browser page where the textbox is visible or not. That's why the checkbox control must generate the PostBack action, which happens if it is set the True property of AutoPostBack. Some controls always generate Postback when a specific event occurs. For example, the click event of button control.
2.3.4 Keep information in web applications
There is a fundamental difference between Windows and Web applications. Namely, in Windows applications once created an object it remains in memory in principle until the application is finished and can be used in windows other than those in which it has been created as long as it is public. On the other hand, in web applications the pages do not remains stored in the memory of the user's (client) computer and here we are going to put it the issue of keeping information.
When the browser requests a specific page, it is loaded by the web server, it is executed the associated code based on the data sent by the user, resulting in a format response html sent to the browser. After the page is processed by the server, the objects in the page are deleted from memory, thus losing values. That is why the question arises: how to save/send information between pages of a website or even within the same page, between two successive requests to the server?
2.3.4.1 Keeping the control status
ViewState object
The state of a page's controls is automatically preserved by ASP. Net and so on we do not have to worry about the information that appears in the controls for that they will not disappear at the next PostBack – that means at the next current page load. For example, if we write a text in a text box and then press a button that generates a PostBack and the page reloads, it will contain the textbox with the text we entered before reloading.
In the moment that the html code is generated by the server it generates a html control of type <input type = "hidden" …>, whose value is a string of encoding the state of the page’s controls:
<input type=”hidden” name=”__VIEWSTATE” id=”__VIEWSTATE”
value=”/wEPDwULLTE1OTg1NDYyNDZkZFCFstl/DwSGv81TuCB397Tk5+CJ” />
Values can be added in ViewState and by the programmer using the object
ViewState with the Add method (key, object_value): ViewState.Add ("Test", "Hello");
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false)
{
ViewState.Add("ViewStateTest", "Hello");
}
}
Data retrieval is done using the object name as an index:
protected void BtnTest_Click(object sender, EventArgs e)
{
txtTest.Text = ViewState["ViewStateTest"].ToString();
}
2.3.4.2 Keeping other information
As we have seen in the previous paragraph, the state of controls on a particular one ASP .Net webpage is kept between multiple requests to the server for the same Page, using the ViewState object automatically, transparent for the programmer.
If we want to keep more information than just the contents of the controls, such as the values of some variables instantiated on a given page, then we have to do it explicitly, because they are lost when the web server regenerates the current page, which happens at every PostBack, as it happens for example, when you press an ASP .Net button.
Profiles
A possibility to keep a user-specific information is to use the Profile object through the Web.Config configuration file. This is an XML file in which configuration options are retained. To add a property to the profile object in the Web.Config file, add:
<profile enabled="true">
<properties>
<add name ="ProfileTest" allowAnonymous ="true"/>
</properties>
</profile>
The name attribute retains the name of the property. After these changes, the property defined in Web.config can be called for the Profile object:
Profile.ProfileTest = “Hello world”;
OR
lblTest.InnerText = Profile.ProfileTest;
Session
The Session object is created on the web server when the site was first accessed by a user and remains in memory in principle as long as the user remains connected at the site. There are exceptions, but they are not covered by this material.
To add an object in a session, we just write a gender code following:
protected void BtnTest_Click(object sender, EventArgs e)
{
Session["test"] = 12;
}
Session is actually a dictionary (list of key pairs – value) in which the values are object type. This means reading the values in the session will have to to make a type conversion.
protected void BtnTest_Click(object sender, EventArgs e)
{
test = Session["test"].ToString();
txtTest.Text = test;
}
Once an object has been entered in Session, it can be accessed from all pages of the application, as long as he is there. The programmer can remove the object from Session when it wishes:
Session.Remove("test");
Application
The Application object behaves in the same way as Session, but it is specific of the entire application, to all users who access a website at a time date, not a particular session. In other words, once an object has been inserted into the Application, it can be accessed from anywhere on the site and by all of its users.
Static members
All variables declared as static are specific to the entire application and not to one certain session. For example, if a site is accessed by User1 and a declared variable:
static string test = "init";
and it changes it:
test = "changed";
then all users of the application will see the changed value from that moment before.
2.3.4.3 Conclusions
For the ViewState object, the data is saved in the web page as a string of characters, and in the case of the Session or Application object in memory of web server. If the saved data is large, the first case increases the size of the web page, which will be transmitted more slowly, and in the second case it results excessive use of web server memory, which leads to slower downtime thing. This excessive use of memory may also occur in the case of a size of the data is slightly lower, but a large number of users who access the page simultaneously (for each one will create a session object).
2.3.5 Data validation
In all the web applications and not only is the issue of validating the data entered by the user. In other words, we have to make sure that the user of our site only inserts the correct data into the textboxes that are available to him. Of example if a web page requires the user to enter his or her age and we put a text box at his disposal for this, it will be mandatory to make sure that in that text box can only enter digits and that the resulting number is framed in a certain interval. Or, another example is to enter a valid email address from the point of view of the format.
ASP .Net comes with a series of ready-made controls for data validation. These controls are actually classes that come from the same hierarchy, based on a class with properties common to all validators.
Common properties
ControlToValidate: is the property of a validation control that points to the control (the textbox) that needs to be validated.
ErrorMessage: is the text that is displayed on the page when the data in the validated control does not match the chosen rule.
EnableClientSideScript: is a boolean property that specifies where the validation code (on client or server) is executed.
Other properties specific to the type of validator.
Validators
RequiredFieldValidator: verify if in the textbox associated with the property ControlToValidate text was inserted. Useful for forms in which certain data are mandatory.
RangeValidator: verify that the information entered in the associated textbox is part of a certain range, specified by the type of date entered (the property Type) and MinimumValue respectively MaximumValue.
RegularExpressionValidator: verify the information in the associated textbox is consistent with a specified regular expression. It is useful for validating some information such as email addresses, phone numbers, etc. – generally information that has to conform to a particular format. The property ValidationExpression must be set in which you can choose a few well-defined common phrases.
CompareValidator: compares the data entered in the textbox associated with a default value (ValueToCompare), based on the selected operator (Operator property) and the type of data that is expected (Type property).
In addition to the validators listed above, the programmer can create customized validators to verify user inputs according to their own rules.
2.4 Entity Framework ORM in C#
Object relational mapping is a layer that is responsible for narrowing the gap between object-oriented programs and relational databases. ORM (object relational object) in the software industry is a programming technique for data conversion between incompatible databases and object-oriented programming languages. This in fact creates "virtual database objects" that can be used within the programming language.
Figure 2.4.1 Illustrative presentation of ORM
2.4.1 Brief introduction to LINQ
At a simple search on the internet or through books, we can find more descriptions of Microsoft Language Integrated Query (LINQ), including:
LINQ provides a uniform programming template for any type of data. With this, we can interrogate and manipulate data by using a consistent pattern that is independent of data.
LINQ is another tool for integrating SQL queries into the code.
LINQ is another layer of data abstraction.
All of these descriptions are correct up to one point, but each focuses on one aspect of LINQ. LINQ is much easier to use than a "uniform programming mode", it can do much more than just embed SQL queries; and is far from being just another layer of data abstraction.
What is LINQ?
LINQ is a programming model that introduces queries as a first class concept in any Microsoft .Net Framework language. LINQ provides a methodology that simplifies and unifies the implementation of any type of data access. LINQ does not oblige us to use a specific architecture; facilitates the implementation of several existing data architectures, such as:
RAD/prototype
Client/server
N-tier
Smart client
LINQ made its first appearance in September 2005 as a technical preview. Since then, it has evolved from an extension of Microsoft Visual Studio 2005 to an integrated part of the .Net Framework and Visual Studio 2008, both launched on the market in November 2007. The first version released on the market by LINQ directly supported several data sources .
Now, with the .Net Framework 4 and Visual Studio 2010, LINQ also includes LINQ to Entities, which is part of the ADO .Net Entity Framework and Parallel LINQ (PLINQ).
2.4.2 LINQ to Entities: Data modeling with Entity Framework
“LINQ to Entities” is the official Microsoft Language Integrated Query (LINQ) engine for querying Microsoft ADO .Net Entity Framework models.
The Entity Data model
The first and most important step in developing an Entity Framework based solution is to create the Entity Data Model (EDM). To do this, we have two options in Visual Studio 2010 and, by default, in its higher versions:
Starting from a schema of the existing database
Starting from "nothing" (empty model) and generating the resulting database schema.
Both approaches have pros and against points. Although using the Entity Data Model Designer is easy, we can also use EdmGen.exe, the command-line tool available in the Microsoft .Net Framework Software Development Kit (SDK) to essentially do the same things that the Entity Data Model Designer does.
Generate EDM from an existing database
By choosing this approach, we can use the Entity Data Model Designer to select the tables, views, and stored procedures that we want to include in the resulting model. Visual Studio provides us with a step-by-step wizard, called the Entity Data Model Wizard, which supports the mapping of single tables or views of unique entities and stored procedures to corresponding methods. Figure 2.4.2.1 illustrates the main step of this wizard.
Figure 2.4.2.1 Illustrative presentation of the main step in generating EDM
In figure 2.4.2.2, we can see the user interface of the Entity Data Model Designer (UI) resulting from this modeling methodology, applied to its own tables in the application database that is the subject of this thesis. Each resulting entity has a set of properties, each of them mapping the columns of tables in the database. Through Entity Data Model Designer, we can change the name, type and general modeling of each column and / or property. As can be seen in Figure 2.4.2.2, EDM Designer also deducts relationships between tables, defining the navigation properties and foreign keys in the tables.
Figure 2.4.2.2 Illustrative presentation of Entity Data Model Designer
If we change the structure of the database, or maybe later we add new tables, views or stored procedures in the model, we can invoke the Update Model From Database function from the context menu of the EDM Designer. This feature asks us to complete a wizard similar to the one used to generate the model for the first time, letting us add, refresh or remove tables, views and stored procedures of our model.
Creating an EDM from an existing database is simple, but the result is very closely related to the physical structure of the database. This works only in situations where the database schema is known and largely fixed over the lifetime of the given application. In situations like this, we can think that Object Relational Mapping (ORM) as the Entity Framework is basically an excellent substitute for the 'data layer', instead of a pure ORM approach.
However, this type of data model generation follows a well-supported route; we can take advantage of the Entity Framework's capabilities to quickly define the access code to the data without having to worry about the details of access to data.
2.4.3 Entity Data Model Diagram (.edmx)
The file generated from EDM Designer is an XML file based on an XML schema specific to the namespace http://schemas.microsoft.com/ado/2008/10/edmx. It consists of three main sections:
Storage scheme: defines the storage layer (database) through a Storage Schema Definition Language (SSDL)
Conceptual scheme: describes the conceptual state (entity) through a Conceptual Schema Definition Language (CSDL)
Conceptual to Storage Mapping: defines mappings between conceptual schema and storage scheme
For 'multidatabase' solutions, although the conceptual scheme should remain the same for each physical data base, the storage scheme and mapping could change according to the physical database used.
In unusual situations, it may be necessary to manually modify some of the information described in the .edmx file because Entity Data Model Designer does not support any possible change. However, for most common scenarios, regeneration of the .edmx file through the Entity Data Model Designer will suffice.
2.5 The Bootstrap Framework – HTML, CSS and JavaScript
Bootstrap is a collection of tools for creating free open-source websites and applications. It contains HTML and CSS-based templates for different forms of application: typography, shapes, buttons, navigation and other graphical interface components, as well as optional JavaScript extensions. The Bootstrap Framework aims to facilitate web development.
Bootstrap is a front-end, which is more accurately a user interface. It is also a web-application framework, which is itself a software framework that is designed to support the development of dynamic websites and web applications.
2.5.1 Origin
Bootstrap, originally called Twitter Blueprint, was developed by Mark Otto and Jacob Thornton on Twitter, as a framework to encourage coherence and stability on internal tools. Prior to Bootstrap, various libraries have been used to develop the interface, which has led to inconsistencies and a high maintenance burden. After several months of development by a small group, many Twitter developers began to contribute to the project as part of the ‘Hack Week’, a Hackathon-style week for the Twitter development team. It has been renamed from ‘Twitter Blueprint’ to ‘Bootstrap’ and launched on the market as an open-source project on 19.08.2011. He continued to be continuously improved by Mark Otto, Jacob Thornton and a small group of core developers as well as by a broad supporter community.
On 31.01.2012, Bootstrap 2 was announced. This release has added the appearance of 12-columns and ‘responsive-design’ components, as well as changes to many of the already existing components. The launch of Bootstrap 3 was announced on 19.08.2013, moving to a first-ever approach to mobile phone design.
2.5.2 Characteristics
Bootstrap is compatible with the latest versions of Google Chrome, Firefox, Internet Explorer, Opera and Safari browsers, although some of these browsers are not supported by all platforms. Beginning with version 2.0 also supports responsive web design. This means that the layout of webpages is dynamically adjusted, taking into account the features of your device (desktop, tablet, mobile phone).
Starting with version 3.0, Bootstrap adopted a "mobile first" design philosophy, assuming the responsive design as the default. Bootstrap is open source and available on GitHub. Developers are encouraged to participate in the project and make their own contributions to the platform.
2.5.3 Structure and functionality
Bootstrap is modular and consists mainly of a series of LESS style sheets that implements the various components of the tool kit. A style sheet called bootstrap.less includes style sheet components. Developers can adapt the Bootstrap files themselves by selecting the components they want to use in their project. Adjustments are possible to a limited extent via a central configuration style sheet. Major changes are possible through the LESS (stylesheet language) statements.
Using LESS allows for the use of variables, functions and operators, embedded selectors and so-called mixins.
CSS component of Bootstrap
Bootstrap provides a set of stylesheets that provide definitions for the basic style of all important HTML components.
Reusable components
In addition to regular HTML elements, Bootstrap also contains other commonly used interface elements. These include advanced button buttons (for example, grouping buttons or drop-down buttons, navigation lists, navigation, paging, etc.), labels, advanced printing capabilities, thumbnails, warning messages and a progress bar. Components are implemented as CSS classes, which must be applied to certain HTML elements on a page.
JavaScript components
Bootstrap comes with some JavaScript components in the form of jQuery plugins. They provide additional user interface elements such as dialog boxes, tooltip messages etc. They also extend the functionality of some interface elements, including for example a self-complete function for input fields. In version 2.0, the following JavaScript plugins are supported: Modal, Dropdown, Scrollspy, Tab, Tooltip, Popoever, Alert, Button, Collapse, Carousel and Typeahead.
Chapter 3 Application presentation
In the final creation of the application there are two major and important components:
my own database of SQL Server type, required to store the system information
the web application itself, the web interface with the user
3.1 Description of the database
The application’s database is SQL Server type. Below is described in the pictures, the database behind the application.
The general structure of the database
The table “users” is responsible for storing the main users information in the system
The table “news” is responsible for storing the main news articles information in the system
The table „news_images” is responsible for storing the main news articles images information in the system
The table „website_settings” is responsible for storing the main website’s settings information in the system
The table „social_networks” is responsible for storing the main website’s social networks information in the system
The table „email_password” is responsible for storing the main website’s e-mail account information in the system
The table „access_logs” is responsible for storing the main website’s accessed pages information in the system
The table „application_logs” is responsible for storing the main website’s operations information in the system
The table „application_logs_errors” is responsible for storing the main website’s operations errors information in the system
3.2 Description of the web application
In the development process of the web application the most important components used, which should be mentioned, would be:
the structural architecture of the project is specific to the ASP .Net Web Forms
working with the database behind is facilitated by the integration of Entity Framework v5.0.0
the user interface (UI) is facilitated by the integration of AjaxControlToolkit v4.1.60919.0, HtmlAgilityPack v1.4.9.5 and Bootstrap v2.0 combined with v3.0
the main news articles editor UI is facilitated by the integration of CKEditor.NET v3.6.6.2
the news articles photo gallery is facilitated by the integration of fancyBox v2.1.7
How our application works: the principle of the application is actually very simple, to provide pure information to the visitors/readers. The persons that visits the website are able to receive information under a blog/news articles format. They are also able to register an own account on the platform, earning some facilities like e-mail notification of the newest articles posted.
How our application looks: the web application itself it consists by two small-web-applications.
The first application consists by the front-end UI to the visitiors/readers/users
This is how the main UI looks like to visitors/readers
This is how the news article content looks like to visitors/readers
This is how the register account page looks like to visitors/readers
This is how the main UI looks like to visitors/readers/users after they perform a valid „Log in”
This is how the main user’s settings section looks like to visitors/readers/users after they perform a valid „Log in”
The second application consists by the back-end UI to the website’s administrators
This is how the main administration „Log in” UI looks like to the administrators
This is how the main administration UI looks like to the administrators after they perform a valid „Log in”
This is how the news articles administration UI looks like
This is how the website settings administration UI looks like
This is how the administrator accounts administration UI looks like
This is how the user accounts administration UI looks like
This is how the settings administration UI looks like
3.3 Conclusions
The application presented above has been developed in a context of a century where the information means power. The access to information is easier than ever nowadays and such platforms like this one represent the most directly way to deliver it.
I consider that the application itself has potential to become a web CMS and i’d like to continue the development work on it making it even more customizable and complex. Meanwhile, i could even release it to the online environment as a beta version to test its behavior among the internet users around the world.
3.4 Development opportunities
The current version of the application can be “reviewed” as the first version, v1.0. It can be improved by adding new features, by listing only a few:
the expansion of the functionalities like: a CAPTCHA-code system on the register user account’s workflow, an e-mail validation and confirmation system before the user’s account be activated, a BAN feature for the user accounts that violate the rules etc.
the expansion of the user’s facilities like: comments section for each news article, more details about the news article’s author that posted it, facebook features of Like/Share directly on a news article etc.
the expansion of the administrator’s facilities like: more customization features, more control actions over the user accounts etc.
These are just a few ideas for improving the application, but given the technology development process, there will certainly appear others.
Annexes
Source codes
Web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<authentication mode="None" />
<httpRuntime />
<authorization>
<allow users="*"></allow>
</authorization>
<httpHandlers>
<add path="AjaxFileUploadHandler.axd" verb="*" type="AjaxControlToolkit.AjaxFileUploadHandler, 
 AjaxControlToolkit" />
</httpHandlers>
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
<providers>
<add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
</providers>
</sessionState>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
<buildProviders>
<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</buildProviders>
</compilation>
<pages>
<controls>
<add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" />
</controls>
</pages></system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add name="AjaxFileUploadHandler" verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit" />
</handlers>
</system.webServer>
<connectionStrings>
<add name="BlogNewsEntities" connectionString="metadata=res://*/Data.BlogNews.csdl|res://*/Data.BlogNews.ssdl|res://*/Data.BlogNews.msl;provider=System.Data.SqlClient;provider connection string="data source=COSMIN;initial catalog=blog-news;persist security info=True;user id=cosmin;password=fifacosmin;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="HtmlAgilityPack" publicKeyToken="BD319B19EAF3B43A" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.4.9.5" newVersion="1.4.9.5" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.4.9.5" newVersion="1.4.9.5" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<appSettings>
<add key="SecurityKey" value="jbe1k34jb4e2r5e6t77o53i90kk904kil" />
</appSettings>
</configuration>
Bibliography
Paul DuBois (Traducere de Mihai Mănăstireanu), MySQL, Editura Teora, 2001
Vikram Vaswani, MySQL. Utilizarea și administrarea bazelor de date MySQL, Editura Rosetti Educational, 2010
Constantin Gălățan, Susana Gălățan, C# pentru liceu – Programare în Visual C# 2008 Express Edition, Editura L&S INFO-MAT, 2008
Adrian Niță, Maria Niță, Nicolae Olăroiu, Rodica Pintea, Cristina Sichim, Daniela Tarasă, Introducere in .Net Framework, Microsoft, Ediția 2008
Charles Petzold, Programare în Windows cu C#, Editura Teora, 2003
Paolo Pialorsi, Marco Russo, Programming Microsoft LINQ in Microsoft .NET Framework 4, O'Reilly Media Inc., 2010
Liviu Negrescu, Lavinia Negrescu, Limbajul C# pentru începatori. Volumul VI – Mediul de programare Visual Studio C#, Editura Albastră, 2011
Pappas Chris H, Murray William H, Caranda Bogdan, Raica Razvan, C# pentru programarea WEB, Editura ALL, 2004
www.msdn.microsoft.com/en-us
www.getbootstrap.com
www.ajaxcontroltoolkit.com
www.asp.net
www.ckeditor.com
www.fancybox.net
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: FACULTY OF SCIENCE, PHYSICAL EDUCATION AND INFORMATICS Dissertation thesis Scientific coordinator, Conf. univ. dr. Popescu Doru Anastasiu Graduate,… [309871] (ID: 309871)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
