當前位置:首頁 » 操作系統 » net資料庫類庫

net資料庫類庫

發布時間: 2022-09-27 17:37:38

資料庫中.net是什麼.net對資料庫有什麼作用

我來說說吧
首先,.net不是一種語言,不是一種技術,而是一個平台。所謂平台,就是說在.net框架下編譯出來的程序,並不是直接針對windows系統API的,而是針對.net平台的。就好像人說話,以前要說「把刀拿起來,刃放到麵包上,往下用力」,現在只要說「用刀切麵包」就可以了。.net平台就負責把「用刀切麵包」解釋成它的完整意義,交給系統去執行。它的好處是:有一個強大的類庫,代替開發者做了很多底層的事情,使得開發更快捷、容易,使得應用的調整更加快速,也使安全性得到較大提升(很多安全方面的問題都由類庫的開發者替應用層開發者做了)。
.net平台下可以用很多種語言來編程,比如vb.net C# F# VC++.net,各種新的語言還在不斷被開發出來,不管你用什麼語言,編譯出來的程序都不能在系統中直接運行,而是被編譯成一種中間語言(IL)程序,這個中間語言程序通過.net解釋器解釋為本地代碼執行。

資料庫與.net的關系有兩種含義:一是在.net類庫中,有System.Data等命名空間,在使用.net編程時,通過調用這些命名空間的方法、函數等,可以方便地在你的應用程序、網站中操作資料庫;二是sql Server等資料庫提供了.net編程支持。你可以用.net來編寫以往只能由T-SQL語言來寫的存儲過程等等。

② .NET里怎麼寫資料庫連接的類庫

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace GameCard.DBUtility
{
public static class DBHelperSqlServer
{
private static SqlConnection connection;
/// <summary>
/// Connection 連接
/// </summary>
public static SqlConnection Connection
{
get
{
//讀取 配置 文件
string connectionString = ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString;
//沒有這個鏈接
if (connection == null)
{
//新的連接
connection = new SqlConnection(connectionString);
//打開
connection.Open();
}
//鏈接被關閉中
else if (connection.State == System.Data.ConnectionState.Closed)
{
connection.Open();
}
//鏈接在休眠中
else if (connection.State == System.Data.ConnectionState.Broken)
{
connection.Close();
connection.Open();
}
return connection;
}
}

/// <summary>
/// (刪,改)
/// </summary>
/// <param name="safeSql">SQL語句</param>
/// <returns>受影響的行數</returns>
public static int ExecuteCommand(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
return cmd.ExecuteNonQuery();
}
/// <summary>
/// (刪,改)
/// </summary>
/// <param name="safeSql">SQL語句</param>
/// <param name="values">SqlParameter[]</param>
/// <returns>受影響的行數</returns>
public static int ExecuteCommand(string sql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
return cmd.ExecuteNonQuery();
}

/// <summary>
/// (增)
/// </summary>
/// <param name="safeSql">SQL語句</param>
/// <returns>當前行,第一列值</returns>
public static object GetScalar(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
return cmd.ExecuteScalar();
}
/// <summary>
/// (增)
/// </summary>
/// <param name="safeSql">SQL語句</param>
/// <param name="values">SqlParameter[]</param>
/// <returns>當前行,第一列值</returns>
public static object GetScalar(string sql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
return cmd.ExecuteScalar();
}

/// <summary>
/// DataReader (查)
/// </summary>
/// <param name="safeSql">SQL語句</param>
/// <returns>SqlDataReader</returns>
public static SqlDataReader GetReader(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
SqlDataReader reader = cmd.ExecuteReader();
return reader;
}
/// <summary>
/// DataReader (查)
/// </summary>
/// <param name="safeSql">SQL語句</param>
/// <param name="values">SqlParameter[]</param>
/// <returns>SqlDataReader</returns>
public static SqlDataReader GetReader(string sql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
SqlDataReader reader = cmd.ExecuteReader();
return reader;
}

/// <summary>
/// DataTable (查)
/// </summary>
/// <param name="safeSql">SQL語句</param>
/// <returns>DataTable</returns>
public static DataTable GetDataSet(string safeSql)
{
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand(safeSql, Connection);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
}
/// <summary>
/// DataTable (查)
/// </summary>
/// <param name="safeSql">SQL語句</param>
/// <param name="values">SqlParameter[]</param>
/// <returns>DataTable</returns>
public static DataTable GetDataSet(string sql, params SqlParameter[] values)
{
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
}
/// <summary>
/// 輸入
/// </summary>
/// <param name="paraName">參數</param>
/// <param name="type">類型</param>
/// <param name="size">大小</param>
/// <param name="values">值</param>
/// <returns>SqlParameter</returns>
public static SqlParameter MakeInParameter(string paraName, SqlDbType type, int size, object values)
{
return MakeParam(paraName, (SqlDbType)type, size, ParameterDirection.Input, values);
}
/// <summary>
/// 輸出
/// </summary>
/// <param name="paraName">參數</param>
/// <param name="type">類型</param>
/// <param name="size">大小</param>
/// <param name="values">值</param>
/// <returns>SqlParameter</returns>
public static SqlParameter MakeOutParameter(string paraName, SqlDbType type, int size)
{
return MakeParam(paraName, (SqlDbType)type, size, ParameterDirection.Output, null);
}
private static SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
{
SqlParameter param;

if (Size > 0)
{
param = new SqlParameter(ParamName, DbType, Size);
}
else
{
param = new SqlParameter(ParamName, DbType);
}
param.Direction = Direction;
if (!(Direction == ParameterDirection.Output && Value == null))
{
param.Value = Value;
}
return param;
}

}
}

③ 幫忙貼一個asp.net資料庫連接操作的類庫。

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Collections;
using System.Data.SqlClient;

//編號2
/**//// <summary>
/// 資料庫的通用訪問代碼
/// 此類為抽象類,不允許實例化,在應用時直接調用即可
/// </summary>
public abstract class SqlHelper
...{
//獲取資料庫連接字元串,其屬於靜態變數且只讀,項目中所有文檔可以直接使用,但不能修改
//編號13
public static readonly string =
ConfigurationManager.ConnectionStrings["connstring"].ConnectionString;
// 哈希表用來存儲緩存的參數信息,哈希表可以存儲任意類型的參數
//編號8
private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());//編號9

/**//// <summary>
///執行一個不需要返回值的SqlCommand命令,通過指定專用的連接字元串。
/// 使用參數數組形式提供參數列表
/// </summary>
/// <remarks>
/// 使用示例:
/// int result = ExecuteNonQuery(connString, CommandType.StoredProcere,
/// "PublishOrders", new SqlParameter("@prodid", 24));
/// </remarks>
/// <param name="connectionString">一個有效的資料庫連接字元串</param>
/// <param name="commandType">SqlCommand命令類型 (存儲過程, T-SQL語句, 等等。)
/// </param>
/// <param name="commandText">存儲過程的名字或者 T-SQL 語句</param>
/// <param name="commandParameters">以數組形式提供SqlCommand命令中用到的參數列表
/// </param>
/// <returns>返回一個數值表示此SqlCommand命令執行後影響的行數</returns>
//編號3
public static int ExecuteNonQuery(string connectionString, CommandType cmdType,
string cmdText, params SqlParameter[] commandParameters)
...{
SqlCommand cmd = new SqlCommand();
//編號4
using (SqlConnection conn = new SqlConnection(connectionString))
...{
//通過PrePareCommand方法將參數逐個加入到SqlCommand的參數集合中
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
//清空SqlCommand中的參數列表
cmd.Parameters.Clear();
//編號14
return val;
}
} /**//// <summary>
///執行一條不返回結果的SqlCommand,通過一個已經存在的資料庫連接
/// 使用參數數組提供參數
/// </summary>
/// <remarks>
/// 使用示例:
/// int result = ExecuteNonQuery(conn, CommandType.StoredProcere,
/// "PublishOrders", new SqlParameter("@prodid", 24));
/// </remarks>
/// <param name="conn">一個現有的資料庫連接</param>
/// <param name="commandType">SqlCommand命令類型 (存儲過程, T-SQL語句, 等等。)
/// </param>
/// <param name="commandText">存儲過程的名字或者 T-SQL 語句</param>
/// <param name="commandParameters">以數組形式提供SqlCommand命令中用到的參數列表
/// </param>
/// <returns>返回一個數值表示此SqlCommand命令執行後影響的行數</returns>

//編號5
public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
...{

SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}

/**//// <summary>
/// 執行一條不返回結果的SqlCommand,通過一個已經存在的資料庫事物處理
/// 使用參數數組提供參數
/// </summary>
/// <remarks>
/// 使用示例:
/// int result = ExecuteNonQuery(trans, CommandType.StoredProcere,
/// "PublishOrders", new SqlParameter("@prodid", 24));
/// </remarks>
/// <param name="trans">一個存在的 sql 事物處理</param>
/// <param name="commandType">SqlCommand命令類型 (存儲過程, T-SQL語句, 等等。)
/// </param>
/// <param name="commandText">存儲過程的名字或者 T-SQL 語句</param>
/// <param name="commandParameters">以數組形式提供SqlCommand命令中用到的參數列表
/// </param>
/// <returns>返回一個數值表示此SqlCommand命令執行後影響的行數</returns>

//編號12
public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType,string cmdText, params SqlParameter[] commandParameters)
...{

SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}

/**//// <summary>
/// 執行一條返回結果集的SqlCommand命令,通過專用的連接字元串。
/// 使用參數數組提供參數
/// </summary>
/// <remarks>
/// 使用示例:
/// SqlDataReader r = ExecuteReader(connString, CommandType.StoredProcere,
/// "PublishOrders", new SqlParameter("@prodid", 24));
/// </remarks>
/// <param name="connectionString">一個有效的資料庫連接字元串</param>
/// <param name="commandType">SqlCommand命令類型 (存儲過程, T-SQL語句, 等等。)
/// </param>
/// <param name="commandText">存儲過程的名字或者 T-SQL 語句</param>
/// <param name="commandParameters">以數組形式提供SqlCommand命令中用到的參數列表
/// </param>
/// <returns>返回一個包含結果的SqlDataReader</returns>

public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
...{

SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connectionString);
// 在這里使用try/catch處理是因為如果方法出現異常,則SqlDataReader就不存在,
//CommandBehavior.CloseConnection的語句就不會執行,觸發的異常由catch捕獲。
//關閉資料庫連接,並通過throw再次引發捕捉到的異常。
try
...{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
...{
conn.Close();
throw; //編號7
}
}

/**//// <summary>
/// 執行一條返回第一條記錄第一列的SqlCommand命令,通過專用的連接字元串。
/// 使用參數數組提供參數
/// </summary>
/// <remarks>
/// 使用示例:
/// Object obj = ExecuteScalar(connString, CommandType.StoredProcere,
/// "PublishOrders", new SqlParameter("@prodid", 24));
/// </remarks>
/// <param name="connectionString">一個有效的資料庫連接字元串</param>
/// <param name="commandType">SqlCommand命令類型 (存儲過程, T-SQL語句, 等等。)
/// </param>
/// <param name="commandText">存儲過程的名字或者 T-SQL 語句</param>
/// <param name="commandParameters">以數組形式提供SqlCommand命令中用到的參數列表
/// </param>
/// <returns>返回一個object類型的數據,可以通過 Convert.To{Type}方法轉換類型</returns>
public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
...{

SqlCommand cmd = new SqlCommand();
using (SqlConnection connection = new SqlConnection(connectionString))
...{
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}

}

/**//// <summary>
/// 執行一條返回第一條記錄第一列的SqlCommand命令,通過已經存在的資料庫連接。
/// 使用參數數組提供參數
/// </summary>
/// <remarks>
/// 使用示例:
/// Object obj = ExecuteScalar(connString, CommandType.StoredProcere,
/// "PublishOrders", new SqlParameter("@prodid", 24));
/// </remarks>
/// <param name="conn">一個已經存在的資料庫連接</param>
/// <param name="commandType">SqlCommand命令類型 (存儲過程, T-SQL語句, 等等。)
/// </param>
/// <param name="commandText">存儲過程的名字或者 T-SQL 語句</param>
/// <param name="commandParameters">以數組形式提供SqlCommand命令中用到的參數列表
/// </param>
/// <returns>返回一個object類型的數據,可以通過 Convert.To{Type}方法轉換類型
/// </returns>
public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
...{

SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}

/**//// <summary>
/// 緩存參數數組
/// </summary>
/// <param name="cacheKey">參數緩存的鍵值</param>
/// <param name="cmdParms">被緩存的參數列表</param>

public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters)
...{

//編號10
parmCache[cacheKey] = commandParameters;

}

/**//// <summary>
/// 獲取被緩存的參數
/// </summary>
/// <param name="cacheKey">用於查找參數的KEY值</param>
/// <returns>返回緩存的參數數組</returns>

public static SqlParameter[] GetCachedParameters(string cacheKey)
...{

SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey];
if (cachedParms == null)
return null;
//新建一個參數的克隆列表
SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length];
//通過循環為克隆參數列表賦值
for (int i = 0, j = cachedParms.Length; i < j; i++)
//使用clone方法復制參數列表中的參數
//編號11
clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();
return clonedParms;
}

/**//// <summary>
/// 為執行命令准備參數
/// </summary>
/// <param name="cmd">SqlCommand 命令</param>
/// <param name="conn">已經存在的資料庫連接</param>
/// <param name="trans">資料庫事物處理</param>
/// <param name="cmdType">SqlCommand命令類型 (存儲過程,T-SQL語句,等等。) </param>
/// <param name="cmdText">Command text,T-SQL語句 例如 Select * from
/// Procts</param>
/// <param name="cmdParms">返回帶參數的命令</param>

//編號6
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn,SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[]
cmdParms)
...{

//判斷資料庫連接狀態
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
//判斷是否需要事物處理
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = cmdType;
if (cmdParms != null)
...{
foreach (SqlParameter parm in cmdParms)
cmd.Parameters.Add(parm);

}
}

}

④ .net框架主要是哪幾部分組成

.NET開發框架的幾個主要組成部分:首先是整個開發框架的基礎,即通用語言運行時以及它所提供的一組基礎類庫;在開發技術方面,.NET提供了全新的資料庫訪問技術ADO .NET,以及網路應用開發技術ASP .NET和Windows編程技術Win Forms;在開發語言方面,.NET提供了VB,VC++,C#, Jscript等多種語言支持;而Visual Studio .NET則是全面支持.NET的開發工具。下面就讓我們來一步步的來了解它們:

通用語言運行時,即Common Language Runtime 。Microsoft .NET 給開發人員帶來了一種全新的開發框架,而通用語言運行時則處於這個框架的最低層,是這個框架的基礎。開發人員對於所謂的C運行時、VB運行時、Jave虛擬機這些概念已經非常熟悉了,而通用語言運行時則為多種語言提供了一種統一的運行環境。另外它還提供了更多的功能和特性,比如統一和簡化的編程模型,用戶不必迷惑於Win32 API和COM;避免了DLL的版本和更新問題(常稱為DLL地獄),從而大大簡化了應用程序的發布和升級;多種語言之間的交互,例如我們甚至可以在VB中使用C++編寫的類;自動的內存和資源管理等等。Microsoft .NET正是基於通用語言運行時,實現了這些開發人員夢寐以求的功能。

基於通用語言運行時開發的代碼稱為受控代碼,它的運行步驟大體如下:首先使用一種通用語言運行時支持的編程語言編寫源代碼,然後使用針對通用語言運行時的編譯器生成獨立於機器的微軟中間語言(Microsoft Intermediate Language),同時產生運行所需的元數據,在代碼運行時再使用即時編譯器(Just In Time Compiler)生成相應的機器代碼來執行。

當然對於開發者而言,他們除了關心通用語言運行時提供那麼多新特性外,它究竟給開發者提供了什麼樣的編程介面,這就是基礎類庫(Base Class Library)。這組基礎類庫包括了從輸入輸出到數據訪問等各方面,提供了一個統一的面向對象的、層次化的、可擴展的編程介面。它使用一種點號分隔的方法,使得查找和使用類庫非常容易。例如基礎類庫中的根,它的命名空間是System,提供數據訪問的類庫的命名空間是System.Data。在使用時,開發者只需在自己的應用中添加所需的基礎類庫的引用,然後就可以使用這個類庫中的所有方法、屬性等等。跟傳統的Windows編程相比,使用和擴展基礎類庫都非常容易,這使得開發者能夠高效、快速的構建基於下一代互聯網的網路應用。

幾乎所有的應用程序都需要訪問從簡單的文本文件到大型的關系型資料庫等各種不同類型的數據 。在Microsoft .NET中訪問資料庫的技術是ADO .NET。ADO .NET提供了一組用來連接到資料庫,運行命令,返回記錄集的類庫,與從前的ADO(ActiveX Data Object)相比,Connection和Command對象很類似,而ADO .NET的革新主要體現在如下幾個方面:

首先,ADO .NET提供了對XML的強大支持,這也是ADO .NET的一個主要設計目標。在ADO .NET中通過XMLReader,XMLWriter, XMLNavigator, XMLDocument等可以方便的創建和使用XML數據,並且支持W3C 的 XSLT、DTD、XDR等標准。ADO .NET對XML的支持也為XML成為Microsoft .NET中數據交換的統一格式提供了基礎。

其次,ADO .NET引入了DataSet的概念,這是一個駐於內存的數據緩沖區,它提供了數據的關系型視圖。不管數據來源於一個關系型的資料庫,還是來源於一個XML文檔,我們都可以用一個統一的編程模型來創建和使用它。它替代了原有的Recordset的對象,提高了程序的交互性和可擴展性,尤其適合於分布式的應用場合。

另外,ADO .NET中還引入了一些新的對象,例如DataReader可以用來高效率的讀取數據,產生一個只讀的記錄集等等。簡而言之,ADO .NET通過一系列新的對象和編程模型,並與XML緊密結合,使得在Microsoft .NET中的數據操作十分方便和高效。 ASP .NET是Microsoft .NET中的網路編程結構,它使得建造、運行和發布網路應用非常方便和高效 。我們可以從以下幾個方面來了解ASP .NET:

1. ASP .NET網路表單

ASP .NET網路表單的設計目的就是使得開發者能夠非常容易的創建網路表單,它把VB中的快速開發模型引入到網路開發中來,從而大大簡化了網路應用的開發。具體的說:在ASP .NET中可以支持多種語言,不僅僅支持腳本語言,通用語言運行時支持的所有語言在ASP .NET中都可以使用;代碼和內容分開,在現在的ASP(Active Server Pages)開發中,內容和腳本交錯,維護和升級很困難,將他們分開可以使得開發人員和設計人員能夠更好的分工合作,提高開發效率;另外在ASP .NET中通過引入伺服器端控制項,將類似VB的快速開發應用到了網路開發中來,這樣大大提高了構建網路表單效率,並且伺服器端控制項是可擴展的,開發者可以建造自己需要的的伺服器端控制項。

2. ASP .NET網路服務

網路服務(Web Service)是下一代可編程網路的核心,它實際上就是一個可命名的網路資源,可用來在Internet 范圍內方便的表現和使用對象,就像使用今天的 COM對象一樣,不同的是使用和表現網路服務是通過SOAP(簡單對象訪問協議)甚至HTTP來實現的。在ASP .NET中,建造和使用網路服務都非常方便:

在ASP .NET中建造網路服務就是編寫一個後綴為.ASMX的文件,在這個文件中加入想要表現出來的方法就可以了,網路服務的建造者不需要了解SOAP,XML的細節,只需要把精力集中在自己的服務本身,這也為獨立軟體服務開發商提供了很好的機會;使用網路服務最簡單的方式就是使用HTTP協議(HTTP GET 或HTTP POST),用戶只需要直接訪問網路服務(.ASMX文件)的URL即可;當然用戶還可以通過SOAP在自己的應用中更靈活的使用網路服務。

3. ASP .NET應用框架

ASP .NET應用不再是解釋腳本,而是編譯運行,再加上靈活的緩沖技術,從根本上提高了性能;由於ASP .NET的應用框架基於通用語言運行時,發布一個網路應用,僅僅是一個拷貝文件的過程,即使是組件的發布也是如此,更新和刪除網路應用,可以直接替換/刪除文件;開發者可以將應用的配置信息存放XML格式的文件中,管理員和開發者對應用程序的管理可以分開進行;提供了更多樣的認證和安全管理方式;在可靠性等多方面都有很大提高。

傳統的基於Windows的應用(Win Forms),它仍然是Microsoft .NET戰略中不可或缺的一部分。在Microsoft .NET中開發傳統的基於Windows的應用程序時,除了可以利用現有的技術例如ActiveX控制項以及豐富的Windows介面外,還可以基於通用語言運行時開發,可以使用ADO .NET、網路服務等,這樣也可以實現諸如避免DLL地獄、多語言支持等.NET的新特性。從上面的介紹中我們已經知道Microsoft .NET開發框架支持多種語言,在目前的測試版中已經支持 VB,C++,C#和Jscript四種語言以及它們之間的深層次交互

。而且微軟支持第三方生產針對Microsoft .NET的編譯器和開發工具,這也就是說幾乎所有市場上的編程語言都有可能應用於Microsoft .NET開發框架。這樣開發者可以任意選擇自己喜愛的語言,這種開放和交互的特性正是開發者所熱愛的。

需要特別指出的是,微軟在Microsoft .NET中推出了全新的C#語言,這種全新的面向對象的語言使得開發者可以快速的構建從底層系統級到高層商業組件的不同應用。C#在保證了強大的功能和靈活性的同時,給C和C++帶來了類似於VB的快速開發,並且它還針對.NET作了特別設計,比如C#允許XML數據直接映射為它的數據類型等等,這些特性結合起來使得C#成為優秀的下一代網路編程語言。

與此同時Microsoft .NET對原有的VB和C++也做了很大的改進,使得它們更加適應Microsoft .NET開發框架的需求。例如在Visual Basic .NET中增加了繼承等面向對象的特性,結構化的出錯處理等等;可管理的C++擴展,大大提高了利用C++來開發Microsoft .NET應用的效率等。

Visual Studio .NET作為微軟的下一代開發工具,它和.NET 開發框架緊密結合,是構建下一代互聯網應用的優秀工具,目前已經有Beta測試版面世。Visual Studio .NET通過提供一個統一的集成開發環境及工具,大大提高了開發者的效率;集成了多種語言支持;簡化了伺服器端的開發;提供了高效地創建和使用網路服務的方法等等。 .NET框架的一個主要目的是使COM開發變得更加容易

。COM開發過程中最難的一件事是處理COM基本結構。因此,為了簡化COM開發,.NET框架實際上已自動處理了所有在開發人員看來是與「COM」緊密相關的任務,包括引用計算、介面描述以及注冊。 必須認識到,這並不意味著.NET框架組件不是COM組件。事實上,使用Visual Studio 6.0的COM開發人員可以調用.NET框架組件,並且在他們看來,後者更像是擁有iUnknown數據的COM組件。相反,使用Visual Studio.NET的.NET框架開發人員則將COM組件視作.NET框架組件。

為了避免引起誤解,這里需對這種關系加以特別說明:COM開發人員必須手動去做大多數.NET框架開發人員可以在運行時自動執行的事情。例如,必須手寫COM組件的安全性模塊,且無法自動管理模塊佔用的內存,而在安裝COM組件時,注冊條目必須放進Windows注冊表中。對.NET框架而言,運行時實現了這些功能的自動化。例如,組件本身是自我描述型的,因而無需注冊到Windows注冊表中便能安裝。

當把COM與Microsoft事務伺服器(MTS)和分布式COM(DCOM)結合在一起時,就變成了COM+。COM+提供了一組面向中間層的服務。特別是COM+提供了進程管理功能和資料庫與對象連接池處理功能。在將來的版本中,它還將提供一種稱為分區的功能——專門為應用程序服務提供商設計的更強大的進程隔離功能。

COM+服務主要面向中間層應用程序開發,並主要為大型分布式應用程序提供可靠性和可擴展性。這些服務是對.NET框架所提供服務的補充;通過.NET框架類,可以直接訪問這些服務。 .NET框架有幾個要素值得一提

。首先是它的安全系統和配置系統。這兩個系統協同工作,有力地遏止了運行不安全代碼的可能性,並大幅度減少了號稱「DLL Hell」的對應用程序進行配置時所面臨的挑戰。

安全系統是一個高度細化、基於事實的系統,它賦予開發人員和管理員多種代碼處理許可權(而不僅僅是「on」或「off」)。將來,還會根據代碼本身的核心要素來決定如何實施上述許可權。

例如,當.NET框架應用程序被下載到某一系統中時,它會申請一組許可權(諸如對臨時目錄的寫入許可權)。運行時將收集有關應用程序的事實信息(諸如:它是從何處下載的、是否用了有效簽名、甚至它訪問系統的准確程度),並按管理策略決定是否允許應用程序運行。運行時甚至還可告之應用程序它無法授權申請的所有許可權,並允許應用程序自行決定是否繼續運行。

有這種安全系統作保障,許多應用程序配置問題便會迎刃而解。開發人員和管理員(最終是用戶)所面臨的最大挑戰之一是版本的管理問題。如果在您新裝了某個應用程序之後,一切都限於癱瘓狀態,而在這之前系統一直運行得非常良好,那麼最大的可能是新安裝的應用程序重寫了一些共享庫,並極有可能修正了現有應用程序正使用的程序錯誤。這種情況出現的頻率很高,以致人們將它稱為:「DLL Hell」。

.NET框架擁有的幾項高級功能可以徹底消除「DLL Hell」現象。首先,它有一個非常強大的內部命名系統,能夠有效地防止兩個庫因互相重名而被錯當為對方的情況發生。除此之外,它還提供一項被稱作「並行」配置的新功能。如果前例中新安裝的應用程序確實重寫了共享庫,現有應用程序可對該庫進行修復。等現有應用程序再次啟動時,它會檢查所有的共享文件。如果發現文件被更改,同時這些更改又是不兼容的,則它可以請求運行時提取一個它可以使用的版本。得益於強大的安全系統,運行時可以安全地執行該操作,這樣應用程序就完成了本身的修復工作。

總之,Microsoft .NET開發框架在通用語言運行時的基礎上,給開發者提供了完善的基礎類庫、下一代的資料庫訪問技術ADO .NET、網路開發技術ASP .NET,開發者可以使用多種語言及Visual Studio .NET來快速構建下一代的網路應用。隨著相關的互聯網標准及技術的普及,可以預言將會有越來越多的開發者採用這種開發結構,開發出豐富多樣的下一代互聯網應用來。

⑤ .net是什麼

.net是國際最廣泛流行的通用域名格式。一般用於從事Internet相關的網路服務的機構或公司,是建立全球商業品牌,國際化形象的第一選擇。

.NET是MicrosoftXMLWebservices平台。XMLWebservices允許應用程序通過Internet進行通訊和共享數據,而不管所採用的是哪種操作系統、設備或編程語言。

Microsoft.NET平台提供創建XMLWebservices並將這些服務集成在一起之所需。對個人用戶的好處是無縫的、吸引人的體驗。

(5)net資料庫類庫擴展閱讀:

WWW站點數(包括.CN、.COM、.NET、.ORG下的網站)。

一、WWW站點總數為:約668900個。

二、按所屬域名類別劃分:

1、WWW站點總數為:約668900個。

2、按所屬域名類別劃分:

1、AC數量365,百分比0.1%。

2、COM數量476682,百分比71.3%。

3、EDU略。

4、GOV數量10260,百分比1.5%。

5、NET數量79725,百分比11.9%。

6、ORG數量22204,百分比3.3%。

7、行政區域名.CN數量2878,百分比0.4%。

8、.CN數量76786,百分比11.5%。

⑥ 什麼是.net 基礎類庫

.NET Framework 類庫由命名空間組成。每個命名空間都包含可在程序中使用的類型:類、結構、枚舉、委託和介面。

⑦ .net 類庫是什麼

class library(類庫) 程序員用來實現各種功能的類的集合。
.net類庫 指的就是.net平台所用語言實現各種功能的類的集合啊

熱點內容
顯卡編程語言 發布:2025-05-17 18:11:46 瀏覽:918
編程用什麼軸機械鍵盤 發布:2025-05-17 18:10:35 瀏覽:958
金融工程編程 發布:2025-05-17 18:10:33 瀏覽:222
私密模式訪問 發布:2025-05-17 18:09:44 瀏覽:787
資料庫崩潰原因 發布:2025-05-17 18:09:42 瀏覽:306
對蝦養殖增氧機如何配置 發布:2025-05-17 18:08:20 瀏覽:442
linux讀寫許可權 發布:2025-05-17 18:08:12 瀏覽:314
導出蜂窩腳本 發布:2025-05-17 18:03:25 瀏覽:564
中國銀行定期存儲的利率 發布:2025-05-17 18:00:03 瀏覽:989
資料庫小於 發布:2025-05-17 17:59:02 瀏覽:409