이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 6692|회답: 0

[통신] Microsoft, System.Data.SqlClient를 대체하기 위해 Microsoft.Data.SqlClient를 출시

[링크 복사]
게시됨 2021. 12. 27. 오후 10:21:14 | | |
배경

.NET 초창기에는 System.Data 프레임워크가 중요한 구성 요소였습니다. 이 도구는 Visual Basic의 ActiveX Data Objects와 유사한 .NET 데이터베이스 드라이버를 생성하는 방법을 제공합니다. API는 다르지만 이름이 재사용되어 ADO .NET이라는 별명이 붙었습니다.

ADO와 ADO .NET(즉, System.Data)의 주요 차이점 중 하나는 객체 모델입니다. ADO에서는 보통 Connection, Command, Recordset 객체만 사용하면 되고, OleDB/ODBC 드라이버가 다른 것을 숨기고 있습니다. 이로 인해 코드 재사용이 개선되지만, 개발자가 일부 데이터베이스 기능을 노출하기는 어렵습니다.

ADO .NET에서는 OleDB/ODBC도 사용할 수 있지만, 대부분의 경우 데이터베이스별 클래스 시리즈를 사용합니다. 이 클래스들은 원래 코드의 재사용성을 유지하는 DBConnection, DBCommand, DBDataReader에서 파생되었습니다. 하지만 이들이 강하게 이름 붙여진 타입이기 때문에 .NET 라이브러리에 명시적으로 포함되어야 합니다.

아마도 개발을 단순화하기 위해, SQL Server, OleDB, ODBC 드라이버는 모두 System.Data 프레임워크의 일부입니다. 이 접근법은 당시에는 허용되었지만, 현재의 SQL Server 개발 주기에는 문제를 야기했습니다.

실제로 SQL Server 릴리스 주기는 3년에서 5년에서 거의 매년 변동되었습니다. 새로운 릴리스는 종종 .NET 드라이버 업데이트가 필요한데, .NET 표준 릴리스 사이클에 묶여 있으면 불가능합니다.

첫 번째 단계는 System.Data 라이브러리를 분할하는 것입니다. NET Core는 각 데이터베이스 드라이버별로 별도의 라이브러리를 제공함으로써 이 단계를 수행합니다. 다음 단계는 SQL Server 드라이버를 .NET Core/Standard와 완전히 분리하는 것입니다. 이를 위해 Microsoft.Data.SqlClient를 만들었습니다.

Microsoft.Data.SqlClient로 업그레이드

대부분의 개발자에게 Microsoft.Data.SqlClient를 사용하는 것은 매우 간단하며, 각 클래스 상단의 using 문장만 수정하면 됩니다. 게다가 클래스명과 API는 동일하며, 대체로 같은 기능을 제공합니다.

Dapper나 RepoDB와 같은 경량 ORM의 경우, 추가적인 변경은 필요하지 않습니다.

개발자가 연결을 관리하기 위해 ORM을 사용한다면(예: EF, NHibernate), ORM 업그레이드를 기다려야 합니다.

더 골치 아픈 것은 ORM을 혼합하는 것들입니다. 한 ORM이 Microsoft.Data.SqlClient를 사용하고 다른 ORM이 System.Data.SqlClient를 사용하면 동시에 작동하지 않습니다. 이는 공유 SqlTransaction 객체를 다룰 때 특히 중요합니다.

사용성

Microsoft.Data.SqlClient 버전 1.0은 다음 플랫폼에서 제공됩니다:

  • .NET Framework 4.6+
  • .NET Core 2.1+
  • .NET Standard 2.0+


알려진 문제점

모든 사람이 바로 업그레이드할 필요는 없습니다. 문서에는 다음과 같은 알려진 문제들이 명시되어 있습니다:

  • 사용자 데이터 타입(UDT)은 Microsoft.Data.SqlClient에서 작동하지 않을 수 있습니다.
  • Azure Key Vault와 Microsoft.Data.SqlClient에는 키 저장소가 없습니다.
  • Microsoft.Data.SqlClient는 안전한 엔클레이브를 위해 항상 암호화된 기능을 지원하지 않습니다.
  • .NET 프레임워크와 .NET 코어만 항상 암호화를 지원하며, .NET 표준은 암호화 의존성이 일부 없기 때문에 지원하지 않습니다.


원본 링크:https://blog.csdn.net/weixin_39777464/article/details/111698467




이전의:리눅스 업데이트: 시스템 시간대와 시간대
다음:ESXI 가상 머신은 리눅스 시스템의 디스크 용량을 확장합니다
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com