0

いくつかのajax機能で拡張される古いWebフォームがあります。.net 4にアップグレードしましたが、新しいサービスを作成するときにどのようなアプローチをとるべきか疑問に思っています。

wcfサービスの作成についてはあまり経験がありませんが、次のような単純なcshtmlファイルを使用してサービスを作成する方がはるかに簡単なようです。

@{    
    var db = Database.Open("MyConnectionString); 
    var data = db.Query("SELECT * FROM MyTable WHERE Col1 = @0", '123');
    Json.Write( new { results=data}, Response.Output);
}

wcfサービスを作成する場合と比較して、この戦略を使用する際の落とし穴は何ですか?

助けてくれてありがとう

ラルシ

4

3 に答える 3

1

CodeCasterへのコメントに基づいて、WebサービスとWebメソッドの概念を混同していると思います。アプリにAjaxを追加するだけの場合は、jsonを返すアクションメソッドであるWebメソッドが必要です。そして、あなたはウェブページを使用しているので、あなたのアプローチは完全に有効です。

于 2011-11-22T18:28:55.890 に答える
0

WCFを使用すると、次のことができます。

[OperationContract]
public UserNow GetCurrentUser()
{
    string UserName = Membership.GetUser().UserName; 
    string UserToView = Request.Params["UserToView"];
    //do a bunch of things.
    return UserNow;
}

利点は?

  • 強く型付けされています(文字列、ブール値、または新しいFooBar()を返すことはできませんが、何も返すことはできませんが、Response.Write好きなものをすべてまたは何も返すことはできません)
  • WSDLが生成されます。これを使用すると、クライアントは実行できる操作と送信されるデータ型を知ることができます。
  • WCFを使用すると、別のバインディングを簡単に追加して、別の範囲のクライアント(Webサービスの場合はbasicHttpとwsHttp、.NETで記述された他のクライアントとより効率的に通信するためのnetTcp)をサポートできますが、コードを変更する必要はありません。

そして、私が忘れてしまうことは他にもたくさんあるでしょう。

于 2011-11-22T09:53:46.013 に答える
0

他の応答で言及されていない考慮事項の1つは、Json.Writeのパフォーマンスです。数列の小さなレコードセットには適していますが、 70レコードと10列の小さなレコードセットでもかなり遅いことに気づきました。これは、通常、アプリケーションをユーザーの操作に対してより応答性の高いものにしようとしている「Ajaxifying」であるWebアプリケーションのコンテキストでは特に重要です。このような場合、私は通常、概念実証が機能するためにJson.Writeを使用しますが、その後、戻ってレイザーページを変更し、返されたレコードをループして、StringBuilderを使用してJSON文字列を作成します。出力に。

WCFのパフォーマンスはわかりませんが、文字列ビルダーをループするよりも高速な場合は、上記の利点のリストに追加することができます(セットアップの複雑さと比較検討するため)。

于 2012-01-11T23:31:56.580 に答える