【4858.com】劳务提供,程序员10种至关重要工具

By admin in 4858.com on 2019年4月15日

宣示:本代码只是本人使用的互联网请求格局的包装,大家只要有此外的能够一同谈论斟酌。

IKVM.NET(IKVM)是个面向.NET与Mono平台的JVM,用户能够由此它直接运行Java应用。近日,来自微软的Erik
Meijer与IKVM成立者杰罗en
Frijters研讨了该类型的多少个方面。此番商讨的涉及面卓殊广,从IKVM的木本聊起了该品种的前程目的。其中央如下所示:

应用 .NET 建立分布式应用程序
Steve Kirk 和 Priya Dhawan
Microsoft Developer Network

从 MSDN
中看到那篇小说,以为不错转了过来,对于小编如此的.NET菜鸟来说每一种工具都以升高作用的好开始。将那10款软件的牵线重新格式化一下,方便现在翻看。以“.NET
程序员10种少不了工具”伊始的拾篇作品都以从那篇小说中分离出来,每篇作品就不分别注脚版权和出处了。

   
 本代码能够在.NET 与.NET
CORE的阳台下毫不做其它变动(除非手动加1些必备的引用,resharper会有提醒.)就可以使用。

Frijters从贰零零一年该品种运维上马就作为项目标主开拓者。此番商讨首先从Frijters介绍IKVM是怎么变成Mono项目标1有个别(产生一种双赢的框框,多个项目能够相互进献补丁)开端。从架构上的话,IKVM在.NET上完全落到实处出了Java的内部存款和储蓄器模型。Frijters尝试尽量
不使用包装器,在少数景况下供给通过包装器能力科学地处理Java的字符串接口。

摘要:本文介绍了采纳 ASP.NET 将现存 Microsoft Visual Basic 陆.0
代码作为 Web 服务提供时所实行的多少转换。适用于 Microsoft .NET SDK 和
Microsoft Visual Studio.NET 的 Beta 1 版。

本文自发表以来已经扩大了新消息。请参阅下边包车型客车编辑撰写更新。

using System;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;

namespace FrameWork.Common.Web
{
    public class HttpHelper
    {
        /// <summary>
        /// 发起一个HTTP请求(以POST同步方式)
        /// </summary>
        /// <param name="url">请求地址</param>
        /// <param name="param">参数:json格式字符串</param>
        public static string HttpPost(string url, string param = "")
        {
            var request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.Accept = "*/*";
            request.Timeout = 10000;
            request.AllowAutoRedirect = false;
            StreamWriter requestStream = null;
            WebResponse response = null;
            string responseStr = null;
            try
            {
                requestStream = new StreamWriter(request.GetRequestStream());
                requestStream.Write(param);
                requestStream.Close();
                response = request.GetResponse();
                if (response != null)
                {
                    var reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                    responseStr = reader.ReadToEnd();
                    reader.Close();
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                request = null;
                requestStream = null;
                response = null;
            }
            return responseStr;
        }

        /// <summary>
        /// get请求,同步方式
        /// </summary>
        public static string HttpGet(string url, string postDataStr)
        {
            var request = (HttpWebRequest)WebRequest.Create(url + (postDataStr == "" ? "" : "?") + postDataStr);
            request.Method = "GET";
            request.ContentType = "text/html;charset=UTF-8";

            var response = (HttpWebResponse)request.GetResponse();
            var myResponseStream = response.GetResponseStream();
            var myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
            var retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();

            return retString;
        }

        /// <summary>
        /// 发送短信,异步请求
     /// </summary>
        /// <param name="url">请求地址</param>
        /// <param name="jsonString">json字符串,手机号和短信内容必填</param>
        public static void SendMessage(string url, string jsonString)
        {
            var client = new HttpClient();
            HttpContent httpContext = new StringContent(jsonString, Encoding.UTF8);
            httpContext.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            //await异步等待回应
            client.PostAsync(url, httpContext).ContinueWith(t =>
            {
                // Get HTTP response from completed task. 
                var response = t.Result;
                // Check that response was successful or throw exception 
                response.EnsureSuccessStatusCode();
                // Read response asynchronously as JsonValue and write out top facts for each country 
                response.Content.ReadAsStringAsync().ContinueWith(
                    readTask =>
                    {
                        Console.WriteLine(readTask.Result + " time:==>" + DateTime.Now);

                    });
            });
        }
    }
}

要是代码运营在IKVM上,那么.NET开拓者能够在Java代码中采取自定义属性。如若代码运转在IKVM上,那么Java与.NET那五个阳台都可以行使品质。那样,开拓者就足以在Java代码中使用.NET自定义属性,也得以在C#类与成员中应用Java注明。

目录

  • 简介
  • 幸存代码提供的数据类型
    • ADO 2x Command 对象
    • ADO 2x Recordset 对象
    • Stream 对象
    • XMLDOM 对象
    • XML 字符串
  • 总结

除非你使用能够收获的特等工具,不然你不可能指望生成超级的应用程序。除了像
Visual Studio?.NET 那样的显赫工具以外,还足以从 .NET
社区获得许多微型的、不太为人所知的工具。在本文中,小编将向您介绍部分当下能够获得的、面向
.NET
开荒的特等无偿工具。小编将指导你做到三个关于怎么着采纳当中每一个工具的高速教程

一些工具在繁多时候能够使你节约1分钟,而另1些工具则恐怕通透到底改动您编写代码的秘技。因为本人要在本篇小说中介绍如此之多的例外工具,所以笔者无能为力详细研商在那之中各种工具,但你应该理解到有关每一个工具的丰盛音讯,以便决断什么工具对你的项目有用。

 

在处之泰然,IKVM的周转时与编写翻译器首要都以使用C#编写制定的。Frijters能够使用公开的Java代码(来自于GNU
Classpath与OpenJDK等)并替换掉托管代码中的原生C代码。假若用户在利用中绝非利用原生代码,那么使用了IKVM的Java应用就是截然
可移植的,因为IKVM并未有选择其余原生代码。

简介

.NET 框架简化了将 .NET 代码作为 Web 服务提供的职分。.NET
框架开拓人士指南开中学的 ASP.NET Web 服务和 ASP.NET
Web
服务客户机(英文)对此打开了印证。之所以能够实现这种简化,个中一个原因是
.NET 框架提供了一多元规则,用于将复杂的 .NET 数据类型调换为
XML(类别化)以及反向转换(反类别化)。

【4858.com】劳务提供,程序员10种至关重要工具。编纂为 .NET 此前的类的幸存代码通过一定于言语的数据类型或 COM
对象来传递数据,因而不可能依靠于同一的正经规则将这个数据类型体系化为
XML。本文介绍了将长存 Microsoft? Visual Basic 陆.0 代码作为 ASP.NET Web
服务提供时所需的数额转变。

评估现存代码是还是不是合乎于作为 Web
服务提供时,本文探究的多寡转变难点并不是唯1供给思量的难题。应驰念的任何因素包含对象和情形模型、再次回到的数量大小、怎样表示曾经打响、怎么着回到错误音信、安全模型(包蕴访问调节、身份验证和加密)、施行模型(同步或异步)、怎么样分发代码,以及业务模型(COM+
事务或注明型事务),等等。那些难点将要就要公布的系列布局宗旨(英文)小说中进行研讨。

本文商量:

脚下,IKVM已通通援助Java 7,包括对新的指令invoke
dynamic的支撑。不过,Frijters承认还有不少干活要做以进级新命令的性质。

现成代码提供的数据类型

商讨现存代码传递的持有数据类型的转移将是1个相当的大的工程,由此本文只介绍一些最常用的数据类型,以及
XML(作为字符串),因为1旦运用 XML 对现成代码实行扩充,那么 XML
就足以涵盖大致具备别的的数据类型。本文商讨以下数据类型的转变方法:

  • ADO 2x Command 对象
  • ADO2x Recordset 对象
  • Stream 对象
  • XMLDOM 对象
  • XML

用以编写单元测试的
NUnit
用来创立代码文书档案资料的
NDoc
用于转移消除方案的
NAnt
用以转移代码的
CodeSmith
用来监视代码的
FxCop
用于编写翻译少量代码的 Snippet
Compiler
用于转移的工具I ASP.NET Version
Switcher
用以转移的工具II Visual Studio
Converter 
用来生成正则表明式的
Regulator
用于分析程序集的 .NET
Reflector

ADO 2x Command 对象

平昔访问数据库的存活代码日常会提供 Microsoft ActiveX? 数据对象 (ADO) 的
Command 对象。即使不能够在运作于差别进度中的应用程序层之间传递
Command 对象,但能够在壹如既往进度内传递该对象。对于单行数据实体,通过
Command 对象的出口参数再次来到数据比通过 ADO
记录集重回数据效用越来越高。由此,ADO Command
对象对于再次来到单行实体数据充裕一蹴而就。

正文使用了下列技艺:

读数据

以下示例中的现成代码再次回到三个 ADO Command
对象,它包涵作为出口参数的多少。Command 对象的 Parameters
集合转变为 XML 并赶回给 Web 服务的客户:

 现有代码返回 ADO Command 对象

Cmd = CType(EC.Example1(), ADODB.Command)

 使用 XmlTextWriter 和 StringWriter 转换 Command 对象的 Parameters 集合 

 初始化 stringwriter 和 xmlwriter 以返回 xml 字符串

strWriter = New StringWriter()

xmlWriter = New XmlTextWriter(strWriter)

 在 Parameters 集合内循环,写入名称和值

For i = 0 To Cmd.Parameters.Count - 1             

   xmlwriter.WriteElementString(Cmd.Parameters(i).Name.Substring(1),_

   Cmd.Parameters(i).Value.ToString)

Next

 将 xml 作为字符串返回

Example1 = strWriter.GetStringBuilder.ToString()

.NET、C# 或 Visual Basic .NET、Visual Studio .NET

写数据

将数据作为 Command
对象的参数字传送递是一种十一分有效的数据传递方式。它还是能实行扩张,并提供了有些类别检查职能。不幸的是,由于
Beta 一 中留存缺陷,Command 对象产生的数据不可能传递到现成代码。Beta 2中消除了这几个标题。Beta 1 的缓解办法是对现有的 VB 陆 代码举办扩张,接受
XML。

小结

ADO2x Recordset 对象

ADO 2x
断开连接的记录集平时用于在多层应用程序的各层之间传递数据。数据足以是单行、多行或分层次的行。

正文选择生搬硬套的点子介绍了上述工具,但自笔者早就准备起码向您提供充分的新闻以激发您的好奇心。我信任本文已经让您在某种程度上掌握了多少个无需付费工具,您能够即时开端运用这几个工具来编排越来越好的档次。同时,笔者还要敦促您确定保障自个儿有所具备其余能够获取的适当工具,无论是最新版本的
Visual
Studio、功用庞大的Computer依旧免费的实用工具。具有适合的工具将使全数变得大分化样。

读数据

本示例中,现成代码重回一个 ADO Recordset
对象,它涵盖的层系行数据将被转移为 XML,然后由 Web 服务再次回到:

 现有代码返回记录集

RS = CType(EC.Example3(), ADODB.Recordset)

 实例化一个接收记录集数据的流

Stream = New ADODB.Stream()

 将记录集的 XML 表示写入流

RS.Save(Stream, ADODB.PersistFormatEnum.adPersistXML)

 将 XML 作为字符串从流返回

Example3 = Stream.ReadText

James Avery 是一位使用 .NET 和任何 Microsoft
手艺的谋士。他现已创作了累累图书和小说,他的风行小说是《ASP.NET Setup
and Configuration Pocket Reference》(Microsoft Press,
200三)。您能够由此javery@infozerk.com 向她发送电子邮件,并且在  阅读他的网络日记。

写数据

以下示例中,使用表示层次行数据的 XML 填充 ADO Recordset
对象,该对象将被传送到存活代码:

 实例化一个记录集对象 

RS = New ADODB.Recordset()

 实例化一个流对象

Stream = New ADODB.Stream()

 打开流对象

Stream.Open()

 将 XML 写入流

Stream.WriteText(RsXML)

 将指针定位到流的开头 

Stream.Position = 0

 使用流中的 XML 数据打开记录集

RS.Open(Stream)    

 将记录集传递到现有代码

EC.Example4(RS)

本文章摘要自 MSDN
Magazine 的 2004 年 7
月刊。

Stream 对象

流提供了一种在应用程序的地头层之间传递数据的有效性方法。它是从 Microsoft
SQL Server?两千 中读取 XML 的首要措施。

该杂志可在随地的报摊购买,也得以订阅

读数据

以下示例中,现存代码重返表示层次行数据的 XML
流,它被当做字符串读取,并由 Web 服务重临:

Dim Stream As ADODB.Stream

Stream = CType(EC.Example5(), adodb.stream)

Example5 = Stream.ReadText

转到原英文页面

XMLDOM 对象

XMLDOM4858.com
对象是1种在多层应用程序的本地层之间传递数据的好办法。它提供了接口可扩张性、类型检查和架构验证功效。

转到原中文页面

读数据

以下示例中,现成代码重返四个 XML 文档对象模型 (XMLDOM),它被撤换为 XML
字符串并由 Web 服务重回:

Dim Doc As MSXML2.DOMDocument

 现有代码返回 XMLDOM 对象

Doc = CType(EC.Example6(), msxml2.DOMDocument)

 从 DOM 对象返回 XML

Example6 = Doc.xml

写数据

以下示例中,使用表示层次行数据的 XML 填充 XMLDOM
对象,并将该对象传递到存活代码:

Dim Doc As MSXML2.DOMDocument

 实例化一个 XMLDOMDocument 对象 

Doc = New MSXML2.DOMDocument()

 将 XML 载入 DOM

Doc.loadXML(orderXML)

 将 DOM 传递到现有代码

EC.Example7(Doc)

XML 字符串

XML 是一种在层与层之间传递数据的回顾方法。它还将数据的 XML 调换进程推到
COM 互操作边界的“现存代码”端,依照接口的例外,那可能会比在 COM
互操作边界将数据转变为 XML 更使得。

读数据

以下示例中,现存代码再次来到一个分包 XML 数据的字符串,然后,该字符串由 Web
服务传递给客户:

EC = New ExCode.ExClass()

 将 XML 字符串直接从现有代码传递给客户

Example8 = EC.Example8()

写数据

以下示例中,层次行数据的 XML 表示作为字符串传递到存活代码:

EC = New ExCode.ExClass()

 将 XML 字符串直接从客户传递到现有代码

EC.Example9(orderXML)

总结

本文及附带的演示介绍了有关数据转换的音信。通过数量转变,可以运用 ASP.NET
将现存代码作为 Web 服务提供。本文研究了壹部分常用的接口对象,当中包蕴 XML
字符串,倘诺应用相应的接口对现存代码举办扩充,它能够涵盖大抢先11分之5额。

这个搞定方案的性质各异,并且受所传递的数量大小影响。在本种类前边的作品中,大家将对那么些实现方式实行比较。

评估现成代码是不是符合营为 Web
服务时,接口只但是是应有牵记的广大意素之一。应思虑的任何因素总结安全性(包涵授权、身份验证和加密)、事务模型、状态模型、重回错误和结果的艺术,以及代码是一道照旧异步实践,等等。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有