.NET에서 최초의 웹 서비스 개발 계약
15666 단어 xmlsoapvisualstudiowsdl
정보 시스템 통합에 대한 작업은 종종 이전에 정의된 계약에 따라 웹 서비스를 구현하는 작업과 함께 제공됩니다. 이는 들어오는 데이터에 대해 예상되는 수신기를 구현해야 하는 디자인 우선 접근 방식 또는 파트너 상호 운용성 프로젝트에서 발생할 수 있습니다.
기존 WSDL이 있는 XML 웹 서비스를 개발하려면 Microsoft Visual Studio와 함께 제공되는 도구를 사용할 수 있습니다.
ASMX 프로젝트를 사용합니다. 버전 5 이상에서는 더 이상 .NET의 일부가 아니어서 지원이 걱정된다면 this guy's opinion을 읽어 보시기 바랍니다.
To be accurate, both WCF and ASMX will be supported after .NET 5 is released. They will be included in .NET 4.8 and that will be supported as a component of the OS that they are installed on.
물론 Soap Core 을 사용할 수 있지만 기존 계약으로 작업하는 것은 매우 수동적인 솔루션이며 부주의로 스키마를 변경할 위험이 있습니다.
본론으로 들어가 기존의 단순하고 무료인 공용 웹 서비스에 대한 빠르고 쉬운 개념 증명 단계를 살펴보겠습니다.
www.learnwebservices.com/services/hello?WSDL
로컬 컴퓨터의 폴더에 WSDL 파일을 다운로드합니다.
Visual Studio가 설치되어 있어야 합니다. "VS 2019용 개발자 명령 프롬프트"열기:
명령 프롬프트에서 WSDL 파일을 저장한 폴더로 이동합니다.
WSDL 명령을 실행합니다.
wsdl /namespace:My.Contract.First /serverInterface <file.wsdl>
여기서
//
// This source code was auto-generated by wsdl, Version=4.8.3928.0.
//
namespace My.Contract.First {
using System;
using System.Web.Services;
using System.Diagnostics;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
using System.ComponentModel;
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.8.3928.0")]
[System.Web.Services.WebServiceBindingAttribute(Name="HelloEndpointServiceSoapBinding", Namespace="http://learnwebservices.com/services/hello")]
public interface IHelloEndpointServiceSoapBinding {
/// <remarks/>
[System.Web.Services.WebMethodAttribute()]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace="http://learnwebservices.com/services/hello", ResponseNamespace="http://learnwebservices.com/services/hello", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[return: System.Xml.Serialization.XmlElementAttribute("HelloResponse")]
helloResponse SayHello(helloRequest HelloRequest);
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.8.3928.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://learnwebservices.com/services/hello")]
public partial class helloRequest {
private string nameField;
/// <remarks/>
public string Name {
get {
return this.nameField;
}
set {
this.nameField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.8.3928.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://learnwebservices.com/services/hello")]
public partial class helloResponse {
private string messageField;
/// <remarks/>
public string Message {
get {
return this.messageField;
}
set {
this.messageField = value;
}
}
}
}
Visual Studio를 열고 빈 ASP.NET 웹 애플리케이션(.NET Framework)을 새로 만듭니다.
프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "추가 > 기존 항목"을 클릭합니다. .CS 인터페이스 파일을 찾아 "추가"를 클릭합니다.
이제 새 ASMX 항목을 추가합니다.
ASMX에서 WSDL 도구로 생성된 인터페이스를 구현합니다.
using System.Web.Services;
namespace My.Contract.First
{
/// <summary>
/// Summary description for HelloService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class HelloService : System.Web.Services.WebService, IHelloEndpointServiceSoapBinding
{
[WebMethod]
public helloResponse SayHello(helloRequest HelloRequest)
{
helloResponse resp = new helloResponse();
resp.Message = "Hi there " + HelloRequest.Name;
return resp;
}
}
}
빌드 및 실행. 기존 WSDL 계약을 사용하여 스텁 웹 서비스를 개발하기 위한 것입니다.
SOAP/XML 웹 서비스는 단순성이 부족하고 보장된 교차 플랫폼 통합에 대한 약속을 이행하지 못하기 때문에 점차 REST API에 기반을 잃고 있습니다. 그러나 대부분의 엔터프라이즈 애플리케이션은 형식 XML 스키마 정의, 트랜잭션성 및 보안과 같은 향상된 프로토콜 기능을 위해 여전히 이를 사용합니다.
따라서 새로운 것을 구축하고 있다면 REST를 사용해 보십시오. 이전에 개발된 플랫폼을 유지하는 경우 기존 도구를 사용하는 것이 좋습니다.
원글here .
Background photo created by natanaelginting - www.freepik.com
Reference
이 문제에 관하여(.NET에서 최초의 웹 서비스 개발 계약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ozzie_eu/contract-first-web-service-development-in-net-43je텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)