0

私は Web サービスの概念全体にまったく慣れていませんが、http://msdn.microsoft.com/en-us/netframework/dd939784.aspx でいくつかの初心者用ビデオを見てきまし

私は、json形式でデータを返すサービス(明らかに安らかな)を消費するasp.net Webプロジェクトに取り組んでいます。

前に述べたように、前述のサイトの「最初の Web サービス/クライアントの作成」のビデオを既に見て、概念をよく理解していると感じました。しかし、プロジェクトに取り掛かるようになった今、私の同僚は、安らかなサービスのためにサービス参照を追加する必要はないと主張しています。これは本当ですか?

また、誰かがこのタスクについて本当に良いアドバイスやガイダンスをくれたら、50,000 クール ポイントを獲得できます (クール ポイントはどこでも引き換えることはできません)。


すべてのおかげで、さらに検索した後、http://www.codeproject.com/Articles/233698/Consuming-a-Json-WebService-from-a-Csharp-or-VB-Apで必要な解決策を見つけました

4

4 に答える 4

0

あなたの同僚は、MVC コントローラーを使用して、クライアント エンドから AJAX 呼び出しを介して JSON コンテンツを配信することについて言及している可能性があります。この場合、必要な外部 .dll はありません。

MVC スキャフォールディングにより、RESTful タイプのインターフェースのセットアップが非常に簡単になります。これは、あなたがそれを行う方法の1つです。

public class HomeController : AsynController
{
     [HttpPost] //Create
     public JsonResult CreateStuff(Stuff s)
     {
         var newStuff = new Stuff { Property = s.Property };
         db.Stuff.Add(newStuff);
         db.SaveChanges();
         return Json(new { data = newStuff }, JsonBehavior.AllowGetRequest);
     }

     [HttpGet] //Read
     public JsonResult GetStuff(int id)
     {
         var stuff = db.Where(x => x.Id == id).FirstOrDefault();           
         return Json(new { data = stuff }); //Check for null on the js side.
     }

     [HttpPut] //Update
     public JsonResult UpdateStuff(Stuff s)
     { 
         bool updated = false;
         var stuff = db.Where(x => s.Id == id).FirstOrDefault();
         if (stuff != null)
             updated = true;
             stuff.Property = s.Property;

         return Json(new { data = stuff, updated = updated});
     }


     [HttpDelete] //delete
     public JsonResult DeleteStuff(int id)
     {
         bool deleted = false;
         var deleteThis = db.Where(x => x.Id == id).FirstOrDefault();

          if (deleteThis != null)              
              db.Stuff.Remove(deleteThis);
              db.SaveChanges();
              deleted = true;

         return Json(new { deleted = deleted });
     }

}
 //js side
 //more sophisticated logic goes here
 $(document).ready(function() { 
        $.ajax({ url : '/CreateStuff/', 
                success : function(e) { 
                              console.log("created " + e); 
                 }
               });
      });
于 2012-07-26T20:21:12.673 に答える
0

申し訳ありませんが、RESTful の経験はありませんが、SOAP は使用しています。クライアントが .Net にある場合は、サービス参照を非常に簡単に追加できます。ただし、サービス参照を追加する必要はありません。リクエストの構造がわかっている場合は、単純な http を使用できます。

50,000 クール ポイントのアドバイスとしては不十分かもしれませんが、参考になれば幸いです。

于 2012-07-26T19:39:17.590 に答える
0

する必要はありませんが、できます。なぜですか?自動オブジェクトのシリアル化と逆シリアル化を取得できるようにします。時間を節約するために、サービス参照を使用して常にテストクライアントを生成するクライアントがありましたが、最終的には、サービス参照がまったくないPHPクライアントでそれを消費しました。

呼び出しが単純な場合は、ブラウザーで直接呼び出すことができます。サービスが基本的なレベルで動作していることをテストするために、常にそのような GetVersion 呼び出しを実装しました。

于 2012-07-26T20:10:44.613 に答える
0

jQuery やその他の JavaScript ライブラリなどを使用するか、プレーンな古い JavaScript ですべてを自分で行う場合は、RESTful サービスへのサービス参照を追加する必要はありません。ただし、必要に応じて、サービス参照を作成し、生成されたプロキシ クライアントを使用できます。それは本当にあなたが何をしたいのか、何をする必要があるのか​​ によって異なります.

以下は、チェックアウトしたいサンプルプロジェクトへのリンクです。

于 2012-07-26T19:48:46.823 に答える