2

現在、私たちのソフトウェアは、多数の Web サービスを呼び出し、その間に何百もの Web メソッドを呼び出す winForms アプリで構成されています。

多くの理由から、Web のみのアーキテクチャ (jQuery Mobile、jQuery、HTML5、LawnChair) に移行しています。Web ページはプレゼンテーションのみを処理し、すべてのビジネス ロジックはサーバー側で発生します。したがって、これらの Web サービスを Web ページから呼び出す必要があります。

たとえば、Web メソッドごとにサーバー側の HttpHandlers を呼び出す jQuery を試してみました。jQuery は JSON を使用するため、XML SOAP を直接呼び出すことはできません。そのため、jQuery から呼び出すことができる新しいレイヤーを上に追加する必要があります。

しかし、これは正しいアプローチですか?おそらく WCF を使用するか、または私が見落としている他の何かを使用して、実装する手間が少ない、より適切な別のアプローチはありますか?

4

2 に答える 2

2

jQuery から XML Web サービスを利用できます。XML メッセージで問題なく動作します。ただし、JavaScript で SOAP メッセージを作成して読み取るのは面倒です。

何が適切かはあなた次第です。ただし、WCF REST またはより優れたASP.NET MVC4 WebAPIを使用すると、配管を介してアプリケーションをブートストラップし、動作するアプリケーションをかなり迅速に配信することに集中できます。ただし、これには元のサービスの一部を書き直す必要があります (いずれにせよ、これは運命にあるようです)。

于 2012-05-01T12:35:29.837 に答える
0

これが役立つかどうかはわかりませんが、次のようなajax.asmxWebサービスを使用し、jQueries ajaxを使用して呼び出します

Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
Imports ClsLib
Imports Microsoft.WindowsAzure.StorageClient
Imports Microsoft.WindowsAzure

' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
<System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class Ajax

<System.Web.Services.WebMethod()> _
Public Function function1(byval first as string, byval second as string) as string
    'do something here
    Return someJsonAsString
End Function

End Class

そのような何かがあなたを助けることができると思います。

ただし、独自のクラスを作成して既存の SOAP XML サービスを処理することはできますが、より多くのクライアント側コードが必要になります。

var productServiceUrl = 'http://localhost:57299/ProductService.asmx?op=SaveProduct'; // Preferably write this out from server side

function beginSaveProduct(productID, productName, manufactureDate)
{
var soapMessage =
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> \
<soap:Body> \
<SaveProduct xmlns="http://sh.inobido.com/"> \
<productID>' + productID + '</productID> \
<productName>' + productName + '</productName> \
<manufactureDate>' + manufactureDate + '</manufactureDate> \
</SaveProduct> \
</soap:Body> \
</soap:Envelope>';

$.ajax({
url: productServiceUrl,
type: "POST",
dataType: "xml",
data: soapMessage,
complete: endSaveProduct,
contentType: "text/xml; charset=\"utf-8\""
});

return false;
}

function endSaveProduct(xmlHttpRequest, status)
{
 $(xmlHttpRequest.responseXML)
    .find('SaveProductResult')
    .each(function()
 {
   var name = $(this).find('Name').text();
 });
}

そして、jQuery で SOAP 応答を解析しています。そのためのプラグインがあると思います。

于 2012-05-01T11:39:49.297 に答える