웹 참조 대신 서비스 참조를 추가 할 때 Silverlight에서 웹 서비스 클래스 사용
-
05-07-2019 - |
문제
대본:
웹 서비스의 Silverlight 3.0을 클라이언트로 사용하고 있습니다.
설계:
서버에는 이름이 지정된 클래스가 있습니다 deviceinfoservice 장치 목록을 얻거나 장치의 속성을 얻는 기본 기능이 있습니다.
ASP.NET 프로젝트를 열고 웹 참조를 추가하려고하면 "웹 참조"를 추가 할 수있는 옵션을 찾을 수 있습니다. 이 방법으로 웹 참조를 추가 한 후에는 객체를 만들고 메소드에 액세스하여 DeviceInfoservice 클래스에 액세스 할 수 있습니다.
웹 참조 v/s 서비스 참조 :
Silverlight에 오는 것 : 서비스 참조를 추가하려고 할 때 웹 참조를 추가 할 수있는 옵션이 없습니다. 서비스 참조와 함께 WSDL 파일이 다운로드 될 때까지 모든 것이 잘 작동합니다. 사람들은 .NET 2.0으로 돌아가서이 옵션을 얻을 수 있다고 말하지만 아마도 .net 2.0에서는 Silverlight가 작동하지 않을 것입니다.
문제
이제 클래스 DeviceInfoservice에 액세스하려고 할 때 찾을 수 없습니다. 내가 얻는 것은 인터페이스입니다 - deviceinfoservicesoap 및 deviceinfoservicesoapchannel. DeviceInfoservicesoapclient라는 클래스.
GethostedDevices 및 GetDeviceInfo 방법은 더 이상 사용할 수 없습니다. 내가 얻는 것은 getDeviceInforequest, getDeviceInforequestBody, getDeviceInforPonse 및 getDeviceInforPonseBody입니다.
나는이 네 가지 클래스를 사용하는 방법을 많이 구글링했지만 아무것도 찾지 못했습니다. ASP.NET에서 직접 2 개의 클래스를 얻고 해당 요청 응답 유형을 사용하지 않기를 원합니다.
해결책
ASP.NET의 웹 참조는 Silverlight의 서비스 참조와 동일합니다.
다음은 Silverlight에서 웹 서비스를 사용하는 방법에 대한 예입니다. Cdyne Provanity 필터.
프로젝트에 새 서비스 참조를 추가하십시오. URL은 다음과 같습니다. http://ws.cdyne.com/profanityws/profanity.asmx?wsdl, 이름을 ServiceReference1로 남겨 두십시오.
이 코드를 사용하여 서비스를 호출하십시오 (비동기식으로 구현됨) :
public MainPage()
{
InitializeComponent();
string badText = "I wonder if the filter will filter this out: shit bad luck";
ServiceReference1.ProfanitySoapClient client = new ServiceReference1.ProfanitySoapClient();
client.ProfanityFilterCompleted += new EventHandler<ServiceReference1.ProfanityFilterCompletedEventArgs>(client_ProfanityFilterCompleted);
client.ProfanityFilterAsync(badText, 0, false);
}
void client_ProfanityFilterCompleted(object sender, ServiceReference1.ProfanityFilterCompletedEventArgs e)
{
string cleanText = e.Result.CleanText; // Web service callback is here
}
그리고 당신은 Silverlight에서 웹 서비스를 제공하고 실행했습니다!
다른 팁
당신은 몇 가지 개념에 대해 끔찍하게 혼란스럽게 들립니다.
다음 Silverlight.net 비디오를보고 도움이되는지 확인하십시오.Silverlight에서 WCF 및 ASP.NET 웹 서비스를 소비하는 방법