.NET에서 간단한 웹 서비스를 만들려고하는데 해당 지식이 제한되어 있습니다.C# .NET의 웹 서비스 및 객체 직렬화 - 기본 질문
이using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
namespace WebService1
{
/// <summary>
/// Summary description for Service1
/// </summary>
///
class Login
{
public string User;
public string Password;
public string Database;
}
public class Item
{
public string Name;
public float Price;
public float Quanity;
}
public class WebOrder
{
public int Number;
public int ClientID;
public Item[] Items;
}
public class ExternalAPIItem
{
public string APIItemName;
public float APIItemPrice;
public float APIItemQuanity;
}
public class ExternalAPIOrder
{
public int APIOrderNumber;
public int APIOrderClientID;
public ExternalAPIItem[] APIOrderItems;
}
[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 Service1 : System.Web.Services.WebService
{
[WebMethod]
public string MakeOrder(WebOrder Order)
{
Login DBLogin;
ExternalAPIOrder APIOrder;
DBLogin = new Login();
DBLogin.User = "SomeUser";
DBLogin.Password = "SomePassword";
DBLogin.Database = "SomeDatabase";
//try to log via external API
//ExternalAPI.LogIn(DBLogin) <- is this possible to log call to this method?
APIOrder = new ExternalAPIOrder();
//how to deserialize Order object to APIOrder object which is instance of different class?
//ExternalAPI.MakeOrder(APIOrder) <- is this possible to log call to this method?
return "Order complete";
}
}
}
이 웹 서비스의 목적은 인터넷에서 몇 가지 명령을 받고 서버에서 외부 API를 통해 순서를 실현하는 것입니다 : 여기
이 웹 서비스의 코드입니다. 그것은이일부 웹 사이트 (들)처럼 보인다 -> WebService1을 -> ExternalAPI -> 내가 몇 가지 질문이 데이터베이스
을 Underying : 첫째로 나는로드됩니다 일부 구성 데이터를 보관할 필요가
- 을 웹 서비스 인스턴스의 시작 부분. 내 첫 번째 아이디어는 XML 파일에 유지하고 해당 파일을
Login
개체로 deserialize했다. 그러나이 Web.config 파일은 이미 서비스에 번들로 제공됩니다. 그런 것들을 지키는 것이 좋은 곳입니까? 그렇게한다면 (a) 그 파일에 내 데이터를 저장하는 방법 (b) 파일에서 저장된 데이터를Login
개체로 검색하는 방법을 보여줄 수 있습니다. - 필자는 직렬화에 대한 기사를 거의 읽지 않았으며 일부 기본 객체를 XML로 직렬화하는 방법을 알고 있습니다. 그러나 한 개체에서 다른 개체로 데이터를 전송하려면 어떻게해야합니까? 위의 예에서 데이터를
Order
에서APIOrder
으로 전송해야한다는 것을 알았습니다. 필드 값을 하나씩 할당 할 수 있다는 것을 알고 있지만 더 좋은 방법이 있습니까? 또한 각Order
객체는 하나 이상의 Item 객체를 가질 수 있으며이 객체는APIOrder
객체의 적절한 객체로 직렬화 해제되어야합니다. 아마도 나는 (1)Order
을 XML로 직렬화하고, (2) XML을 변환하고, (3) XML을APIOrder
으로 역 직렬화해야한다. 누군가이 작업을 실현하는 코드를 보여줄 수 있습니까? - 실행 된 메소드 이름을 문자열로 변환 할 수있는 방식으로 특정 메소드의 실행을 일부 파일에 로그인 할 수 있습니까? 예 :
ExternalAPI
은LogIn
메서드입니다. ExternalAPI 클래스 (메서드 매개 변수 사용)에서 메서드를 매개 변수로 취할 수있는 메서드를 만들고 먼저 메서드 이름을 string으로 변환 한 다음 해당 메서드를 실행할 수 있습니까?
이것이 의미가 있는지는 모르지만 나는 ExternalAPI
클래스가 정의 된 어셈블리를 사용해야합니다. 따라서 실제 웹 서비스에서는 ExternalAPIItem
및 ExternalAPIOrder
이 정의되지 않습니다. 어셈블리 네임 스페이스에 이미 정의되어 있습니다. 두 번째 질문에 대답하기 위해 시간
2009 년 ASP.NET 웹 서비스를 사용하지 마십시오. WCF를 사용하십시오. –
나는 마크와 동의한다. WCF는 이전의 MS 테크놀로지 - 오브 - 위크 (week-of-the-week) 노력과는 달리, 장수 할 것입니다. 일이 잘못 될 때 잘 포장되고, 완전하며, 우수한 * 진단 메시지. 우리는 최근에 HTTP.SYS의 MaxEndPoints 제한을 초과했으며, 우리가 얻은 예외는 레지스트리 키로 직접 조정할 것을 지적했습니다. 나가서 WCF를해라! – PaulMcG
Thansk 얘들 아. 그리고 저는 방금 며칠을 배웠습니다 (ASP.NET). 그러나 다른 질문은 아직 없습니다. – Wodzu