分类目录归档:.net

.NET Core 2.0

点击查看原图

  下载 Visual Studio 2017 version 15.3

  下载 .NET Core 2.0

  下载 Visual Studio for Mac

点击查看原图

  微软今天发布了.NET Core 2.0 版本,属于一次非常大的版本迭代。

  .NET Core 2.0 主要包括一些让 .NET Core 更容易使用的改进,并增强其平台能力。亮点如下:

  Runtime

  SDK

继续阅读

发表在 .net | .NET Core 2.0已关闭评论

.NET技术

问题

大家是否想过:

  • .NET究竟包含哪些技术呢?
  • 我所掌握的技术这个子集,在.NET技术大系这个超集里面占地比例是什么呢?
  • 我究竟还没有掌握多少.NET技术呢?
  • 面试的时候会考哪些技术呢?

相信大家也看过Java的技术栈,一个金字塔形状的(我一下子没找回,如果你知道,烦请告诉我),包含了繁多的技术:
点击查看原图

查看大图

这些年来,看过n多.Net架构图/技术栈,搜索了很久,没有找到一个符合我要求的“较为全面”地表述.Net技术大系的图表。相信微软内部有更全面的,但可惜我没有找到。

互联网上来去都是那几个简单的按版本新增分类等10来个点的,譬如这个:

 点击查看原图

或者这个按照.NET版本新增技术的:
点击查看原图

圣殿骑士 在 新加坡架构师面试总结 里面发表过一张.NET架构师面试需要的技术总结图:

点击查看原图
 

查看大图

不过这个总结图面向的是.NET架构师需要掌握的技术,和我需要的不一样。

 

.NET技术栈

最近找工作,面试了多家公司,不同公司有不同的技术要求,我把这些技术,结合我已经掌握的技术,总结了一下.Net相关技术,大约10个大类50个技术点,花了一点时间搞个.NET技术栈概览。

 

从最底层的到最顶层:

  • 操作系统
  • CLI
  • CLR
  • CTS/CLS/CIL
  • .NET Fx
  • CLI 语言
  • DLR
  • DLR 语言
  • Desktop 桌面
  • Web 网络
  • SOA
  • SDKs
  • OWIN
  • IDE 编辑器
  • Platforms 平台
  • Prod...

继续阅读

发表在 .net | .NET技术已关闭评论

windows 7/windows 2008/ tls1.2 / .net

TLS 1.2 and Microsoft.Net

Now lets focus on using TLS 1.2 in .Net world. We need to make sure that
the web sites are served via TLS 1.2 protocol and client apps which are
consuming the same need to support TLS 1.2. .Net is running on top of
operating system and mostly its windows. If host windows supports TLS
1.2 .Net can also support TLS 1.2 as it relies on schannel.dll1
The first task here is to make sure we are using the right tools and technologies.

TLS 1.2 and .Net Framework 4.5

.Net is also versioned. Versions below 4.5*doesn't know how to
communicate via TLS 1.2.In .Net...

继续阅读

发表在 .net | windows 7/windows 2008/ tls1.2 / .net已关闭评论

nuget

下载地址:
命令行: http://nuget.codeplex.com/downloads/get/669083
命令行: http://nuget.org/downloads
图形窗: https://github.com/NuGetPackageExplorer 继续阅读

发表在 .net | nuget已关闭评论

ASP.NET URL

Browser Request 的網址相關的屬性與用法:

網址:http://localhost:1897/News/Press/Content.aspx/123?id=1#toc
Request.ApplicationPath /
Request.PhysicalPath D:\Projects\Solution\web\News\Press\Content.aspx
System.IO.Path.GetDirectoryName(Request.PhysicalPath) D:\Projects\Solution\web\News\Press
Request.PhysicalApplicationPath D:\Projects\Solution\web\
System.IO.Path.GetFileName(Request.PhysicalPath) Content.aspx
Request.CurrentExecutionFilePath /News/Press/Content.aspx
Request.FilePath /News/Press/Content.aspx
Request.Path /News/Press/Content.aspx/123
Request.RawUrl /News/Press/Content.aspx/123?id=1
Request.Url.Absol...

继续阅读

发表在 .net | ASP.NET URL已关闭评论

.NET Platform Standard

    .NET Platform Standard 直译过来就是 .NET 平台规范或标准,它的目的就是使 .NET 各个平台之间更加统一和规范 .NET Standard Library 现在有一个对应程序包NETStandard.Library,它的作用是兼容各个 .NET Platform。

 

.NET Platform Standard 列表:

Target Platform Name Alias
.NET Platform Standard netstandard 1.0 1.1 1.2 1.3 1.4 1.5 1.6
.NET Core netcoreapp 1.0
.NET Framework net 4.6.3
4.6.2
4.6.1
4.6
4.5.2
4.5.1
4.5
Universal Windows Platform uap 10.0
Windows win 8.1
8.0
Windows Phone wpa 8.1
Windows Phone Silverlight wp 8.1
8.0
Mono/Xamarin Platforms *
Mono *

 

分别参考:

.NET Platform Standard:https://github.com/dotnet/corefx/blob/maste...

继续阅读

发表在 .net | .NET Platform Standard已关闭评论

C# UDP 大数据分包传输

如果需要使用UDP传输较大数据,例如传输10M的图片,这突破了UDP的设计原则。UDP的设计是基于"datagram",也就是它假设你发送的每个数据包都能包含在单一的包内。并且设定UDP数据包的最大长度受基础网络协议的限制。

点击查看原图

UDP数据包的理论最大长度限制是 65535 bytes,这包含 8 bytes 数据包头和 65527 bytes 数据。但如果基于IPv4网络传输,则还需减去 20 bytes 的IP数据包头。
则单一的UDP数据包可传输的数据最大长度为:

MaxUdpDataLength = 65535 - 8 - 20 = 65507 bytes

这就需要实现UDP包的分包传输和接收组包功能。

 

分包功能

/// <summary>
/// UDP数据包分割器
/// </summary>
public static class UdpPacketSplitter
{
  /// <summary>
  /// 分割UDP数据包
  /// </summary>
  /// <param name="sequence">UDP数据包所持有的序号</param>
  /// <param name="datagram">被分割的UDP数据包</para...

继续阅读

发表在 .net | C# UDP 大数据分包传输已关闭评论

.NET Core dotnet 命令大全

命令目录:

dotnet-new

dotnet-restore

dotnet-run

dotnet-build

dotnet-test

dotnet-pack

dotnet-publish

 

现在来详细讲解。

创建(dotnet new)

首先我们创建一个项目 ,这里我们创建控制台程序。

dotnet new

点击查看原图

 

dotnet 更多命令请参考帮助。

 

还原(dotnet restore 及 dotnet pack)

我们在创建一个 class lib  也就是类库。

dotnet new -t lib

点击查看原图

创建好以后,编写一些自己的代码然后进行打包。

点击查看原图

 

我编写了两个方法,现在来打包。

dotnet restore

dotnet pack

点击查看原图

.NET Core 怎样添加离线引用包呢?现在答案就揭晓了。

打包好以后,我们将applib 添加到 app的 project.json 。

点击查看原图

添加好以后切到app 目录,然后进行还原。

还原使用的命令是:dotnet restore -f E:\dotnet\applib\bin\Debug\

dotnet restore -f 包的路径

点击查看原图

这样我们就能直接在项目里调用applib 里面的方法。

我们在代码里编写对应的调用,然后执行程序。可以看到正确输出class lib 的结果。

点击查看原图

 

运行(dotnet build 及 dotne...

继续阅读

发表在 .net | .NET Core dotnet 命令大全已关闭评论

C#堆栈、队列、递归实现的快速排序

static void Qsort(int[] data, int low, int high)//递归实现
        {
            if (low >= high) return;
            int i, j, pivot;
            i = low;
            j = high;
            pivot = data[low];
            while (i < j)
            {
                while (data[j] > pivo...

继续阅读

发表在 .net | 标签为 , | C#堆栈、队列、递归实现的快速排序已关闭评论

C#集合--Dictionary

字典(dictionary)是一个集合,其中每个元素都是一个键/值对。字典(Dictionaries)是常用于查找和排序的列表。

.NET Framework通过IDictionary接口和IDictionary<TKey,TValue>接口,以及一些常用的子典了定义了子典协议。每个类在以下方面各有不同:

  • 元素是否已经排序
  • 元素是否能通过索引或键来获取
  • 字典类是generic的还是非generic的
  • 当字段较大时,根据键值获取元素速度的快慢

继续阅读

发表在 .net | C#集合--Dictionary已关闭评论

.NET 资源回收

CSDN上一位高手的总结

1、Finalize方法(C#中是析构函数,以下称析构函数)是用于释放非托管资源的,而托管资源会由GC自动回收。所以,我们也可以这样来区分

托管和非托管资源。所有会由GC自动回收的资源,就是托管的资源,而不能由GC自动回收的资源,就是非托管资源。在我们的类中直接使用非托管资源的情况很
少,所以基本上不用我们写析构函数。

2、大部分的非托管资源会给系统带来很多负面影响,例如数据库连接不被释放就可能导致连接池中的可用数据库连接用尽。文件不关闭会导致其它进程无法读写这个文件等等。

实现模型:
1、由于大多数的非托管资源都要求可以手动释放,所以,我们应该专门为释放非托管资源公开一个方法。实现IDispose接口的Dispose方法是最好的模型,因为C#支持using语句快,可以在离开语句块时自动调用Dispose方法。

2、虽然可以手动释放非托管资源,我们仍然要在析构函数中释放非托管资源,这样才是安全的应用程序。否则如果因为程序员的疏忽忘记了手动释放非托管资源, 那么就会带来灾难性的后果。所以说在析构函数中释放非托管资源,是一种补救的措施,至少对于大多数类来说是如此。

3、由于析构函数的调用将导致GC对对象回收的效率降低,所以如果已经完成了析构函数该干的事情(例如释放非托管资源),就应当使用SuppressFinalize方法告诉GC不需要再执行某个对象的析构函数。

4、析构函数中只能释放非托管资源而不能对任何托管的对象/资源进行操作。因为你无法预测析构函数的运行时机,所以,当析构函数被执行的时候,也许你进行操作的托管资源已经被释放了。这样将导致严重的后果。

5、(这是一个规则)如果一个类拥有一个实现了IDispose接口类型的成员,并创建(注意是创建,而不是接收,必须是由类自己创建)它的实例对象,则
这个类也应该实现IDispose接口,并在Dispose方法中调用所有实现了IDispose接口的成员的Dispose方法。
只有这样的才能保证所有实现了IDispose接口的类的对象的Dispose方法能够被调用到,确保可以手动释放任何需要释放的资源。

继续阅读

发表在 .net | 标签为 | .NET 资源回收已关闭评论

HttpUtility.UrlEncode

HttpUtility.UrlEncode
继续阅读

发表在 .net | HttpUtility.UrlEncode已关闭评论

ParameterInfo properties, attributes and out ref parameters of the methods

引用: http://stackoverflow.com/questions/15636969/parameterinfo-properties-attributes-and-out-ref-parameters-of-the-methods

Well, I'm confused by the properties of the ParameterInfo class.
Unfortunately documentation is not very clear: examples show how to build methods but don't show how these meth...

继续阅读

发表在 .net | ParameterInfo properties, attributes and out ref parameters of the methods已关闭评论

C#生成PDF总结

见:http://www.cnblogs.com/Joetao/articles/2933941.html 继续阅读

发表在 .net | C#生成PDF总结已关闭评论

web.config machineKey

using System.Web.Configuration;
//打开web.config文件,写入新生成的machineKey
Configuration config = WebConfigurationManager.OpenWebConfiguration("/");
MachineKeySection configSection = (MachineKeySection)config.GetSection("system.web/machineKey");
configSection.ValidationKey = CreateKey(64);
configSec...

继续阅读

发表在 .net | 标签为 | web.config machineKey已关闭评论