DotNetAge新版配置搭建手册
- 格式:pdf
- 大小:78.80 KB
- 文档页数:3
目录第Ⅰ部分C# 语言第1章.NET体系结构 (3)1.1 C#与.NET的关系 (3)1.2 公共语言运行库 (3)1.3 详细介绍中间语言 (6)1.3.1 面向对象和接口的支持 (7)1.3.2 相异值类型和引用类型 (8)1.3.3 强数据类型 (8)1.3.4 通过异常方法处理错误 (14)1.3.5 特性的使用 (14)1.4 程序集 (14)1.4.1 私有程序集 (15)1.4.2 共享程序集 (16)1.4.3 反射 (16)1.5 .NET Framework类 (16)1.6 命名空间 (17)1.7 用C#创建.NET应用程序 (18)1.7.1 创建应用程序 (18)1.7.2 创建Windows窗体 (20)1.7.3 Windows控件 (20)1.7.4 Windows服务 (20)1.8 C#在.NET企业体系结构中的作用 (20)1.9 小结 (22)第2章C#基础 (23)2.1 引言 (23)2.2 第一个C#程序 (23)2.2.1 代码 (24)2.2.2 编译并运行程序 (24)2.2.3 详细介绍 (25)2.3 变量 (27)2.3.1 变量的初始化 (27)2.3.2 变量的作用域 (28)2.3.3 常量 (31)2.4 预定义数据类型 (32)2.4.1 值类型和引用类型 (32)2.4.2 CTS类型 (33)2.4.3 预定义的值类型 (33)2.4.4 预定义的引用类型 (36)2.5 流控制 (39)2.5.1 条件语句 (39)2.5.2 循环 (43)2.5.3 跳转语句 (46)2.6 枚举 (47)2.7 数组 (49)2.8 命名空间 (50)2.8.1 using语句 (51)2.8.2 命名空间的别名 (52)2.9 Main()方法 (53)2.9.1 多个Main()方法 (53)2.9.2 给Main()方法传送参数 (54)2.10 有关编译C#文件的更多内容 (55)2.11 控制台I/O (56)2.12 使用注释 (58)2.12.1 源文件中的内部注释 (58)2.12.2 XML文档说明 (59)2.13 C#预处理器指令 (61)2.13.1 #define和 #undef. 612.13.2 #if, #elif, #else和#endif. 62 2.13.3 #warning和# error. 632.13.4 #region和#endregion.. 63 2.13.5 #line.. 642.13.6 #pragma.. 642.14 C#编程规则 (64)2.14.1 用于标识符的规则 (64)2.14.2 用法约定 (65)2.15 小结 (71)第3章对象和类型 (72)3.1 类和结构 (72)3.2 类成员 (73)3.2.1 数据成员 (73)3.2.3 只读字段 (88)3.3 结构 (89)3.3.1 结构是值类型 (90)3.3.2 结构和继承 (91)3.3.3 结构的构造函数 (91)3.4 部分类 (92)3.5 静态类 (94)3.6 Object类 (94)3.6.1 System.Object方法 (94)3.6.2 ToString()方法 (95)3.7 小结 (97)第4章继承 (98)4.1 继承的类型 (98)4.1.1 实现继承和接口继承 (98)4.1.2 多重继承 (99)4.1.3 结构和类 (99)4.2 实现继承 (99)4.2.2 隐藏方法 (101)4.2.3 调用函数的基类版本 (102)4.2.4 抽象类和抽象函数 (103)4.2.5 密封类和密封方法 (103)4.2.6 派生类的构造函数 (104)4.3 修饰符 (109)4.3.1 可见性修饰符 (109)4.3.2 其他修饰符 (110)4.4 接口 (111)4.4.1 定义和实现接口 (112)4.4.2 派生的接口 (116)4.5 小结 (118)第5章运算符和类型强制转换 (119)5.1 运算符 (119)5.1.1 运算符的简化操作 (120)5.1.2 三元运算符 (121)5.1.3 checked和unchecked运算符 (122)5.1.4 is运算符 (123)5.1.5 as运算符 (123)5.1.6 sizeof运算符 (123)5.1.7 typeof运算符 (124)5.1.8 可空类型和运算符 (124)5.1.9 空接合运算符 (124)5.1.10 运算符的优先级 (125)5.2 类型的安全性 (125)5.2.1 类型转换 (126)5.2.2 装箱和拆箱 (130)5.3 对象的相等比较 (130)5.3.1 引用类型的相等比较 (131)5.3.2 值类型的相等比较 (132)5.4 运算符重载 (132)5.4.1 运算符的工作方式 (133)5.4.2 运算符重载的示例:Vector结构 (134)5.5 用户定义的数据类型转换 (141)5.5.1 执行用户定义的类型转换 (142)5.5.2 多重数据类型转换 (149)5.6 小结 (152)第6章委托和事件 (153)6.1 委托 (153)6.1.1 在C#中声明委托 (154)6.1.2 在C#中使用委托 (155)6.2 匿名方法 (158)6.2.1 简单的委托示例 (159)6.2.2 BubbleSorter示例 (161)6.2.3 多播委托 (164)6.3 事件 (166)6.3.1 从客户的角度讨论事件 (167)6.3.2 生成事件 (169)6.4 小结 (173)第7章内存管理和指针 (174)7.1 后台内存管理 (174)7.1.1 值数据类型 (174)7.1.2 引用数据类型 (176)7.1.3 垃圾收集 (178)7.2 释放未托管的资源 (179)7.2.1 析构函数 (179)7.2.2 IDisposable接口 (180)7.2.3 实现IDisposable接口和析构函数 (182)7.3 不安全的代码 (183)7.3.1 指针 (183)7.3.2 指针示例PointerPlayaround.. 193 7.3.3 使用指针优化性能 (197)7.4小结 (201)第8章字符串和正则表达式 (202)8.1 System.String类 (202)8.1.1 创建字符串 (203)8.1.2 StringBuilder成员 (206)8.1.3 格式化字符串 (207)8.2 正则表达式 (213)8.2.1 正则表达式概述 (213)8.2.2 RegularExpressionsPlayaround示例 (214)8.2.3 显示结果 (216)8.2.4 匹配、组合和捕获 (218)8.3 小结 (220)第9章集合 (221)9.1 对象组 (221)9.1.1 集合 (222)9.1.2 数组列表 (225)9.1.3 Stack类 (229)9.1.4 Queue类 (231)9.1.5 SortedList类 (232)9.1.6 字典和散列表 (234)9.1.7 泛型 (243)9.2 小结 (244)第10章泛型 (245)10.1 概述 (245)10.1.1 性能 (245)10.1.2 类型安全 (246)10.1.3 二进制代码的重用 (247)10.1.4 代码的扩展 (247)10.1.5 命名约定 (248)10.2 泛型集合类 (248)10.2.1 泛型集合概述 (248)10.2.2 使用List<T>类 (251)10.2.3 使用Queue<T>类 (256)10.2.4 使用LinkedList<T>类 (260)10.3 创建定制的泛型类 (265)10.3.1 默认值 (267)10.3.2 约束 (267)10.4 泛型方法 (270)10.5 泛型委托 (272)10.6 Framework的其他泛型类型 (274)10.6.1 结构Nullable<T> (274)10.6.2 EventHandler<TEventArgs> (276)10.6.3 ArraySegment<T> (276)10.7 小结 (277)第11章反射 (278)11.1 定制特性 (278)11.1.1 编写定制特性 (279)11.1.2 定制特性示例:WhatsNewAttributes.. 28211.2 反射 (286)11.2.1 System.Type类 (286)11.2.2 TypeView示例 (288)11.2.3 Assembly类 (291)11.2.4 完成WhatsNewAttributes示例 (292)11.3 小结 (296)第12章错误和异常 (297)12.1 错误和异常处理 (297)12.1.1 异常类 (297)12.1.2 捕获异常 (299)12.1.3 用户定义的异常类 (308)12.2 小结 (316)第13章线程 (317)13.1 线程 (317)13.2 多线程应用程序 (318)13.3 线程的处理 (319)13.3.1 ThreadPlayaround示例 (322)13.3.2 线程的优先级 (325)13.3.3 同步 (326)13.4 使用ThreadPool创建线程 (330)13.5 小结 (334)第Ⅱ部分 .NET 环境第14章Visual Studio 2005.. 33714.1 使用Visual Studio 2005 (337)14.1.1 创建项目 (341)14.1.2 解决方案和项目 (347)14.1.3 Windows应用程序代码 (349)14.1.4 读取Visual Studio 6项目 (350)14.1.5 项目的浏览和编码 (350)14.1.6 生成项目 (360)14.1.7 调试 (363)14.2 修订功能 (366)14.3 小结 (368)第15章程序集 (369)15.1 程序集的含义 (369)15.1.1 DLL Hell的解决方案 (370)15.1.2 程序集的特性 (370)15.1.3 应用程序域和程序集 (371)15.2 程序集的结构 (374)15.2.1 程序集的清单 (374)15.2.2 命名空间、程序集和组件 (375)15.2.3 私有程序集和共享程序集 (375)15.2.4 查看程序集 (375)15.2.5 构建程序集 (376)15.3 跨语言支持 (380)15.3.1 CTS和CLS.. 38015.3.2 语言无关性 (381)15.3.3 CLS要求 (389)15.4 全局程序集缓存 (391)15.4.1 本机图像生成器 (391)15.4.2 全局程序集缓存查看器 (392)15.4.3 全局程序集缓存工具(gacutil.exe). 39315.5 创建共享程序集 (393)15.5.1 共享程序集名 (393)15.5.2 创建共享程序集 (395)15.6 配置 (400)15.6.1 配置类别 (400)15.6.2 版本问题 (401)15.6.3 配置目录 (409)15.7 小结 (411)第16章.NET的安全性 (412)16.1 代码访问的安全性 (412)16.1.1 代码组 (413)16.1.2 代码访问权限和权限集 (419)16.1.3 策略的级别:Machine、User和Enterprise.. 42316.2 对Framework中安全性的支持 (425)16.2.1 要求权限 (426)16.2.2 请求权限 (427)16.2.3 隐式的权限 (430)16.2.4 拒绝权限 (431)16.2.5 断言权限 (432)16.2.6 创建代码访问权限 (433)16.2.7 声明的安全性 (434)16.3 安全策略的管理 (435)16.3.1 安全配置文件 (435)16.3.2 代码组和权限的管理 (438)16.3.3 安全性的启用和禁用 (438)16.3.4 重置安全策略 (439)16.3.5 代码组的创建 (439)16.3.6 代码组的删除 (440)16.3.7 代码组权限的更改 (440)16.3.8 权限集的创建和应用 (441)16.3.9 使用强名发布代码 (443)16.3.10 使用证书发布代码 (445)16.3.11 区域的管理 (449)16.4 基于角色的安全性 (451)16.4.1 Principal. 45116.4.2 Windows Principal. 45216.4.3 角色 (454)16.4.4 声明基于角色的安全性 (454)16.5 小结 (455)第17章本地化 (456)17.1 System.Globalization命名空间 (456)17.1.1 Unicode问题 (456)17.1.2 文化和区域 (457)17.1.3 使用文化 (461)17.1.4 排序 (466)17.2 资源 (467)17.2.1 创建资源文件 (468)17.2.2 资源文件生成器 (468)17.2.3 ResourceWriter. 46817.2.4 使用资源文件 (469)17.2.5 System.Resources命名空间 (474)17.3 使用Visual Studio的本地化示例 (475)17.3.1 编程修改文化 (480)17.3.2 使用定制资源文件 (481)17.3.3 资源的自动回退 (482)17.3.4 外包翻译 (482)17.4 用本地化 (483)17.5 定制的资源读取器 (485)17.5.1 创建DatabaseResourceReader类 (485)17.5.2 创建DatabaseResourceSet类 (487)17.5.3 创建DatabaseResourceManager类 (487)17.5.4 DatabaseResourceReader的客户应用程序 (488)17.6 创建定制文化 (489)17.7 小结 (489)第18章部署 (490)18.1 部署的设计 (490)18.2 部署选项 (490)18.2.1 Xcopy实用工具 (491)18.2.2 Copy Web工具 (491)18.2.3 发布Web站点 (491)18.2.4 部署项目 (491)18.2.5 ClickOnce.. 49118.3 部署的要求 (491)18.4 简单的部署 (492)18.4.1 Xcopy部署 (493)18.4.2 Xcopy和Web应用程序 (493)18.4.3 Copy Web工具 (493)18.4.4 发布Web站点 (494)18.5 Installer项目 (494)18.5.1 Windows Installer. 49518.5.2 创建安装程序 (495)18.6 ClickOnce.. 50418.6.1 ClickOnce操作 (504)18.6.2 发布应用程序 (504)18.6.3 ClickOnce设置 (505)18.6.4 应用程序缓存 (505)18.6.5 安全性 (506)18.6.6 高级选项 (506)18.7 小结 (511)第Ⅲ部分数据第19章.NET数据访问 (515)19.1 概述 (515)19.1.1 命名空间 (516)19.1.2 共享类 (516)19.1.3 数据库特定的类 (516)19.2 使用数据库连接 (517)19.2.1 管理连接字符串 (518)19.2.2 高效地使用连接 (520)19.2.3 事务处理 (522)19.3 命令 (524)19.3.1 执行命令 (525)19.3.2 调用存储过程 (528)19.4 快速数据访问:数据读取器 (531)19.5 管理数据和关系:DataSet类 (534)19.5.1 数据表 (535)19.5.2 数据列 (536)19.5.3 数据关系 (541)19.5.4 数据约束 (542)19.6 XML模式 (544)19.7 填充数据集 (552)19.7.1 用数据适配器来填充DataSet. 55219.7.2 从XML中给数据集填充数据 (553)19.8 保存对数据集的修改 (553)19.8.1 通过数据适配器进行更新 (554)19.8.2 写入XML输出结果 (556)19.9 使用 (558)19.9.1 分层开发 (558)19.9.2 生成SQL Server的键 (559)19.9.3 命名约定 (561)19.10 小结 (562)第20章.NET编程和SQL Server 2005.. 56420.1 .NET运行库的主机 (564)20.2 Microsoft.SqlServer.Server.. 56520.3 用户定义的类型 (566)20.3.1 创建UDT (566)20.3.2 使用UDT (572)20.3.3 在客户端代码中使用UDT (573)20.4 用户定义的合计函数 (574)20.4.1 创建用户定义的合计函数 (574)20.4.2 使用用户定义的合计函数 (575)20.5 存储过程 (576)20.5.1 创建存储过程 (576)20.5.2 使用存储过程 (577)20.6 用户定义的函数 (578)20.6.1 创建用户定义的函数 (578)20.6.2 使用用户定义的函数 (579)20.7 触发器 (579)20.7.1 创建触发器 (580)20.7.2 使用触发器 (581)20.8 XML数据类型 (581)20.8.1 包含XML数据的表 (582)20.8.2 数据的查询 (584)20.8.3 XML数据修改语言(XML DML). 58520.8.4 XML索引 (586)20.8.5 强类型化的XML (587)20.9 小结 (588)第21章处理XML.. 58921.1 .NET支持的XML标准 (589)21.2 System.Xml命名空间 (590)21.3 在.NET中使用MSXML (591)21.4 使用System.Xml类 (593)21.5 读写流格式的XML (593)21.5.1 使用XmlReader类 (594)21.5.2 使用XmlReader类进行验证 (597)21.5.3 使用XmlWriter类 (599)21.6 在.NET中使用DOM (601)21.7 使用XPathNavigator.. 60721.7.1 System.Xml.Xpath命名空间 (607)21.7.2 System.Xml.Xsl命名空间 (61)21.8 XML和 (617)21.8.1 将数据转换为XML文档 (617)21.8.2 把XML文档转换为数据 (624)21.8.3 读写DiffGram (626)21.9 在XML中串行化对象 (629)21.10 小结 (639)第22章使用Active Directory. 64022.1 Active Directory的体系结构 (640)22.1.1 特性 (641)22.1.2 Active Directory的概念 (641)22.1.3 Active Directory数据的特性 (645)22.1.4 模式 (645)22.2 Active Directory的管理工具 (646)22.2.1 Active Directory Users andComputers工具 (646)22.2.2 ADSI Edit工具 (647)22.3 Active Directory编程 (648)22.3.1 System.DirectoryServices命名空间中的类 (649)22.3.2 绑定 (650)22.3.3 获取目录项 (654)22.3.4 对象集合 (655)22.3.5 缓存 (656)22.3.6 创建新对象 (657)22.3.7 更新目录项 (658)22.3.8 访问内部的ADSI对象 (658)22.3.9 在Active Directory中搜索 (660)22.4 搜索用户对象 (663)22.4.1 用户界面 (663)22.4.2 获取模式命名环境 (664)22.4.3 获取User类的属性名 (665)22.4.4 搜索用户对象 (666)22.5 DSML (668)22.5.1 命名空间System.DirectoryServices.Protocols中的类 (668)22.5.2 用DSML搜索ActiveDirectory对象 (669)22.6 小结 (671)第Ⅳ部分Windows应用程序第23章Windows窗体 (675)23.1 创建Windows窗体应用程序 (675)23.2 Control类 (681)23.2.1 大小和位置 (682)23.2.2 外观 (683)23.2.3 用户交互操作 (683)23.2.4 Windows功能 (684)23.2.5 杂项功能 (685)23.3 标准控件和组件 (685)23.3.1 Button控件 (686)23.3.2 CheckBox控件 (686)23.3.3 RadioButton控件 (687)23.3.4 ComboBox控件、ListBox控件和CheckedListBox控件 (687)23.3.6 ErrorProvider组件 (690)23.3.7 HelpProvider组件 (691)23.3.8 ImageList组件 (692)23.3.9 Label控件 (692)23.3.10 ListView控件 (692)23.3.11 PictureBox控件 (694)23.3.12 ProgressBar控件 (695)23.3.13 TextBox控件、RichTextBox控件与MaskedTextBox控件 (695)23.3.14 Panel控件 (696)23.3.15 FlowLayoutPanel和TableLayoutPanel控件 (696)23.3.16 SplitContainer控件 (697)23.3.17 TabControl控件和TabPages控件 (698)23.3.18 ToolStrip控件 (698)23.3.19 MenuStrip控件 (701)23.3.21 ToolStripMenuItem控件 (701)23.3.22 ToolStripManager类 (702)23.3.23 ToolStripContainer控件 (702)23.4 窗体 (702)23.4.1 Form类 (703)23.4.2 多文档界面 (708)23.4.3 定制控件 (708)23.5 小结 (721)第24章查看.NET数据 (722)24.1 DataGridView控件 (722)24.1.1 显示列表数据 (722)24.1.2 数据源 (724)24.2 DataGridView类的层次结构 (732)24.3 数据绑定 (735)24.3.1 简单的绑定 (735)24.3.2 数据绑定对象 (735)24.4 Visual 和数据访问 (739)24.4.1 创建一个连接 (740)24.4.2 选择数据 (742)24.4.3 更新数据源 (743)24.4.4 构建模式 (743)24.4.5 其他常见的要求 (749)24.5 小结 (757)第25章使用GDI+绘图 (758)25.1 理解绘图规则 (758)25.1.1 GDI和GDI+ (758)25.1.2 绘制图形 (760)25.1.3 使用OnPaint()绘制图形 (763)25.1.4 使用剪切区域 (764)25.2 测量坐标和区域 (766)25.2.1 Point和PointF结构 (766)25.2.2 Size和SizeF结构 (767)25.2.3 Rectangle和RectangleF结构 (769)25.2.4 Region.. 77025.3 调试须知 (770)25.4 绘制可滚动的窗口 (771)25.5 世界、页面和设备坐标 (776)25.6 颜色 (777)25.6.1 红绿蓝(RGB)值 (777)25.6.2 命名的颜色 (777)25.6.3 图形显示模式和安全的调色板 (778)25.6.4 安全调色板 (779)25.7 画笔和钢笔 (779)25.7.1 画笔 (779)25.7.2 钢笔 (780)25.8 绘制图形和线条 (781)25.9 显示图像 (783)25.10 处理图像时所涉及到的问题 (785)25.11 绘制文本 (786)25.12 简单的文本示例 (787)25.13 字体和字体系列 (788)25.14 示例:枚举字体系列 (790)25.15 编辑文本文档:CapsEditor示例 (792)25.15.1 Invalidate()方法 (796)25.15.2 计算项和文档的大小 (797)25.15.3 OnPaint(). 79925.15.4 坐标转换 (800)25.15.5 响应用户的输入 (802)25.16 打印 (805)25.17 小结 (810)第Ⅴ部分Web应用程序第26章页面 (813)26.1 概述 (813)26.2 Web窗体 (814)26.2.1 代码模型 (818)26.2.2 服务器控件 (818)26.3 和数据绑定 (833)26.3.1 更新会议登记应用程序 (833)26.3.2 数据绑定的更多内容 (840)26.4 应用程序配置 (845)26.5 小结 (847)第27章开发 (848)27.1 定制控件 (848)27.1.1 用户控件 (849)27.1.2 PCSDemoSite中的用户控件 (855)27.1.3 定制控件 (856)27.2 Master页面 (860)27.3 站点导航 (864)27.4 安全性 (867)27.4.1 使用安全向导添加Forms身份验证功能 (867)27.4.2 实现登录系统 (870)27.4.3 Web 登录服务器控件 (871)27.4.4 保护目录 (872)27.4.5 PCSDemoSite中的安全性 (872)27.5 主题 (874)27.5.1 把主题应用于页面 (875)27.5.2 定义主题 (876)27.5.3 PCSDemoSite中的主题 (876)27.6 小结 (879)第Ⅵ部分通信第28章Web服务 (883)28.1 SOAP (883)28.2 WSDL (885)28.3 Web服务 (886)28.3.1 创建Web服务 (886)28.3.2 使用Web服务 (890)28.4 扩充会议登记示例 (892)28.4.1 会议登记Web服务 (892)28.4.2 会议登记客户程序 (897)28.5 使用SOAP标题交换数据 (901)28.6 小结 (906)第29章.NET Remoting.. 90829.1 .NET Remoting的含义 (908)29.1.1 应用程序类型和协议 (909)29.1.2 CLR Object Remoting.. 90929.2 .NET Remoting概述 (910)29.3 环境 (912)29.3.1 激活 (913)29.3.2 特性和属性 (913)29.3.3 环境之间的通信 (914)29.4 远程对象、客户机和服务器 (914)29.4.1 远程对象 (914)29.4.2 简单的服务器 (915)29.4.3 简单的客户机 (916)29.5 .NET Remoting体系结构 (917)29.5.1 信道 (918)29.5.2 格式标识符 (922)29.5.3 ChannelServices和RemotingConfiguration.. 922 29.5.4 对象的激活 (924)29.5.5 消息接收器 (927)29.5.6 在远程方法中传递对象 (928)29.5.7 生存期管理 (933)29.6 .NET Remoting的其他特性 (936)29.6.1 配置文件 (936)29.6.2 利用驻留远程服务器 (946)29.6.3 类、接口和Soapsuds.. 94829.6.4 异步远程调用 (949)29.6.5 .NET Remoting的安全性 (950)29.6.6 远程调用和事件 (952)29.6.7 调用环境 (958)29.7 小结 (960)第30章Enterprise Services. 96130.1 概述 (961)30.1.1 Enterprise Services简史 (961)30.1.2 使用Enterprise Services的场合 (962)30.1.3 环境 (963)30.1.4 自动的事务处理 (963)30.1.5 分布式事务处理 (963)30.1.6 对象池 (963)30.1.7 基于角色的安全性 (964)30.1.8 排队的组件 (964)30.1.9 松散藕合的事件 (964)30.1.10 没有组件的服务 (964)30.2 创建简单的COM+应用程序 (965)30.2.1 类ServicedComponent. 96530.2.2 标记程序集 (965)30.2.3 程序集的属性 (965)30.2.4 创建组件 (966)30.3 部署 (967)30.3.1 自动部署 (967)30.3.2 手工部署 (968)30.3.3 创建安装软件包 (968)30.4 Component Services浏览器 (969)30.5 客户应用程序 (971)30.6 事务处理 (971)30.6.1 ACID属性 (972)30.6.2 事务处理的属性 (972)30.6.3 事务处理的结果 (973)30.7 示例应用程序 (973)30.7.1 实体类 (974)30.7.2 OrderControl组件 (978)30.7.3 OrderData组件 (978)30.7.4 OrderLineData组件 (981)30.7.5 客户应用程序 (983)30.8 没有组件的服务 (984)30.9 小结 (986)第31章消息队列 (988)31.1 概述 (988)31.1.1 使用Message Queuing的场合 (989)31.1.2 Message Queuing特性 (990)31.2 Message Queuing产品 (990)31.3 Message Queuing结构 (991)31.3.1 消息 (991)31.3.2 消息队列 (992)31.4 Message Queuing管理工具 (992)31.4.1 创建消息队列 (992)31.4.2 消息队列属性 (993)31.5 Message Queuing的编程实现 (994)31.5.1 创建消息队列 (994)31.5.2 查找队列 (995)31.5.3 打开已知的队列 (996)31.5.4 发送消息 (997)31.5.5 接收消息 (1000)31.6 课程订单应用程序 (1002)31.6.1 课程订单类库 (1002)31.6.2 课程订单消息发送程序 (1005)31.6.3 发送优先级和可恢复的消息 (1006)31.6.4 课程订单消息接收程序 (1007)31.7 接收结果 (1010)31.7.1 确认队列 (1011)31.7.2 响应队列 (1012)31.8 事务队列 (1012)31.9 消息队列的安装 (1013)31.10 小结 (1014)第32章分布式编程的未来产品 (1015)32.1 现有技术的问题 (1015)32.2 Web服务 (1016)32.2.1 安全性 (1017)32.2.2 可靠性 (1018)32.2.3 事务处理 (1020)32.2.4 性能 (1021)32.3 WCF概述 (1023)32.4 用WCF编程 (1025)32.4.1 契约 (1025)32.4.2 服务程序的实现 (1027)32.4.3 绑定 (1028)32.4.4 主机 (1030)32.4.5 客户程序 (1031)32.5 准备使用WCF (1032)32.5.1 .NET Remoting.. 103232.5.2 Web服务 (1033)32.5.3 Enterprise Services.. 103332.5.4 Message Queuing.. 103432.6 小结 (1035)第Ⅶ部分互操作性第33章COM的互操作性 (1039)33.1 .NET和COM (1039)33.1.1 元数据 (1040)33.1.2 释放内存 (1040)33.1.3 接口 (1040)33.1.4 方法绑定 (1042)33.1.5 数据类型 (1042)33.1.6 注册 (1042)33.1.7 线程 (1043)33.1.8 错误处理 (1044)33.1.9 事件处理 (1045)33.2 编组 (1045)33.3 在.NET客户程序中使用COM组件 (1046)33.3.1 创建COM组件 (1046)33.3.2 创建Runtime CallableWrapper. 105033.3.3 线程问题 (1053)33.3.4 添加连接点 (1053)33.3.5 在Windows窗体中使用ActiveX控件 (1055)33.3.6 在中使用COM对象 (1058)33.4 在COM客户程序中使用.NET组件 (1058)33.4.1 COM Callable Wrapper. 105833.4.2 创建.NET组件 (1059)33.4.3 创建类型库 (1060)33.4.4 COM互操作特性 (1062)33.4.5 COM注册 (1065)33.4.6 创建COM客户程序 (1066)33.4.7 添加连接点 (1068)33.4.8 用sink对象创建客户程序 (1069)33.4.9 在Internet Explorer中运行Windows窗体控件 (1070)33.5 小结 (1070)第Ⅷ部分Windows基本服务第34章文件和注册表操作 (1073)34.1 管理文件系统 (1073)34.1.1 表示文件和文件夹的.NET类 (1074)34.1.2 Path类 (1077)34.1.3 示例:文件浏览器 (1077)34.2 移动、复制和删除文件 (1082)34.2.1 FilePropertiesAndMovement示例 (1082)34.2.2 示例FilePropertiesAndMovement的代码 (1083)34.3 读写文件 (1087)34.3.1 读取文件 (1087)34.3.2 写入文件 (1089)34.3.3 流 (1090)34.3.4 缓存的流 (1092)34.3.5 读写二进制文件 (1092)34.3.6 读写文本文件 (1097)34.4 读取驱动器信息 (1103)34.5 文件的安全性 (1105)34.5.1 从文件中读取ACL (1106)34.5.2 从目录中读取ACL (1107)34.5.3 添加和删除文件中的ACL项 (1109)34.6 读写注册表 (1110)34.6.1 注册表 (1111)34.6.2 .NET注册表类 (1112)34.6.3 SelfPlacingWindow示例 (1115)34.7 小结 (1121)第35章访问Internet112235.1 WebClient类 (1122)35.1.1 下载文件 (1123)35.1.2 基本的Web客户示例 (1123)35.1.3 上传文件 (1124)35.2 WebRequest类和WebResponse类 (1125)35.3 把输出结果显示为HTML页面 (1128)35.3.1 在应用程序中进行简单的Web浏览 (1128)35.3.2 启动Internet Explorer实例 (1130)35.3.3 给应用程序提供更多的IE类型特性 (1131)35.3.4 使用WebBrowser控件显示文档 (1137)35.3.5 使用WebBrowser控件打印 (1138)35.3.6 显示请求页面的代码 (1138)35.3.7 WebRequest和WebResponse的层次结构 (1140)35.4 实用工具类 (1140)35.4.1 URI. 114035.4.2 IP地址和DNS名称 (1141)35.5 较低层的协议 (1144)35.6 小结 (1150)第36章Windows服务 (1151)36.1 Windows服务 (1151)36.2 Windows服务的体系结构 (1152)36.2.1 服务程序 (1152)36.2.2 服务控制程序 (1153)36.2.3 服务配置程序 (1154)36.3 System.ServiceProcess命名空间 (1154)36.4 创建Windows服务 (1154)36.4.1 使用套接字的类库 (1155)36.4.2 TcpClient示例 (1159)36.4.3 Windows服务项目 (1160)36.4.4 线程和服务 (1166)36.4.5 服务的安装 (1166)36.4.6 安装程序 (1166)36.5 服务的监视和控制 (1171)36.5.1 MMC计算机管理 (1171)36.5.2 net.exe.. 117236.5.3 sc.exe.. 117336.5.4 Visual Studio ServerExplorer. 117336.5.5 ServiceController类 (1174)36.6 故障排除 (1179)36.6.1 交互式服务 (1180)36.6.2 事件日志 (1181)36.6.3 性能监视 (1186)36.7 电源事件 (1190)36.8 小结 (1191)前言对于开发人员来说,把C#语言及其相关环境.NET Framework描述为多年来最重要的新技术一点都不夸张。
.NET项⽬中NLog的配置与使⽤引⾔: 因为之前在项⽬开发中⼀直都是使⽤的Log4Net作为项⽬的⽇志记录框架,最近忽然感觉对它已经有点腻了,所以尝试着使⽤了NLog作为新项⽬的⽇志记录框架(当然作为⼀名有志向的攻城狮永远都不能只局限于眼前的技术,要不断的使⽤和学习新的技术)。
当然serilog也是⼀个不错的⽇志记录框架哟,不过今天主要还是要讲述的是NLog在项⽬中的配置和使⽤。
NLog框架源码:⼀、导⼊NLog NuGet PackAge:⼆、配置NLog 配置⽂件:注意:在这⾥我是专门新建了⼀个NLog.config 配置⽂件⽤来进⾏独⽴配置,当然你也可以在web.config中完成相应的配置!!NLog详细配置⽂件信息,请查看官⽹说明:可参考晓晨⼤佬的NLog配置:我的NLog.config 配置代码:<?xml version="1.0" encoding="utf-8" ?><nlog xmlns="/schemas/NLog.xsd"xmlns:xsi="/2001/XMLSchema-instance"><targets><!--此部分中的所有⽬标将⾃动异步--><target name="asyncFile" xsi:type="AsyncWrapper"><!--项⽬⽇志保存⽂件路径说明fileName="${basedir}/保存⽬录,以年⽉⽇的格式创建/${shortdate}/${记录器名称}-${单级记录}-${shortdate}.txt"--><target name="log_file" xsi:type="File"fileName="${basedir}/ProjectLogs/${shortdate}/${logger}-${level}-${shortdate}.txt"layout="${longdate} | ${message} ${onexception:${exception:format=message} ${newline} ${stacktrace} ${newline}"archiveFileName="${basedir}/archives/${logger}-${level}-${shortdate}-{#####}.txt"archiveAboveSize="102400"archiveNumbering="Sequence"concurrentWrites="true"keepFileOpen="false"/></target><!--使⽤可⾃定义的着⾊将⽇志消息写⼊控制台--><target name="colorConsole" xsi:type="ColoredConsole" layout="[${date:format=HH\:mm\:ss}]:${message} ${exception:format=message}"/></targets><!--规则配置,final - 最终规则匹配后不处理任何规则--><rules><logger name="Microsoft.*" minlevel="Info" writeTo="" final="true"/><logger name="*" minlevel="Info" writeTo="asyncFile"/><logger name="*" minlevel="Warn" writeTo="colorConsole"/></rules></nlog>NLog配置⽂件信息简单概述:rules【规则】说明: 规则是logger具有以下属性的元素:name - 记录器名称过滤器 - 可能包含通配符(*和?)minlevel - 记录的最低级别maxlevel - 记录的最⾼级别level - 单级记录levels - 逗号分隔的记录级别列表writeTo - 逗号分隔的要写⼊的⽬标列表final - 最终规则匹配后不处理任何规则enabled- 设置为false禁⽤规则⽽不删除它ruleName- 规则标识符,允许使⽤Configuration.FindRuleByName和进⾏规则查找Configuration.RemoveRuleByName。
.net数据库操作框架SqlSugar的简单⼊门⽬录介绍框架新功能1、配置查询1.1 创建测试数据1.2 传统字典联表实现缺点1.3 配置表简化字典联表1.4 简单联表查询也可以配置2、多租户+仓储+⾃动分配3、⾏列互转功能 介绍SqlSugar是⼀款⽼牌 .NET数据库操作框架,由果糖⼤数据科技团队维护和更新,Github star数仅次于EF 和 Dapper 优点:简单易⽤、功能齐全、⾼性能、轻量级、服务齐全、有专业技术⽀持⼀天18⼩时服务⽀持数据库:MySql、SqlServer、Sqlite、Oracle 、 postgresql、达梦、⼈⼤⾦仓框架新功能最新稳定版本5.0.2.8 ,发布后1个⽉时间NUGET下载量达到5000的版本,⽤户使⽤也相当满意⽽在稳定版本的基础上⼜布了5.0.2.9版本加⼊3⼤新功能1. 配置查询解决了⼤量字典表和简单就为取⼀个name 就要写联表的问题,让单表查询解决⼀切2.多租户+仓储+⾃动分配3.⾏转列1、配置查询解决了⼤量字典表和简单就为取⼀个name 就要写联表的问题,让单表查询解决⼀切字典表我相信⼤家都全⽤到,他们可以⽅便的存储性别、学历、岗位等⼀串数据并进⾏TypeId进⾏区分1.1 创建测试数据创建⼀个字典实体public class DataDictionary{public string Code { get; set; }public string Name { get; set; }public string Type { get; set; }}创建字典表并向⾥⾯插⼊测试数据 var db = GetInstance();List<DataDictionary> datas = new List<DataDictionary>();datas.Add(new DataDictionary() { Code="1", Name="男",Type="sex" });datas.Add(new DataDictionary() { Code = "2", Name = "⼥", Type = "sex" });datas.Add(new DataDictionary() { Code = "1", Name = "南通市", Type = "city" });datas.Add(new DataDictionary() { Code = "2", Name = "苏州市", Type = "city" });datas.Add(new DataDictionary() { Code = "1", Name = "江苏省", Type = "province" });datas.Add(new DataDictionary() { Code = "2", Name = "湖南省", Type = "province" });db.CodeFirst.InitTables<DataDictionary>();//这样就能根据实体建表了db.Insertable(datas).ExecuteCommand();//这样就能把数据插进数据库了<br>在建⼀个Person表 public class Person{//数据库字段[SqlSugar.SugarColumn(IsPrimaryKey =true,IsIdentity =true)]public int Id { get; set; }public string Name { get; set; }public int SexId { get; set; }public int CityId { get; set; }public int ProvinceId { get; set; }//⾮数据库字段[SqlSugar.SugarColumn(IsIgnore =true)]public string SexName { get; set; }[SqlSugar.SugarColumn(IsIgnore = true)]public string CityName { get; set; }[SqlSugar.SugarColumn(IsIgnore = true)]public string ProviceName { get; set; }} 1.2 传统字典联表实现缺点如果我们要将Person中的⾮数据字典查询出来那么我们就需要写有2种实现⽅式1.连表或者⼦查询(缺点写起来很浪费时间)2.将字典存到内存,通过内存赋值(缺点字典表超过1000条以上性能很差,并且不能排序,或者LIKE)下⾯介绍通过SqlSugar的配置查询解决上2⾯个难题1.3 配置表简化字典联表配置字典表if (!db.ConfigQuery.Any()){var types= db.Queryable<DataDictionary>().Select(it => it.Type).Distinct().ToList();foreach (var type in types){db.ConfigQuery.SetTable<DataDictionary>(it => it.Code, it => , type, it => it.Type == type);}//如果其中Code都是唯⼀值可以按 1.4中的⽤法使⽤循环都不要}配置完我们查询就会很⽅便了var res=db.Queryable<Person>().Select(it => new Person(){Id=it.Id.SelectAll(),SexName=it.SexId.GetConfigValue<DataDictionary>("sex"),ProvinceName = it.ProvinceId.GetConfigValue<DataDictionary>("province"),CityName = it.CityId.GetConfigValue<DataDictionary>("city"),}).ToList();//也⽀持⽀持写在Where或者Orderby 1.4 简单联表查询也可以配置db.ConfigQuery.SetTable<Order>(it => it.Id, it => );//配置Order<br>var list3 = db.Queryable<OrderItem>().Select(it => new OrderItem{ItemId = it.ItemId.SelectAll(),OrderName = it.OrderId.GetConfigValue<Order>() //查询的时候直接⽤}).ToList();总结:配置表查询的⽅式可以⼤⼤降低重复联表问题,并且配置好后基本就不要写JOIN了 2、多租户+仓储+⾃动分配SqlSugar多租户是通过ConfigId进⾏识别连接哪个库,新版本添加了实体配置ConfigId [TenantAttribute("1")]public class C1Table{public string Id { get; set; }}[TenantAttribute("2")]public class C2Table{public string Id { get; set; }}下⾯我们仓储就可以通过实体配置⾃动识别是连接哪个库public class Repository<T> : SimpleClient<T> where T : class, new(){public Repository(ISqlSugarClient context = null) : base(context)//注意这⾥要有默认值等于null{if (context == null){var db = new SqlSugarClient(new List<ConnectionConfig> {new ConnectionConfig(){ConfigId="1",DbType = SqlSugar.DbType.SqlServer,IsAutoCloseConnection = true,ConnectionString = Config.ConnectionString},new ConnectionConfig(){ConfigId="2",DbType = SqlSugar.DbType.SqlServer,IsAutoCloseConnection = true,ConnectionString = Config.ConnectionString2}});base.Context = db;var configId = typeof(T).GetCustomAttribute<TenantAttribute>().configId;db.ChangeDatabase(configId);}}/// <summary>/// 扩展⽅法,⾃带⽅法不能满⾜的时候可以添加新⽅法/// </summary>/// <returns></returns>public List<T> CommQuery(string sql){//base.Context.Queryable<T>().ToList();可以拿到SqlSugarClient 做复杂操作return base.Context.Queryable<T>().Where(sql).ToList();}}新版本还添加了切换仓储功能public class C1Service : Repository<C1Table>{public void Test(){base.AsTenant().BeginTran();base.GetList(); //调⽤内部仓储⽅法base.ChangeRepository<Repository<C2Table>>().GetList();//调⽤外部仓储base.AsTenant().CommitTran();}}3、⾏列互转功能 第⼀个参数列名、第⼆个参数头⾏名、第三个参数值var test06 = db.Queryable<Order>().ToPivotTable(it => it.Id, it => , it => it.Sum(x => x.Price));//返回Datatablevar test07 = db.Queryable<Order>().ToPivotList(it => it.Id, it => , it => it.Sum(x => x.Price));//返回List<dynamic><br>var test08 = db.Queryable<Order>().ToPivotJson(it => it.Id, it => , it => it.Sum(x => x.Price));//返回Json以上就是.net数据库操作框架SqlSugar的简单⼊门的详细内容,更多关于.net数据库操作框架SqlSugar的资料请关注其它相关⽂章!。
浪潮英信服务器Redfish用户手册文档版本V1.2发布日期2023-02-08版权所有© 2022-2023浪潮电子信息产业股份有限公司。
保留一切权利。
未经本公司事先书面许可,任何单位和个人不得以任何形式复制、传播本手册的部分或全部内容。
内容声明您购买的产品、服务或特性等应受浪潮集团商业合同和条款的约束。
本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。
除非合同另有约定,浪潮集团对本文档的所有内容不做任何明示或默示的声明或保证。
文档中的示意图与产品实物可能有差别,请以实物为准。
本文档仅作为使用指导,不对使用我们产品之前、期间或之后发生的任何损害负责,包括但不限于利益损失、信息丢失、业务中断、人身伤害,或其他任何间接损失。
本文档默认读者对服务器产品有足够的认识,获得了足够的培训,在操作、维护过程中不会造成个人伤害或产品损坏。
文档所含内容如有升级或更新,恕不另行通知。
商标说明Inspur浪潮、Inspur、浪潮、英信是浪潮集团有限公司的注册商标。
本手册中提及的其他所有商标或注册商标,由各自的所有人拥有。
技术支持技术服务电话:4008600011地址:中国济南市浪潮路1036号浪潮电子信息产业股份有限公司邮编:250101符号约定在本文中可能出现下列符号,它们所代表的含义如下。
符号说明如不当操作,可能会导致死亡或严重的人身伤害。
符号 说明如不当操作,可能会导致人员损伤。
如不当操作,可能会导致设备损坏或数据丢失。
为确保设备成功安装或配置,而需要特别关注的操作或信息。
对操作内容的描述进行必要的补充和说明。
变更记录版本时间 变更内容 V1.02022-05-17 初版发布。
V1.1 2022-05-24 优化部分内容,如Oem.Public 的说明。
V1.2 2023-02-08• 优化ifmatch_value 的说明和system_id 的取值等内容•修改4.6章节表4-21和表4-23请求消息体中的部分内容 •修改5.9章节的部分内容 •修改6.22章节的部分内容 • 修改6.44章节的部分内容目录1说明 (10)1.1说明 (10)1.2目标读者 (10)1.3内容说明 (10)2Public资源 (14)2.1查询Redfish版本信息 (14)2.2查询当前根服务资源 (15)2.3修改当前根服务资源属性 (17)2.4查询Metadata文档 (20)2.5查询OData服务文档 (21)2.6查询所有资源Schema文件 (24)2.7查询指定Schema文件路径信息 (26)2.8查询指定Schema文件 (29)2.9查询所有归档资源 (32)2.10查询指定归档资源的路径信息 (34)2.11查询指定Registry文件 (36)3SessionService资源 (39)3.1查询会话服务信息 (39)3.2修改会话服务信息 (40)3.3查询会话集合资源信息 (43)3.4查询指定会话资源信息 (45)3.5创建会话 (47)3.6删除指定会话 (49)4AccountService资源 (51)4.1查询用户服务信息 (51)4.2修改用户服务信息 (53)4.3查询用户集合资源信息 (57)4.4创建用户 (60)4.5查询指定用户资源信息 (62)4.6修改指定用户信息 (64)4.7删除用户 (66)4.8查询角色资源集合信息 (67)4.9查询指定角色信息 (69)4.10修改指定角色的权限 (71)5Chassis资源 (75)5.1查询机箱集合资源信息 (75)5.2查询指定机箱资源的信息 (76)5.3修改指定机箱资源信息 (81)5.4设置电源状态 (82)5.5查询硬盘背板集合信息 (83)5.6查询指定硬盘背板信息 (86)5.7查询驱动器集合资源信息 (88)5.8查询指定驱动器资源信息 (90)5.9修改指定驱动器资源信息 (93)5.10查询PCIe设备资源集合信息 (95)5.12查询指定PCIe功能集合资源信息 (100)5.13查询指定PCIe功能资源信息 (101)5.14查询网络适配器集合资源信息 (105)5.15查询指定网络适配器资源信息 (106)5.16查询网络端口集合资源信息 (111)5.17查询指定网络端口资源信息 (112)5.18查询网络端口功能集合资源信息 (115)5.19查询指定机箱电源信息 (117)5.20查询指定机箱散热资源集合的信息 (124)5.21修改指定机箱散热资源集合信息 (127)5.22查询阈值传感器列表资源信息 (130)5.23查询离散型传感器列表资源信息 (132)6Managers资源 (135)6.1查询管理集合资源信息 (135)6.2查询指定管理资源信息 (136)6.3修改指定管理资源属性 (140)6.4修改BMC时区 (142)6.5触发KVM截屏 (144)6.6下载KVM截屏 (145)6.7一键收集debug日志 (146)6.8下载debug日志 (148)6.9查询日志服务集合资源信息 (150)6.10查询SEL日志服务资源信息 (151)6.12查询指定SEL日志信息 (159)6.13清空SEL日志 (163)6.14查询审计日志服务资源信息 (165)6.15查询审计日志信息 (167)6.16查询指定审计日志信息 (170)6.17查询故障诊断日志服务资源信息 (172)6.18查询故障诊断日志信息 (175)6.19查询指定故障诊断日志信息 (177)6.20清空故障诊断日志 (179)6.21查询BMC服务信息 (181)6.22修改BMC服务信息 (185)6.23查询BMC网口集合资源信息 (190)6.24查询指定网口信息 (192)6.25修改指定网口资源信息 (195)6.26查询虚拟媒体基本信息 (199)6.27查询虚拟媒体CD挂载的信息 (201)6.28执行虚拟媒体CD挂载动作 (203)6.29执行虚拟媒体CD卸载动作 (205)6.30查询虚拟媒体USB Stick挂载信息 (206)6.31执行虚拟媒体USB Stick挂载动作 (208)6.32执行虚拟媒体USB Stick卸载动作 (210)6.33重启BMC (211)6.34查询Syslog资源信息 (212)6.36发送Syslog测试动作信息 (219)6.37查询SMTP资源信息 (221)6.38修改SMTP资源属性 (224)6.39发送SMTP测试邮件 (228)6.40查询VNC资源 (230)6.41修改VNC资源属性 (232)6.42恢复出厂设置 (236)6.43查询SNMP资源信息 (237)6.44修改SNMP资源信息 (242)6.45通过SNMP发送测试事件 (247)6.46查询KVM资源 (249)6.47修改KVM资源属性 (252)6.48查询NTP配置资源信息 (256)6.49修改NTP配置资源信息 (259)6.50导出BMC配置文件 (262)6.51导入BMC配置文件 (263)6.52查询安全服务集合资源信息 (264)6.53查询SSL证书资源信息 (266)6.54生成SSL证书 (268)6.55导入服务器证书 (271)6.56导出网卡配置信息 (273)6.57导出RAID卡配置信息 (274)6.58导出BMC配置信息 (276)7Systems资源 (281)7.1查询系统集合资源信息 (281)7.2查询指定系统资源信息 (282)7.3修改指定系统资源信息 (287)7.4设置BIOS密码 (289)7.5重启服务器 (291)7.6查询BIOS信息 (292)7.7查询BIOS Setup修改的属性资源 (294)7.8修改BIOS Setup属性资源 (296)7.9清除未生效的BIOS Setup属性设置 (298)7.10恢复BIOS Setup属性默认值 (299)7.11导出BIOS Setup选项配置文件 (300)7.12导入BIOS Setup选项配置文件 (301)7.13查询启动设置选项 (303)7.14查询指定启动设置信息 (305)7.15查询内存集合资源信息 (306)7.16查询指定内存资源信息 (308)7.17查询所有内存资源信息 (312)7.18查询服务器处理器集合资源信息 (313)7.19查询指定处理器资源信息 (315)7.20查询所有处理器资源信息 (319)7.21查询BMC FRU信息 (321)7.22查询日志服务集合资源信息 (323)7.23查询SEL日志服务资源信息 (325)7.24查询SEL日志信息 (327)7.25查询指定SEL日志信息 (332)7.26清空SEL日志 (337)7.27修改SEL日志服务资源信息 (338)7.28查询存储集合资源信息 (340)7.29查询指定存储资源的信息 (342)7.30查询逻辑盘集合资源信息 (347)7.31查询指定逻辑盘资源信息 (348)7.32查询物理盘集合资源信息 (351)7.33查询指定物理盘资源信息 (353)7.34创建逻辑盘 (356)7.35删除指定逻辑磁盘 (360)7.36查询主机以太网接口集合资源信息 (362)7.37查询指定主机以太网接口资源信息 (364)7.38配置主机以太网接口 (367)7.39查询网络接口集合资源信息 (369)7.40查询指定网络接口资源信息 (371)7.41查询网络端口集合资源信息 (373)7.42查询VLAN集合资源信息 (375)7.43查询指定VLAN资源信息 (377)7.44删除指定VLAN资源 (379)7.45配置VLAN (380)7.46创建VLAN (382)7.47设定某一个逻辑盘为Boot Drive选项 (384)7.48获取Boot Drive选项所在的逻辑盘编号 (385)8UpdateService资源 (388)8.1查询升级服务资源信息 (388)8.2固件升级 (390)8.3上传BMC镜像 (392)8.4更新BMC (394)8.5查询BMC刷新状态 (395)8.6上传BIOS镜像 (397)8.7更新BIOS (398)8.8查询BIOS刷新状态 (400)8.9上传主板CPLD镜像 (401)8.10更新主板CPLD (403)8.11查询主板CPLD刷新状态 (404)8.12上传Storage CPLD镜像 (406)8.13更新Storage CPLD (407)8.14查询Storage CPLD刷新状态 (409)8.15查询可升级固件集合资源信息 (410)8.16文件上传 (412)8.17查询可升级固件指定资源信息 (414)8.18查询升级动作信息 (416)9TaskService资源 (419)9.1查询任务服务资源信息 (419)9.2查询任务集合资源信息 (421)9.3查询指定任务资源信息 (423)9.4查询指定Monitor信息 (425)10EventService资源 (428)10.1查询事件服务资源信息 (428)10.2修改事件服务资源信息 (431)10.3模拟测试事件 (434)10.4查询事件订阅集合资源的信息 (437)10.5创建事件订阅资源信息 (439)10.6修改事件订阅资源信息 (443)10.7查询事件订阅资源信息 (445)10.8删除事件订阅资源信息 (448)11专业术语解释 (451)1说明1.1说明本文档中的Redfish API按照DMTF Redfish DSP0266 1.8.0规范、Redfish DSP0268 2019.2 Schema及DSP8010 2019.2 Redfish Schema Bundle进行开发。
一、概述在现代的软件开发中,Web API 已经成为构建应用程序的重要组成部分。
随着 .NET Core 的不断发展和普及,使用 .NET Core 构建 Web API 已经成为一种常见的选择。
本文将介绍 .NET Core Web API 发布的流程,帮助开发人员更好地理解和掌握这一过程。
二、准备工作在开始 .NET Core Web API 的发布流程之前,我们需要进行一些准备工作。
具体的步骤如下:1. 确保已经安装 .NET Core SDK,并且版本符合要求。
2. 确保已经安装了适当的开发工具,例如 Visual Studio 或 Visual Studio Code。
3. 在发布之前,务必确认代码已经通过了测试并且没有明显的 bug。
三、项目配置在进行发布之前,我们需要对项目进行一些必要的配置。
具体的步骤如下:1. 在项目的根目录下,创建一个名为 PublishProfile 的文件夹。
2. 在 PublishProfile 文件夹中创建一个名为 publishSettings.json 的文件,用于存储发布设置。
3. 在 publishSettings.json 文件中,配置发布的相关参数,包括目标环境、目标框架、发布路径等。
四、发布流程接下来,我们来介绍 .NET Core Web API 的发布流程。
具体的步骤如下:1. 打开命令行工具,切换到项目的根目录。
2. 运行命令 dotnet publish -c Release -o <output-path>,其中 -c Release 用于指定发布的配置,-o <output-path>用于指定发布的输出路径。
3. 等待发布过程完成,确保没有出现错误信息。
4. 将发布文件部署到目标环境,可以通过 FTP、WebDeploy 等方式进行部署。
5. 在目标环境上运行 .NET Core Web API,并进行必要的测试,确保发布结果符合预期。
使⽤.NETCORE创建项⽬模板,模板项⽬,Template场景:⽇常⼯作中,你可能会碰到需要新建⼀个全新的解决⽅案的情况(如公司新起了⼀个新项⽬,需要有全新配套的后台程序),如果公司内部基础框架较多、解决⽅案需要DDD模式等,那么从新起项⽬到各种依赖引⽤到能实际可⽤,⼀⼤堆的配置都需要重新设定、测试,耗时耗⼒,根据项⽬的⼤⼩,往往可能需要 1-2 ⼩时甚⾄更久。
在 .net core 之前,虽然有相关的解决⽅法可以实现“项⽬模板”这个需求,但在具体操作时很不⽅便,从 .net core 1.0 开始,提供了“模板引擎”,增加了 dotnet new --install(-i)命令和选项,通过该命令,可以让你⽅便的创建属于你⾃⼰的项⽬模板。
本⽂原始地址:通过本⽂你可以了解和掌握:1. 掌握如何将⼀个现有解决⽅案中的项⽬作为项⽬模板。
1. 掌握如何在本地创建项⽬模板并安装和使⽤。
2. 掌握如何将本地模板打包成 nuget 包,并通过包 id 进⾏安装使⽤该模板。
2. 了解、掌握简单的 dotnet 和 nuget 命令及其配置。
(windows 和 mac 会做差异说明)准备⼯作本次项⽬结构如下(DDD):你可以在我的 github 库:直接下载该模板源码⽤于发布的项⽬⼀共两个,Template.Console 和 Template.WebApi其中 Console 项⽬就是简单的引⽤了下其他项⽬进⾏输出。
WebApi 项⽬简单配置了下依赖注⼊,你可以将此项⽬作为 api 模板项⽬来说Console 项⽬概要:WebApi 项⽬概要:将本地项⽬作为本地模板,通过命令进⾏安装和使⽤1. 本次⽰例以 Console 为例,将控制台项⽬涉及到的项⽬拷贝⼀份到如下⽂件夹中:2. ⼿动创建⼀个名为“.template.config”的⽂件夹,并在该⽂件夹内创建⽂件:template.json{"$schema": "/template","author": "Artech","classifications": [ "Console" ],"name": "Custom Console","identity": "Custom Console", //模板唯⼀标识"groupIdentity": "Custom Console","shortName": "CustomConsole", //【修改】短名称,使⽤ dotnet new <shortName> 安装模板时的名称"tags": {"language": "C#","type": "project"},"sourceName": "Template", //【修改】在使⽤ -n 选项时,会替换模板中项⽬的名字"preferNameDirectory": true}这⾥主要说明下 shortName 和 sourceName 这 2 个属性。
.NETCORE控制台应⽤程序配置log4net⽇志⽂件使⽤⽂件格式记录⽇志1、新建⼀个.NET CORE控制台应⽤程序,添加log4net.dll引⽤,打开⼯具-》NuGet包管理器-》管理解决⽅案的NuGet程序包。
2、在NuGet-解决⽅案⾯板中-》程序包源选择全部-》选中包括预发⾏版-》选择浏览-》在搜索框中输⼊包名称-》选择搜索出来的包-》选择包要安装的项⽬-》选择包安装版本-》点击安装-》在预览更改弹出框点击确定-》在接受许可证弹出框,点击我接受-》在输出弹出框查看安装状态,在项⽬依赖项NuGet查看安装⽂件。
3、添加App.config配置⽂件-》右键点击项⽬-》选择添加-》选择新建项-》在添加新项弹出框-》选择应⽤程序配置⽂件-》输⼊配置⽂件名称-》点击确定-》查看新建⽂件。
4、打开App.Config⽂件-》添加配置⽂件节点属性。
<?xml version="1.0" encoding="utf-8" ?><configuration><configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/></configSections><log4net><appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"><!--⽇志路径--><param name= "File" value= ".\logfile\"/><!--是否是向⽂件中追加⽇志--><param name= "AppendToFile" value= "true"/><!--log保留天数--><param name= "MaxSizeRollBackups" value= "10"/><!--每个log⽂件最⼤是2M,如果超过2M将重新创建⼀个新的log⽂件,并将原来的log⽂件备份。
add-migration过程在进行软件开发时,数据库迁移是一个重要的环节。
它允许开发人员对数据库结构进行更改,并将这些更改应用到已经部署的应用程序中,而无需手动操作数据库。
在 Core中,使用Entity Framework Core来管理数据库迁移。
add-migration是Entity Framework Core中的一个命令,它用于为数据库创建一个新的迁移。
下面将详细介绍add-migration的使用过程。
我们需要在项目的根目录下打开命令行或终端窗口。
在命令行中,我们输入以下命令:dotnet ef migrations add <MigrationName>其中,<MigrationName>是自定义的迁移名称,可以根据具体的迁移内容进行命名,例如"AddUserTable"。
接下来,我们按下回车键,命令行将执行add-migration命令,生成一个新的迁移文件。
这个迁移文件将包含对数据库的更改的代码。
add-migration命令执行后,Entity Framework Core将自动分析项目中的模型类,并检测出数据库结构的更改。
它会比较当前的模型与上一次迁移后的模型,然后生成需要应用到数据库的更改。
生成的迁移文件是一个C#类,它包含了对数据库的更改的代码。
在这个迁移文件中,我们可以看到Up方法和Down方法。
Up方法包含了将更改应用到数据库的代码,而Down方法包含了将更改回滚的代码。
在Up方法中,我们可以看到一系列的操作,如创建新的表、添加字段、修改表结构等。
这些操作将在数据库升级时被执行,以使数据库与模型类保持同步。
在Down方法中,我们可以看到与Up方法相反的操作,用于回滚数据库更改。
当我们需要将数据库回滚到之前的状态时,可以执行down方法中的代码。
生成的迁移文件位于项目的"Migrations"文件夹中。
CAP(分布式事务解决方案)是一个开源的分布式事务解决方案,用于处理微服务架构中的分布式事务问题。
在.NET 中,CAP 提供了一个名为DotNetCore.CAP 的库,用于简化分布式事务的管理。
以下是在.NET 中集成CAP 的一般步骤:步骤:安装CAP NuGet 包:在您的项目中安装CAP NuGet 包。
bashCopy codedotnet add package DotNetCore.CAP配置CAP:在Startup.cs 中进行CAP 的配置。
在ConfigureServices 方法中添加CAP 服务的配置。
csharpCopy codepublic void ConfigureServices(IServiceCollection services){// ... 其他服务配置services.AddCap(options =>{eMySql("Your_Connection_String"); // 指定数据库连接字符串eRabbitMQ("Your_RabbitMQ_Connection_String"); // 指定RabbitMQ 连接字符串eDashboard(); // 启用CAP Dashboard});// ... 其他服务配置}配置CAP 服务:在Configure 方法中配置CAP 服务。
csharpCopy codepublic void Configure(IApplicationBuilder app, IHostingEnvironment env){// ... 其他配置eCap();// ... 其他配置}定义事件和事件处理程序:在您的应用程序中定义事件和相应的事件处理程序。
事件是您想要在分布式环境中传播的动作,而事件处理程序是响应这些事件的逻辑。
csharpCopy codepublic class YourEvent{public string Message { get; set; }}public class YourEventHandler : ICapSubscribe{[CapSubscribe("YourEvent")]public void Handle(YourEvent @event){// 处理事件的逻辑}}发布事件:在您的应用程序中,通过CAP 提供的服务发布事件。
1.准备操作系统windows2003sp2、iis6.0、sql2008+SP2、framework4.0、office2007,winrar2.新建还原数据库3.建IIS(应用程序配置)添加扩展名为html,mvc的通配应用程序映射4.修改配置文件数据库链接,流程布署(两个虚拟目录aspnet须4.0且启用匿名访问C盘建个TempImageFiles目录修改主目录web.config中的identityimpersonate”=true”节的操作系统管理员的密码账户.5.Web主目录加aspnet,everyone6.主网站应用程序池配置为本地系统7.配置需以ip为地址不能用localhost一、工作流服务部署以下假设网站根目录为d:\WebSite
1、建虚拟目录WcfServices路径为d:\WebSite\WcfServices修改此目录下的web.config文件里的数据库连接配置
2、建虚拟目录WfServices路径为d:\WebSite\WfServices修改此目录下的web.config文件里的数据库连接配置
3、在根目录的web.config的节点中加如下配置节,并修改http://192.168.1.138为相应的服务实际布署的服务器地址openTimeout="00:01:00"receiveTimeout="00:10:00"sendTimeout="00:01:00"allowCookies="false"bypassProxyOnLocal="false"hostNameComparisonMode="StrongWildcard"maxBufferSize="655360"maxBufferPoolSize="524288"maxReceivedMessageSize="655360"messageEncoding="Text"textEncoding="utf-8"transferMode="Buffered"useDefaultWebProxy="true">maxArrayLength="16384"maxBytesPerRead="4096"maxNameTableCharCount="16384"/>realm=""/>openTimeout="00:01:00"receiveTimeout="00:10:00"sendTimeout="00:01:00"allowCookies="false"bypassProxyOnLocal="false"hostNameComparisonMode="StrongWildcard"maxBufferSize="65536"maxBufferPoolSize="524288"maxReceivedMessageSize="65536"messageEncoding="Text"textEncoding="utf-8"transferMode="Buffered"useDefaultWebProxy="true">maxArrayLength="16384"maxBytesPerRead="4096"maxNameTableCharCount="16384"/>realm=""/>openTimeout="00:01:00"receiveTimeout="00:10:00"sendTimeout="00:01:00"allowCookies="false"bypassProxyOnLocal="false"hostNameComparisonMode="StrongWildcard"maxBufferSize="65536"maxBufferPoolSize="524288"maxReceivedMessageSize="65536"messageEncoding="Text"textEncoding="utf-8"transferMode="Buffered"useDefaultWebProxy="true">maxArrayLength="16384"maxBytesPerRead="4096"maxNameTableCharCount="16384"/>realm=""/>address="http://192.168.1.138/WcfServices/WorkflowBasicService.svc/WorkflowBasicService"binding="basicHttpBinding"bindingConfiguration="BasicHttpBinding_IWorkflowBasicService"contract="WorkflowBasicService.IWorkflowBasicService"name="BasicHttpBinding_IWorkflowBasicService"/>binding="basicHttpBinding"bindingConfiguration="BasicHttpBinding_ITaskService"contract="TaskService.ITaskService"name="BasicHttpBinding_ITaskService"/>binding="basicHttpBinding"bindingConfiguration="BasicHttpBinding_IWorkflowProcessService"contract="WorkflowProcessService.IWorkflowProcessService"name="BasicHttpBinding_IWorkflowProcessService"/>
4、如果服务器操作系统是Windows2003,给IIS添加MIME类型,让客户端浏览器能打开Silverlight程序扩展名:.xapMIME类型:application/x-silverlight-app
二、工作流客户端部署以下假设网站根目录为d:\WebSite
1、修改d:\WebSite\ClientBin\ShareDesigner.config.xml(工作流定义控件)配置信息(1)ShareDesigner.config.xml修改
2、修改d:\WebSite\ClientBin\FlowAnalyse.config.xml(流程分析控件)配置信息(1)FlowAnalyse.config.xml修改
2.oa数据库服务器上有MED数据库(病案借阅用)例根目录下的MED3.服务器需安装MSChart(见根目录),office
4.如出现cgi错误,则IIS设置脚本与执行程序还要勾选集成身份验证。便签日程安排配置建虚拟目录SLServices路径为d:\WebSite\SLServices修改此目录下的web.config文件里的数据库连接配置1、修改d:\WebSite\ClientBin\Scheduling.Config.xml(工作流定义控件)配置信息(1)Scheduling.Config.xml修改
2、修改d:\WebSite\ClientBin\Scratchpad.Config.xml(流程分析控件)配置信息(1)Scratchpad.Config.xml修改
Publicprograms里的connectDB.asp的配置IIS支持asp,支持父路径