简介
在 NET应用软件开发人员看来 使用DB 与使用其它任何其它关系数据库没有区别 人们可以看到无数使用SQL Server以及甲骨文公司产品执行数据库任务的例子 但关于使用包括 NET在内的微软公司技术访问DB 数据库的文档就远没有那么多了
目前 开发人员可以使用不同的访问技术通过编程的方式将 NET客户端连接到DB 上 这些代码从根本上来说是基本相同的 但仍然存在一些我们需要考虑的有趣的限制
DB 架构慨览
DB 数据库引擎的基本元素是数据库对象 系统目录 目录和配置文件 所有的数据存取都通过SQL界面进行 我们可以只将DB Univeral Database(UDB)作为数据库服务器运行 这不要求使用其它的产品 但对于远程的客户端而言 我们还需要其它一些产品
DB UDB的服务器组件提供了对使用TCP/IP SNA或IPX/SPX协议与数据库服务器进行通讯的支持 这就能够使运行管理客户端 运行时间库或应用程序开发客户端的远程客户端进行访问 应用程序开发客户端组件是面向数据库应用程序开发人员的工具集 它包括库文件 头文件 API和样板代码
我们主要关心的是能够通过网络访问数据库服务器的客户端组件 通过使用DB Connect 我们的 NET应用程序能够访问基于主机的DB 系统 例如DB for AS/ DB for OS/ DB for VSE等
连接到DB 的方式决定了我们能够完成的任务 有三种技术可以从 NET连接到DB
使用OleDb NET Managed Provider 如果运行的是DB V 或更低的版本以及对象是调用者时 微软和IBM二家公司都建议使用OleDb数据提供者访问大多数DB 数据 在 NET Framework中 OleDb提供商是通过 InterOp表现出来的 并使用可用于ADO开发的驱动程序
使用ODBC NET Managed Provider 这种方式提供了对本地ODBC驱动程序的访问 与OLEDb NET Data Provider提供对本地OLEDb提供者访问的方式相同 ODBC NET Data Provider是 NET Framework的一个附加组件 它能够与所有兼容的ODBC驱动程序配合使用
使用IBM DB NET Provider(β) 这种方式提供了对将ADO NET连接到DB V 的支持 DB NET Data Provider是Visual Studio NET Framework的一个内插式附件 它能够访问在运行在不同硬件和 *** 作系统平台上的DB·数据库服务器 目前 它仍然处于β测试阶段 但IBM公司很快会发布正式产品 DB Net Data Provider能够将使用ADO NET开发的应用程序连接到下面的DB 数据库服务器上
·运行在Windows UNIX和Linux平台上的DB Universal Database Version
·运行在z/OS OS/ V 以及使用DB Connect V 组件的更高版本的 *** 作系统上的DB Universal Database
不同的连接字符串显示出不同情况下的语法差别
OleDb连接字符串
Provider=IBMDADB User ID=db adminPassword=db adminData Source=SAMPLE
ODBC连接字符串
DSN=DB V UID=db adminPWD=db admin
IBM Managed Provider连接字符串
Database=SAMPLEUser ID=db adminPassword=db adminServer=IREK
代码级访问的比较
在开发DB 数据访问代码时 大多数的 *** 作在很大程度上与访问其它数据库相同 下面我们对连接技术的一些代码进行比较
在下面的每个代码片断中 我们将展示一些数据库访问和数据管理的技巧 请读者注意每种技术的哪些步骤相同 我们首先创建连接对象 再创建一个命令对象 在这个简单的例子中 我们只访问这一特定数据库表中指定行 列中的一个标量值 最后 我们执行该命令的ExecuteScalar()方法 返回该整数
使用Ole Db技术
private OleDbConnection cn = new OleDbConnection(connectionString)OleDbCommand cmd = new OleDbCommand( SELECT COUNT(*) FROM STAFF cn)int rc = Convert ToInt (cmd ExecuteScalar())
使用ODBC
private OdbcConnection cn = new OdbcConnection(connectionString)OdbcCommand cmd = new OdbcCommand( SELECT COUNT(*) FROM STAFF cn)int rc = Convert ToInt (cmd ExecuteScalar())
使用IBM的Managed Provider
private DB Connection cn = new DB Connection(connectionString)DB Command cmd = new DB Command( SELECT COUNT(*) FROM STAFF cn)int rc = Convert ToInt (cmd ExecuteScalar())
功能的比较
根据选择的访问技术和使用的数据库版本 我们可以使用不同的功能 另外 根据需要完成的工作 我们还需要选择连接策略
为了使读者能够更好的选择连接技术 我整理出了一个能够在决策中使用的路线图 在路线图中 我找出了一些对于大多数以数据库为中心的软件开发项目中通用的功能
在下面的图表中 我对自己的心得进行了整理 我根据是否允许完成特定的数据库任务对三种访问技术中的每一种都进行了评估 评估的数据库任务有
·Pass thru SQL━━这一提供者是否支持通过动态开发的SQL语句形成的传递?
·简单的存储过程━━这一提供者支持包括返回结果在内的调用基本的存储过程吗?
·In Out InOut参数━━这一提供者支持调用存储过程和利用参数传递变量数据吗?
·日期和货币━━这一提供者支持由特定厂商提供 可能造成问题的数据类型吗?
·LOBs━━这一提供者支持大对象数据类型的处理吗?
根据使用的连接技术 我们能够完成不同类型的任务 因为每种提供者都有自己可以完成的工作 有一些问题是我们值得注意的
例如 ODBC不支持DB 的存储过程 因此 如果开发的应用软件非常依赖于存储过程 我们在选择访问技术时就不能考虑ODBC 而应当考虑OleDb或Managed Provider OleDb不支持LOB数据类型 如果要存取LOB类型的数据(例如JPEG文件) 我们可以使用ODBC或Managed Provider 目前 Managed Provider不能在DB V 或以前版本上运行 除非在应用程序和基于主机的DB 系统之间运行着DB Connect V
有趣的是 在使用存储过程的参数时 DB V 和OleDb有一个非常著名的bug 我们能够从存储过程中返回数据 但在OleDb+DB V 平台上 我们不能在应用程序与存储过程之间传递参数
性能比较
为了衡量提供者的性能和向读者提供指导 我们将定义一个有效的测试脚本 并对各种提供者的关健性能进行测试 为了比较各种连接技术的性能 我们开发了一些简单的Web网页 一个网页面向执行完全相同功能的测试 这将使我们掌握分析不同连接技术情况下输出的控制数据
如果严格地从性能的角度来看 我们发现 Managed Provider在访问DB 数据库时的性能最高 在这一简单的测试中 有二个重要的数字值得关注 每秒钟的请求(RPS)能够使我们感受到访问的规模 OleDb和ODBC在这方面的表现基本相似 但Managed Provider的表现要好一些(大约高 %左右) 收到最后一字节的时间(TTLB)是从终端用户的角度看到的响应时间 在这一方面 Managed Provider的性能再次比OleDb和ODBC高出 %左右
最值得注意的是 尽管提供的功能不同 但OleDb和ODBC在有负荷的情况下的性能基本相同 IBM公司的Managed Provider的性能最好 而且提供了在访问DB V 时最可靠的功能 但是 如果没有DB Connect作中间体 它不支持DB V 以及更低的版本
结论
lishixinzhi/Article/program/net/201311/13751博客园
首页
联系
管理
随笔 - 94 文章 - 1 评论 - 167 阅读 - 81万
.Net Core 开发学习 —— 4. 服务器部署
本人之前买了个Windows Server2008 R2的腾讯云服务器,今天就刚好和大家一起分享下如何在服务器上部署.net core 的网站。
一. 在服务器上配置.net core 运行环境
首先,要先安装.net core 环境,根据项目的版本安装相应的sdk。
分别需要下载并安装:
VC++ 2015,vc_redist.x64;
版本2.2.0的SDK,dotnet-sdk-2.2.100-win-x64;
.Net运行时,dotnet-runtime-2.2.0-win-x64;
Asp.Net运行时,aspnetcore-runtime-2.2.0-win-x64;
以及hosting,dotnet-hosting-2.2.0-win。
输入命令行:dotnet --version
查看版本号,已确保.net core能够正常使用。
二. 开启配置IIS,配置网站
要确保服务器上有开启和安装iis服务:
打开控制面板 ->程序 ->打开或关闭Windows 功能 ->服务器管理器
右键 ->添加角色 ->勾选具体的角色服务,根据提示下一步:
展开Web服务器 ->右击Internet 信息服务,添加网站
添加完成后,点击 “应用程序池”,对刚新添加的.net core网站设置应用程序池,如图:
三. 访问网站
发现localhost: 端口 方式可以正常访问,但是直接用服务器ip或者域名无法访问。
最后,发现原因是腾讯云中没有对端口进行设置,需要在安全组里面添加并开放需要用到的网站的端口号
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)