当前位置: 首页 > news >正文

网站建设策划解决方案河北自助建站系统平台

网站建设策划解决方案,河北自助建站系统平台,吃什么补肾最好,wordpress搬站流程作为.NET家族的最新成员#xff0c;有很多关于.NET Core和.NET Standard的误解#xff0c;以及它们于.NET Framework之间的区别。在这篇文章#xff0c;我会准确的解释他们究竟是什么#xff0c;并看看何时应选择哪一个。在详细介绍之前#xff0c;首先查看.NET的结构图有很多关于.NET Core和.NET Standard的误解以及它们于.NET Framework之间的区别。在这篇文章我会准确的解释他们究竟是什么并看看何时应选择哪一个。在详细介绍之前首先查看.NET的结构图它将帮助我们更好的理解.NET Core和.NET Standard所在的未知。当15年前.NET 框架第一版发布时 它有一个单一的. NET 堆栈, 可用于构建 Windows 桌面和 Web 应用程序。从那时起其他.NET 实现也开始出现比如 Xamarin使用Xamarin你可以为iOS和Android构建移动应用程序以及macOS桌面应用程序如图 1所示.图 1 .NET 结构图关于.NET Core和.NET Standard如何融入.NET结构.NET Core .NET Core是最新的一个.NET 实现。开放源代码可用于多个操作系统。使用.NET Core你可以构建跨平台控制台应用程序和 ASP.NET Core Web 应用程序和云服务。.NET Standard 这是所有的.NET实现所必须实现的基本Api 通常称为base class library或 BCL。通过以.NET Standard为目标您可以构建能够在所有. net 应用程序之间共享的库, 无论它们运行在哪个.NET实现或在哪个操作系统上。.NET Core 简介.NET Core是一个.NET Framework 和 Silverlight的一个分支支持跨平台并且完全开源。它通过启用独立的 XCOPY 部署来优化移动和服务器工作负载。为了更好的了解.NET Core让我们详细查看基于.NET Core的开发是如何进行的同时探索新的基于命令行的工具。你也可以使用 Visual Studio 2017来进行. NET Core开发但因为你正在阅读本文你很可能已经熟悉 Visual Studio所以我将重点介绍新的体验。当.NET 创建时, 它为 Windows 上的快速应用程序开发进行了大量优化。在实践中这意味着.NET 开发和 Visual Studio 是形影不离的好朋友。当然使用 Visual Studio开发是一种冲击。它极为高效并且调试器是我用过最好的工具。但是, 在某些情况下, 使用 Visual Studio 并不是很方便。比如你只是想要简单的通过.NET学习 C#你不应该下载并安装一个大型的IDE。或者你通过 SSH 访问 Linux 机器此时无法使用IDE。或者你只是更喜欢使用命令行界面 (CLI)。这就是名为.NET Core CLI被创建的原因。.NET Core CLI 的主要命令为dotnet。你可以将其用于开发的几乎所有方面, 包括创建、编译、测试和打包项目。让我们通过实例来了解它是如何操作的。创建并运行一个 Hello World 控制台应用程序 (我在Windows系统使用PowerShell但是同样可以在macOS或Linux的Bash中运行):$ dotnet new console -o hello $ cd hello $ dotnet run Hello World!CLI中的 dotnet new 命令等于Visual Studio中的文件|新建项目。 你可以创建各种不同的项目类型。输入 dotnet new 以查看预安装的不同模板。现在让我们将一些逻辑提取到一个类库中。为此需首先创建一个类库项目平行于你的 hello 项目$ cd .. $ dotnet new library -o logic $ cd logic你想要封装的逻辑是构建一个 Hello World 的消息所以修改 Class1.cs 的内容为下面的代码namespace logic {public static class HelloWorld{public static string GetMessage(string name) $Hello {name}!;} }同时你还需要重命名 Class1.cs 为 HelloWorld.cs:$ mv Class1.cs HelloWorld.cs注意您不需要由于此变化更新项目文件。使用在.NET Core的新项目文件会包含项目目录中的所有源文件。因此添加、 删除和重命名文件并不需要再修改项目文件。这使得命令行文件操作更加顺畅。若要使用 HelloWorld 类您需要更新 Hello 应用程序引用的逻辑类库。你可以通过编辑项目文件或者通过使用dotnet add reference命令$ cd ../hello $ dotnet add reference ../logic/logic.csproj现在修改 Program.cs 文件以使用 HelloWorld 类如下所示.using System; using logic; namespace hello{class Program{static void Main(string[] args){Console.Write(Whats your name: );var name Console.ReadLine();var message HelloWorld.GetMessage(name);Console.WriteLine(message);}}}要生成并运行您的应用程序只需输入 dotnet run$ dotnet run Whats your name: Immo Hello Immo!你还可以从命令行创建测试。CLI 支持 MSTest以及流行的 xUnit 框架。本示例中使用xUnit$ cd .. $ dotnet new xunit -o tests $ cd tests $ dotnet add reference ../logic/logic.csproj改变 UnitTest1.cs 的内容如下所示添加一个测试。using System; using Xunit; using logic; namespace tests {public class UnitTest1{[Fact]public void Test1(){var expectedMessage Hello Immo!;var actualMessage HelloWorld.GetMessage(Immo);Assert.Equal(expectedMessage, actualMessage);}} }现在你可以通过调用 dotnet test 运行测试$ dotnet test Total tests: 1. Passed: 1. Failed: 0. Skipped: 0. Test Run Successful.为了让事情更有趣一点让我们创建一个简单的 ASP.NET Core Web 站点$ cd .. $ dotnet new web -o web $ cd web $ dotnet add reference ../logic/logic.csproj编辑 Startup.cs 文件修改app.Run方法调用 HelloWorld类app.Run(async (context) {var name Environment.UserName;var message logic.HelloWorld.GetMessage(name);await context.Response.WriteAsync(message); });若要启动 Web 开发服务器只需使用 dotnet run 命令$ dotnet run Hosting environment: Production Now listening on: http://localhost:5000 Application started. Press CtrlC to shut down.浏览到所显示的 URL应该是 http://localhost:5000。此时你的项目文件夹结构应该看上去如下所示$ tree /f │ ├───hello │ hello.csproj │ Program.cs │ ├───logic │ HelloWorld.cs │ logic.csproj │ ├───tests │ tests.csproj │ UnitTest1.cs │ └───web Program.cs Startup.cs web.csproj为了便于使用Visual Studio编辑文件的文件让我们同样创建一个解决方案文件并向解决方案中添加的所有项目$ cd .. $ dotnet new sln -n HelloWorld $ ls -fi *.csproj -rec | % { dotnet sln add $_.FullName }正如你所看到的.NET Core CLI 功能强大来自其他背景的开发人员会产生非常熟悉的感觉。无论你使用在Windows PowerShell中使用dotnet还是在Linux或macOS中使用这些平台的使用体验颇为相似。.NET Core的另一个巨大好处是它支持独立部署。你可以使用Docker它具有其自己的.NET Core运行时副本。这使你可以在同一台机器使用不同版本的.NET Core而不互相干扰。因为.NET Core的开源特性你还可以使用*nightly builds*甚至自己修改编译包含自己所做修改的版本。当然这已超出了这篇文章的讨论范围。.NET 标准简介当你构建现代应用程序时您的应用程序往往跨平台或需要使用多个.NET 实现。当今时代客户会期待他们可以在手机中使用 Web APP数据通过基于云计算的后台服务共享。当使用笔记本电脑时他们也会想要通过 Web 站点获取访问权限。对于自己的基础架构你可能想要使用命令行工具甚至可能通过桌面应用程序让您的员工管理系统。下面是不同.NET实现是如何实现这一目标的。|           |  OS        |是否开源  |                   目的                              | | .NET Framework | Windows     |   否   | 构建Windows应用程序构建运行在IIS上的Web应用程序       | | .NET Core    | Windows, Linux, macOS |  是  | 构建跨平台命令行应用程序、ASP.NET Core应用程序、云服务  | | Xamarin     | iOS, Android, macOS  |   是 | 构建iOS、Android移动应用程序、macOS桌面应用程序        | | .NET Standard     | N/A      |   是 | 创建可以被所有.NET实现(如.NET Core和.NET Framework)所引用的类库    |在这种环境中代码共享成为一项重大挑战。你需要理解 Api 是否可用并确保共享的组件只使用在您正在使用的所有.NET 实现中可用的 Api。这就是.NET Standard出现的原因.NET Standard是一种规范每个.NET Standard定义了所有.NET实现都必须提供的、符合该版本的Api集。你可以看作它然而另一个.NET 堆栈只是你不能使用.NET Standard构建应用程序而只能用来构建类库。这是您要从任何地方引用的库的. NET 实现。你可能想知道.NET Standard包含了那些API如果你熟悉.NET 框架你应该熟悉我之前提到的BCL。BCL是独立于UI框架和应用程序模型的基本 API集。它包括基类型、 文件 I/O、 网络、 反射、 序列化、 XML 和其他。所有的.NET堆栈都实现了某些版本的.NET Standard。按照经验当构建一个新的.NET实现时它通常会实现最新版本的.NET Standard。一个很好的比喻是 HTML 和浏览器 想象HTML规范是.NET Standard不同的浏览器则是各种.NET实现例如.NET Framework.NET Core和Xamarin。在这一点上你可能好奇如何来使用.NET Standard。事实上你已经使用过了。还记得我们先前创建的逻辑类库吗让我们仔细看看项目文件$ cd logic $ cat logic.csproj Project SdkMicrosoft.NET.SdkPropertyGroupTargetFrameworknetstandard2.0/TargetFramework/PropertyGroup/Project让我们对比Hello控制台应用程序的项目文件$ cd ..\hello $ cat hello.csproj Project SdkMicrosoft.NET.SdkItemGroupProjectReference Include..\logic\logic.csproj //ItemGroupPropertyGroupOutputTypeExe/OutputTypeTargetFrameworknetcoreapp2.0/TargetFramework/PropertyGroup/Project正如你所看到的,逻辑类库有一个属性为TargetFramework的项目其值为 netstandard2.0控制台应用程序中该项的值为 netcoreapp2.0。TargetFramework 属性显示了你使用了哪个.NET实现。所以控制台应用程序使用了.NET Core 2.0而类库则使用了.NET Standard 2.0。这意味着你可以在.NET Core程序使用.NET Framework构建的程序以及Xamarin程序中引用该逻辑类库。不幸的是目前为止大部分类库还没有针对.NET Standard编译。它们中的绝大多数都是针对.NET Framework编译的。当然并不是所有的类库都可以 或应该 都针对.NET Standard编译。例如包含 Windows Presentation Foundation (WPF) 控件的类库需要针对.NET Framework编译因为 UI 并不是.NET Standard的一部分。然而更多的通用库只针对.NET Framework编译仅仅是因为他们创建时.NET Standard还不存在。在.NET Standard 2.0 中API 集增加到足够大因此大多数如果不是全部的通用库都可以针对.NET Standard编译。因此Nuget上存在的通用类库中70%的类库都只使用了.NET Standard 的 Api。但是仍然只有一小部分被显式标记为与.NET Standard兼容。为了使得开发人员可以无障碍的使用它们添加了兼容模式。如果你安装的NuGet包没有为你的目标框架提供类库也没有为.NET Standard提供NuGet会尝试退回.NET Framework。换句话说你可以同添加.NET Standard类库一样添加.NET Framework的类库引用。我会为你展示此操作。在我的示例中我将使用写于2007年名为PowerCollections的类库此类库已经有一段时间未进行更新并且仍然针对.NET Framework 2.0编译。我将通过NuGet安装这个类库到 Hello 程序中。$ dotnet add package Huitian.PowerCollections此库提供了BCL没有提供一些集合类型比如 bag。让我们修改 Hello 应用程序来使用它如下所示.using System; using Wintellect.PowerCollections; namespace hello {class Program{static void Main(string[] args){var data new Bagint() { 1, 2, 3 };foreach (var element in data)Console.WriteLine(element);}} }如果你运行该程序您将看到以下内容$ dotnet run hello.csproj : warning NU1701: Package Huitian.PowerCollections 1.0.0 was restored using .NETFramework,Versionv4.6.1 instead of the project target framework .NETCoreApp,Versionv2.0. This may cause compatibility problems. 1 3 2所以刚刚发生了什么Hello应用程序的目标框架为.NET Core 2.0。由于.NET Core 2.0 实现.NET Standard 2.0它同时具有对.NET Framework类库引用的兼容性模式。然而并不是所有的.NET Framwork都能工作在所有的.NET实现中。例如他们可能会使用 Windows Forms 或 WPF Api。NuGet则并不知道这些信息因此它给了你一条警告消息似的你可以意识到这种情况对由此造成的问题进行故障排除减少排除故障的时间。请注意每次生成程序你都将看到此警告。这避免了你在包安装过程中没有注意到警告或者干脆忘记了这个警告。当然没有什么比每次生成程序时收到警告更糟糕的了。所以这里的建议是当你验证你的应用程序后就可以可以禁用针对该软件包的警告。因为应用程序运行良好它正确打印了您创建的bag中的内容所以你现在可以禁止显示此警告。要做到这一点编辑 hello.csproj 文件并将 NoWarn 属性添加到包引用PackageReference IncludeHuitian.PowerCollections Version1.0.0 NoWarnNU1701 /如果你现在再次运行该程序应该就不会再看到此警告了。如果你使用兼容模式安装另一个NuGet包你同样会收到针对另一个包的运行警告。这款新工具还允许类库在生成时将NuGet程序包作为生成的一部分。这使得你与世界 使用nuget.org 或只是在您的组织内分享你的类库 通过发布自己的包到Visual Studio Team Services 或 MyGet成为了一项简单的工作。新项目也支持多个目标框架使得你在单个项目中针对多个.NET实现进行生成。这意味着您可以使用条件编译 (#if) 以适配类库到.NET 的特定实现。它还允许你为特定于平台的 Api 构建.NET Standard wrappers。然而这些都超出了本文的范围。总结.NET Standard规范了所有的.NET实现都必须提供的API。它为.NET家族带来了一致性并使你能够生成可供所有.NET实现使用的类库。它取代了PCL来构建共享的组件。.NET Core是.NET Standard的其中一个实现为建立控制台应用程序、 Web 应用程序和使用ASP.NET Core的云服务进行了优化。它的SDK中附带了一个强大的工具除使用Visual Studio进行开发外还支持完整的基于命令行的开发流程。你可以了解通过aka.ms/netstandardfaq 和 aka.ms/netcore 了解更多.Immo Landwerth is a program manager at Microsoft, working on .NET. He focuses on .NET Standard, the BCL and API design.相关文章 .NET Core 2.0 正式发布信息汇总.NET Standard 2.0 特性介绍和使用指南.NET Core 2.0 的dll实时更新、https、依赖包变更问题及解决.NET Core 2.0 特性介绍和使用指南Entity Framework Core 2.0 新特性体验 PHP under .NET Core.NET Core 2.0使用NLog升级项目到.NET Core 2.0在Linux上安装Docker并成功部署解决Visual Studio For Mac Restore失败的问题ASP.NET Core 2.0 特性介绍和使用指南.Net Core下通过Proxy 模式 使用 WCF.NET Core 2.0 开源Office组件 NPOIASP.NET Core - Razor页面之Handlers处理方法ASP.NET Core Razor页面 vs MVCRazor Page–Asp.Net Core 2.0新功能  Razor Page介绍ASP.Net Core 2.0中的Razor Page不是WebFormASP.NET Core Razor 视图组件Error Handling in ASP.NET CoreASP.NET Core中为指定类添加WebApi服务功能.Net Core 全局配置读取管理方法 ConfigurationManagerASP.NET Core Web服务器 Kestrel和Http.sys 特性详解asp.net core 2.0 web api基于JWT自定义策略授权体验 ASP.NET Core 中的多语言支持LocalizationASPNET Core 2.x中的Kestrel服务器asp.net core mvc View Component 应用.net core 使用Redis的发布订阅Configuration Extensions - 简化配置让你配置支持变量ASP.NET Core 运行原理剖析原文地址http://www.jianshu.com/p/ae24babe606d.NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
http://www.zqtcl.cn/news/249270/

相关文章:

  • 网站制作属于什么专业做网站需要什么配置服务器吗
  • 网站开发学习培训广州网站优化关键词公司
  • 毕节金海湖新区城乡建设局网站企业网站的步骤
  • 网站后台设计教程网站建设判断题
  • 珠海网站建设 金蝶天元建设集团有限公司李华
  • 海安市建设局网站成都官网seo技术
  • 网站建设策划书结束语wordpress付费版
  • 进口网站建设做网站用什么格式的图片
  • 青海省住房和城乡建设部网站进入网站空间
  • 做公司简介的开源网站企业seo多少费用
  • 学校网站建设工作方案昆明做网站词排名优化
  • 镇江企业做网站针对人群不同,网站做细分
  • 个人单页网站建设台州网站建设惠店
  • 专做婚礼logo的网站做搜狗pc网站快速排
  • 北京网站建设公司分享网站改版注意事项做网站需要多大空间
  • 主机网站建设制作天津西青区天气预报
  • 网站没有内容可以备案吗横向网站源码
  • 做的网站浏览器提示不安全站优化
  • dede移动端网站源码电子商务网站建设开题报告
  • 做网站价格多少优质做网站哪家好
  • 网站建设及推广服务的合同范本留言网站建设的报告
  • 工程师招聘网站做网站需要公司资质吗
  • 苏州模板网站建站开网店如何运营和推广
  • 换空间网站备案北京网页设计平台
  • 德德模板网站建设步骤可信的品牌网站建设
  • 网站权重0免费好用的ip代理
  • 赣州建设网站公司敬请期待英文怎么写
  • 可以做多边形背景的网站深圳网站建设 套餐
  • 建设工程的招标网站有哪些长江证券官方网站下载
  • 鹤壁网站建设智能网站建设步骤