2011-10-29 9 views
1

내 웹 응용 프로그램에서 'BL_Customer'클래스의 클래스 객체 'obj'를 내 웹 서비스 (ASMX)의 'Insert()'함수에 전달한 다음 해당 속성에 액세스 할 수 있습니까? 웹 서비스의 객체? 원격 웹 서비스를 'Add WebReference'기능에 포함 시켰습니다. 나는 'WebRererence 사용하기'를 포함 시켰습니다. 네임 스페이스도. 어떤 도움을 주시면 감사하겠습니다.클래스 객체를 WebService에 전달하는 방법

이다 비즈니스 계층에서 내 BL_Customer 클래스 : 데이비드

public class Service : System.Web.Services.WebService 
{ 
    public Service() { 
    } 

    [WebMethod] 
    public string insert(**What should be here?**) 
    { 
     ----- 
     ----- 

    } 
} 

안부, : 이것은 내 웹 서비스입니다

public class DAL_Customer 
{ 
    public SqlConnection con = new SqlConnection(); 
    WebReference.Service objWEB = new WebReference.Service(); //objWEB -> Webservice object 
    Connection c = new Connection(); 
    public DAL_Customer() 
    { 
    } 
    public int Customer_Insert(BL_Customer obj) 
    { 
     --------- 
     --------- 
     return objWEB.Insert(obj); // Insert() is a function in my remote webservice 
    } 
} 

:

public class BL_Customer 
{ 
    public BL_Customer() 
    { 

    } 
    string c_Cust_Name = string.Empty;  
    string c_Mobile_no = string.Empty;  
    public string Cust_Name 
    { 
     get { return c_Cust_Name; } 
     set { c_Cust_Name = value; } 
    } 
    public string Mobile_no 
    { 
     get { return c_Mobile_no; } 
     set { c_Mobile_no = value; } 
    } 

} 

이 내 데이터 액세스 레이어입니다

+0

ASMX 웹 서비스 또는 WCF? – Damith

+0

@UnhandledException asmx –

답변

4

웹 서비스를 빌드하는 데 사용하는 기술에 따라 다른 방법이있을 수 있습니다. 당신이 사용되지 않는 지금 ASMX 웹 서비스를 사용하는 경우이 매개 변수로 필요한 수업을하는 방법을 추가 :

[WebMethod] 
public void DoSomething(Person p) 
{ 
    ... 
} 

는 .NET에서 웹 서비스를 구축하기 위해 권장되는 기술입니다 WCF를 사용하는 경우

[ServiceContract] 
public interface IMyService 
{ 
    void DoSomething(Person p); 
} 

두 경우 모두 서비스를 사용하려면 클라이언트에서 강력한 형식의 프록시를 생성해야합니다. Visual Studio에서 서비스 참조 추가 대화 상자를 사용하여 웹 서비스의 WSDL을 가리켜 강력한 형식의 프록시를 생성하는 것이 좋습니다. 그런 다음 메소드를 호출합니다

using (var client = new MyServiceClient()) 
{ 
    Person p = new Person 
    { 
     FirstName = "john", 
     LastName = "smith" 
    }; 
    client.DoSomething(p); 
} 

그리고 당신의 클라이언트가 pre-.NET 3.0에 내장되어있는 경우 클라이언트 프록시를 생성하기 위해 Visual Studio에서 웹 참조 추가 대화 상자를 사용해야합니다.

+0

ASMX를 사용하고 있습니다. 'TextBox3.Text = Convert.ToString (obj.Multiply (Convert.ToDouble (TextBox1.Text), Convert.ToDouble (TextBox2.Text)));'. ** 곱하기 **는 웹 서비스의 기능입니다. 이제 클래스 객체를 Multiply 함수 –

+0

@DavidJohn에 전달하고 싶습니다. 곱하기 웹 서비스 메서드를 수정하여 시작해야합니다. 그러면 현재 수행중인 2 개의 이중 값 대신 원하는 객체를 매개 변수로 사용합니다. 이 작업을 완료하면 클라이언트 프록시를 재생성하여 새 메소드 서명을 반영하고 사용할 수있게됩니다. –

+0

@DavidJohn 웹 서비스 변경 클래스를 승인하고 웹 서비스 참조를 업데이트하는 메서드를 곱하십시오. 그런 다음 새 클래스의 객체를 웹 서비스 메서드로 구문 분석 할 수 있습니다. – Damith

0

웹 서비스에서 'Bill'클래스를 정의하면 웹 응용 프로그램과 웹 서비스에서 둘 다 사용할 수 있습니다. 웹 서비스의 응용 프로그램에 정의 된 클래스를 사용하는 방법이 있는지 모르겠지만 실제로는 그렇지 않다고 생각합니다.

+0

@DavidJohn 엔티티는 계층과 별도로 존재해야합니다. 전달되는 객체는 모든 티어에서 참조되어야하므로 모든 티어는 엔티티 클래스 라이브러리에 종속됩니다. – rie819

관련 문제