asp.net webサービス

このQ&Aのポイント
  • asp.netでWCFにチャレンジしていますが、vs2005とは全然違い理解できません。
  • 通常のasp.net webフォームでgetメッソドを使うことで、webサービスのような処理ができますが、一般的にWEBサービスとは呼ばれません。
  • 通常の処理ではデメリットとして、wcfサービスよりも制約があります。
回答を見る
  • ベストアンサー

asp.net webサービス

vs2010でWCFにチャレンジしていますが、vs2005でのASP.NETとは、全然違いなかなか理解することでができません。 iphoneから値を受け取って、WEB上のMYSQLに保存したいだけなのですが、 通常のasp.net webフォームでgetメッソドを使い下記のようにすることで、 webサービスのような処理ができることが分かったのですが、 このような処理の場合は、一般的にWEBサービスとは呼ばないのでしょうか? また、このような処理で実装した場合、wcfサービスで構築した場合に比べ どのようなデメリットがでるのでしょうか? Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load On Error GoTo Err_load Dim id As String = Page.Request.QueryString.Get("id") Dim name As String = Page.Request.QueryString.Get("name") If Pubmodule.FunDBConnect_Express(con) = False Then Exit Sub strSql = "INSERT into gps_location values(" & id & ",'" & name & "','" & Now() & "')" 'MySQLCommand作成 cmd = New MySqlCommand(strSql, con) cmd.ExecuteNonQuery() cmd.Dispose() Ext_load: Exit Sub Err_load: GoTo Ext_load End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • shockatz
  • ベストアンサー率80% (153/191)
回答No.2

「Webサービス」という言葉は、世間的には「Webを使って利用者に何らかの機能を提供する」という意味で、そういう位置づけではどんな処理も「Webサービス」と言えなくはないです。 ただ、ASP.NETの世界で「Webサービス」とは、Visual Studio 2002時代からMicrosoftが推進した「XML Web Service」を指しますが、こちらは、SOAPフォーマットに則ったXML通信規格です。 ご提示されているhttpGET通信は大昔から使われた手法で、以下の点で「Webサービス」に劣ります。 ・送受信できるのが単純な文字列のみ。ユーザ定義型のオブジェクトは使用できないため、自力で文字列合成や分解を行う必要がある。 ・暗号化や符号化の機能がなく、セキュリティ的にも甘い(クエリ内容が平文でURL履歴に残り、一目瞭然)。 なので、自己責任で使用する分には別に構わないのですが、POSTにするとか、Ajax通信にするとか、キーを暗号化するとかして、セキュリティを高められたほうがよいと思います。

ekekojr
質問者

お礼

よく分かる説明ありがとうございます。

その他の回答 (1)

  • WebSurfer
  • ベストアンサー率55% (33/59)
回答No.1

> このような処理の場合は、一般的にWEBサービスとは呼ばないのでしょうか? アップしてあるコードは Web サービスとはぜんぜん違います。ASP.NET で Web サービスを実装する方法は「asp.net webサービス」をキーワードにググルと山ほど出てきますので、詳しくはそれを見てください。 その前に、SQL インジェクションをしてくださいと言わんばかりの、セキュリティ上の問題を何とかした方がいいと思いますよ。

ekekojr
質問者

お礼

回答ありがとうございます。

関連するQ&A

  • <>&などを保存する方法をおしえてください。

    <>&などを保存する方法をおしえてください。 NameTextBox CommentTextBox 保存ボタン があり保存ボタンを押すと 下記コードが実行されるようにしました。 これで、保存はできるようになったのですが <>&などを使用するとエラーとなってしまします。 <>&を使用するにはどのようにしたらいいのでしょうか? 教えてください。 Dim strSQL As String = "INSERT INTO tableA (Name,Comment) VALUES (@Name,@Comment)" Using con As New SqlConnection(conStr) Dim command As New SqlCommand(strSQL, con) con.Open() Using cmd1 As SqlDataReader = con.CreateCommand() cmd1.CommandType = CommandType.Text Try with cmd1 .Parameters.Add("@Name", SqlDbType.NVarChar) .Parameters.Add("@Comment", SqlDbType.NVarChar) .Parameters("@Name").Value = NameTextBox .Parameters("@Comment").Value = CommentTextBox End With cmd1.CommandText = strSQL cmd1.ExecuteNonQuery() Catch er As Exception Finally con.Close() Catch ex As Exception Finally con.Close() End Try End Using End Using

  • ASP Pageの孫継承のPage_Load

    VisualStudio2010/.NET4.0で開発しています。 やりたい事  ・以下のVBのC#版を作りたい。   継承元のPage_Loadを実行させたい Public Class Base  Inherits System.Web.UI.Page   Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load    Response.Write("親Page_Load")   End Sub End Class Public Class _Default  Inherits Base   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load    Response.Write("子Page_Load")   End Sub End Class 上記のaspは実行すると画面上に「親Page_Load子Page_Load」と表示される。 だが、以下のプログラムでは「子Page」としか表示されないので困っております。 public class Base : System.Web.UI.Page {  private void Page_Load(object sender, EventArgs e)  {   Response.Write("親Page");  } } public partial class _Default : Base {  protected void Page_Load(object sender, EventArgs e)  {   Response.Write("子Page");  } } よろしくお願いいたします。

  • GridView1の選択の指定とダミーデータの追加について

    GridView1とTwxtBox1を用意し GridView1に選択ボタンをつけ押すと、TextBox1にその行の1行目を表示するようにしたいのですが ★に何を入れたら、選択行を指定することができるのでしょうか?教えてください。 Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) TextBox1.Text = GridView1.Rows.Item(★).Cells(1).Text End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Dim conStr As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString Dim strSQL As String strSQL = "SELECT 1CELL FROM tableA" Using con As New SqlConnection(conStr) Using cmd As NEw SqlCommand(strSQL, con) Dim dr As SqlDataReader con.Open() dr = cmd.ExecuteReader(Data.CommandBehavior.CloseConnection) GridView1.DataSource = dr GridView1.DataBind() dr.Close() End Using End Using End Sub また、GridView1に出ているデータに選択するデータがない場合の為に データーベースにはなくても【-】というデータを常に表示できるようにしたいのですが どのようにしたらいいのでしょうか? 【tableAの1CELL】 AAAAA BBBBB CCCCC DDDDD - ←データベースにはこのデータはないけれどGridView1には常に表示し、これを選択するとTextBox1に【-】が入るようにしたいのですが よろしくお願いします。

  • 文字の点滅

    すいません、VB.Net2003の初心者です。 いろいろ調べたのですが解らないので教えてください。 VB.Net2003 SQLServer2000という環境なんですが Form1に Private Sub Timer1_Tick(・・・ lblMessage.Visible = Not lblMessage.Visible End Sub Private Sub Form1_Load(・・・ Me.Timer1.Start() End Sub と書いて単独で開くとちゃんとメッセージは点滅するのですが、これに Private Sub From1_Activated(・・・ Dim Form2Form As New Form2 Application.DoEvents() Dim strSQL As String Dim intRemainder(4) As Integer Dim i As Integer For i = 1 To 3 strSQL = "SELECT COUNT(TelW) AS RemainderCount " strSQL &= "FROM dbo.ma_Customer " strSQL &= "WHERE (CallDayNo1 IS NULL) AND " strSQL &= "(CallNo" & i & " > 0)" Try cmd = New SqlCommand(strSQL, Cn) intRemainder(i - 1) = cmd.ExecuteScalar Catch ex As Exception Dim strMsg As String = Err.Number & ex.ToString MessageBox.Show(strMsg) End Try cmd = Nothing Next Me.Hide() With Form2Form .lblNo1.Text = intRemainder(0).ToString("#,##0") .lblNo2.Text = intRemainder(1).ToString("#,##0") .lblNo3.Text = intRemainder(2).ToString("#,##0") .ShowDialog() End With Me.Close() End Sub というコードを加えてループ処理を実行している間メッセージを点滅させたいのですが点滅しません。どう書いたら良いのでしょう?

  • ADO.NETの処理分岐について教えて下さい。

    クライアントから取得したIPアドレスとDBの登録が一致した場合のみフォームを 出力するアプリケーションを作成しているのですがDBの登録があってもエラーのフォームの 分岐に行ってしまいます。 どこが違うのでしょうか?教えて下さい。 ASP.NETを勉強し始めて間もないのでまだまだ勉強不足ですが宜しくお願い致します。 Imports System Imports System.Data Imports System.Data.SqlClient Imports Microsoft.VisualBasic Imports System.Text Partial Class INDEX Inherits System.Web.UI.Page Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load '------------- IPアドレス取得 -------------- Dim ipAddr As String ipAd = Request.UserHostAddress '------------- SQL Server Connection -------------- Dim myDataReader As SqlDataReader Dim mySqlConnection As SqlConnection Dim mySqlCommand As SqlCommand mySqlConnection = New SqlConnection("Server=Name;database=Source;UID=id;PWD=pw") mySqlCommand = New SqlCommand("SELECT * FROM IPdb WHERE IPAddress='" & ipAd & "' AND sub='True'") mySqlConnection.Open() mySqlCommand.Connection = mySqlConnection myDataReader = mySqlCommand.ExecuteReader(CommandBehavior.CloseConnection) Do While (myDataReader.Read()) Loop If Not (myDataReader Is Nothing) Then Response.Redirect("LoginError.aspx") Else End If myDataReader.Close() mySqlConnection.Close() End Sub End Class

  • Page_Load時にボタンクリックイベントを実行するには?

    ASP.NETでPage_Load時にボタンクリックイベントを実行するにはどのようにすればいいのでしょうか? 具体的には、HTTPクエリ文字列のresultが"1"の場合はbutton1_Clickイベントを実行したいのですが、やりかたが分かりません。 サンプルソースの★の部分に button1_Click(sender, System.Web.UI.ImageClickEventArgs.Empty) と入れたら、 「型 'System.EventArgs' のオブジェクトを型 'System.Web.UI.ImageClickEventArgs' にキャストできません。」 というエラーメッセージが表示されてしまいます。 ■■■■■■サンプルソース■■■■■■ Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load   'クエリー取得(数値チェック)   If Request.QueryString("result").ToString = "1" Then     '検索ボタン押下処理を表示する     ★button1_Clickイベントを実行したい。   End If End Sub '検索ボタン押下 Protected Sub button1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles button1.Click '検索結果を表示する     : End Sub

  • MsgBoxをASP.NETで表示したいのですが・・・WEBなどで検索

    MsgBoxをASP.NETで表示したいのですが・・・WEBなどで検索した内容が理解できずに困っています。 VWD2008を使ってページを作成しています。言語はVB.NETです。 ASP.NETではメッセージボックスを使えないことを承知しています。 ただし手段によって可能ということはこのサイトで知りました。 まだ、初心者でハチャメチャなことを書いてあるかも知れませんがご教示いただけないでしょうか? http://www.atmarkit.co.jp/fdotnet/dotnettips/015confirm/confirm.html このページを参考にしてみたのですが・・・ aspx上に配置したボタンのプロパティにAttributesという項目がありません。 また、 private void Page_Load(object sender, System.EventArgs e) { // ページを初期化するユーザー コードをここに挿入します。 Button1.Attributes["onclick"] = "return confirm('本当に移動しますか?');"; はどこに書いてあげたらいいのでしょうか? よろしくお願いします。 Imports System.IO Imports System.IO.Path Imports System.Text Imports System.Web.UI.HtmlControls Imports System.Diagnostics Imports System.Xml Partial Public Class _Default Inherits System.Web.UI.Page ' ' Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click ' '

  • DBから取得した値の変換方法

    DB MySQL カラム:name varchar(255),ucs2_bin データ:てすと 上記のデータを下記の処理で(VB.Net)取得しようと すると文字が化け(????)て取得されてしまうのですが デコードの仕方が良く分かりません。 System.Text.~を使うと思うのですが何を指定したら いいのか分からないのでご教授お願い致します。 ちなみに言語は日・中・英と対応する必要があります。 --処理-- Dim conn As New MySQLConnection( _ String.Format("Port={0};Server={1};Data Source={2};User ID={3};Password={4}", _ port, computer, database, user, password)) Dim cmd As MySQLCommand Dim red As MySQLDataReader conn.Open() Dim sql = "select name from test" cmd = New MySQLCommand(sql, conn) red = CType(cmd.ExecuteReader(), MySQLDataReader) Do While red.Read Console.WriteLine(red("NAME")) Loop red.Close() cmd.Dispose()

  • レコードの削除

    VB6.0 ACCESSで開発しています。 t_nyukoテーブルのデータを全て削除するのは下記のように 出来たのですが dataGridに表示されているものを1つ選択し 選択されたものだけ削除したいのですがどうすればいいのでしょうか? よろしくお願いします。 Private Sub Command1_Click() Dim cn As New ADODB.Connection Dim cmd As ADODB.Command Dim cat As New ADODB.Command Dim strSQL As String   Set cn = New ADODB.Connection cn.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\temp\db2.mdb" cn.Open cat.ActiveConnection = cn strSQL = "DELETE FROM t_nyuko " Set cmd = New ADODB.Command cmd.ActiveConnection = cn cmd.CommandText = strSQL cmd.Execute cn.Close Set cmd = Nothing Set cn = Nothing Set cat = Nothing End Sub

  • VB.NetによるMySQL接続について

    VB.NET(2012)よりMySQLへの接続についてご教示ください。 現状、下記のようなエラーが発生し、DB接続ができない状況です。 'MySQLConnection' は、名前空間 'MySql.Data.MySqlClient' では不適切です。 'MySQLCommand' は、名前空間 'MySql.Data.MySqlClient' では不適切です。 'MySQLDataReader' は、名前空間 'MySql.Data.MySqlClient' では不適切です。 【ソース】 Imports MySql.Data.MySqlClient Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim con As MySQLConnection Dim cmd As MySQLCommand Dim dr As MySQLDataReader End Sub End Class 【設定】 Connector/NETのインストール メニューのプロジェクト→参照の追加→拡張よりMySql.Dataを指定 メニューのプロジェクト→DB_Accessのプロパティ→参照よりMysql.Data→プロパティ内のローカルコピー:True 参照よりインポートされた名前空間(I)→Mysql、Mysql.Data・・・その他Mysqlのチェックをオン 【環境】 OS:Windows7 開発:.Net2012 DB・サーバ環境:XAMPP(アパッチ、MySQL) HPでいろいろ調べましたがどれも似たような内容の為、解決できておりません。 何か足りないのでしょうか。 何卒、ご教示のほどよろしくお願い致します。