Web Services + Click Once开发笔记

一、结合目的

通过Click Once发布的软件,已经具备了自动安装及自动更新的功能。但如果软件是CS结构并使用了Oracle数据库,则客户端必须安装Oracle的部分组件,或者还有可能需要进行配置。为了解决这一问题,我进行了Web Service与Click Once结合的试验,效果良好。

 

二、Click Once概述

Click Once是Visual Studio 2005中,用于部署/更新Windows程序的一项新技术。

在VS2005中,可以把写好的程序发布到FTP,文件共享或者网页上。用户点击一下,就可以直接安装程序并运行。以后若对程序作了改动,可以发布新版本。客户端会自动检查程序的更新并获取最新版本。

与传统的安装模式相比: 1)clickonce的安装路径名是一个类似guid的文件夹,以此来区别每次更新。安装文件被拷贝到了每个用户的配置文件中,即 C:/Documents and Settings/<UserName>/Local Settings/Apps/2.0目录下。 2)对同一台机器上的每个用户,都需要安装一次。安装时不需要管理员的权限,普通用户即可。

这项技术也有一些限制,例如: 1)只能更新Windows程序,对于服务就不能更新了 2)只能更新托管代码编写的程序

 

三、Web Service概述

Web Service是一个应用组件,它逻辑性地为其他应用程序提供数据与服务。各应用程序通过网络协议和规定的一些标准数据格式(HTTP、XML、SOAP)来访问Web Service,通过Web Service内部执行得到所需结果。 Web Service可以在任何支持网络通信的操作系统中实施运行。它可以接受和生成Message(消息),Message的形式严格定义了Web Service接口。只要用户能生成和使用Web Service接口所规定的Message,就可以用任何语言,在任何平台上调用Web service。 Web Service是一种URL地址资源,通过URL可程序化地把信息返回给需要获取这种资源的客户端。Web Service的一个重要特点是客户端不需要知道服务端是怎样运行的。

 

四、创建Web Service

启动VS2005,打开[File]->[New]->[Web Site],新建ASP.NET Web Service,如图:   按下OK后,VS2005会自动创建项目,并在IIS中自动建立虚拟目录TestWebSite。在Solution Explorer中找到Service.asmx,点击右键,选择[View Code],在代码的开始处添加引用: using System.Data.SqlClient; using System.Data.OleDb; using System.Data;

在类中添加成员函数SQLDB(string Query)、OracleDB(string Query)和AccessDB(string Query),用于连接MS SQL SERVER、ORACLE和Access。

[WebMethod]

public DataSet SQLDB(string Query)

{

    try

    {

        SqlConnection CS = new SqlConnection("Data Source=192.168.2.250;database=Repertory;User ID =sa;Password=tenghe");

        SqlDataAdapter myCommand = new SqlDataAdapter(Query, CS);

        DataSet myDataSet = new DataSet();

        myCommand.Fill(myDataSet, "Results");

        return myDataSet;

    }

    catch (Exception ex)

    {

        return DataError(ex);

    }

}

 

[WebMethod]

public DataSet OracleDB(string Query)

{

    try

    {

        OleDbConnection OleDbConnection1 = new OleDbConnection("Provider=OraOLEDB.Oracle;Data Source=fthERP;Persist Security Info=True;User ID=system;Password=mbpdkjx;Unicode=True");

        OleDbDataAdapter daAttendees = new OleDbDataAdapter(Query, OleDbConnection1);

        DataSet ds = new DataSet();

        daAttendees.Fill(ds, "Attendees");

        return ds;

    }

    catch (Exception ex)

    {

        return DataError(ex);

}

}

 

[WebMethod]

public DataSet AccessDB(string Query)

{

    try

    {

        string strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="

               + this.Server.MapPath("AccessWebServices.mdb");

        OleDbConnection myAccessConn = new OleDbConnection(strAccessConn);

        OleDbCommand myAccessCommand = new OleDbCommand(Query, myAccessConn);

        OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);

        myAccessConn.Open();

        DataSet myDataSet = new DataSet();

        myDataAdapter.Fill(myDataSet, "Results");

        myAccessConn.Close();

        return myDataSet;

    }

    catch (Exception ex)

    {

        return DataError(ex);

    }

} 最后写上处理错误的方法: public DataSet DataError(Exception ex){     DataSet errDS = new DataSet("Errors");     DataTable errTable = errDS.Tables.Add("Error");     errTable.Columns.Add("Message");     errTable.Rows.Add(new Object[] { ex.Message });     return errDS; }

注意,如果是ACCESS数据库,需要将AccessWebServices.mdb放在TestWebSite目录下。接着,编译项目,成功后按[Ctrl+F5]查看Web Service是否正常工作,如下图所示: 

页面中列举了我们写的成员函数,单击其中一个进行测试,如下图所示: 

输入查询条件,点击[Invoke],若出现如下数据,则表示连接成功。 

连接失败,则出现Errors信息,如下图所示意:

 

五、调用Web Service

新建一个Windows Application项目,命名为TestApplication,在项目上点击右键,选择[Add Web Reference]来添加Web Service的引用: 

在[URL]中输入Web Service所在的路径,若地址正确将可以看到一个服务被找到。在[Web Reference Name]中将“localhost”改为“dbWebService”,点击[Add Reference]完成引用。

接下来我们在Form1中添加dataGridView1及button1,双击button1,在事件中添加代码: TestApplication.dbWebService.Service Database = new TestApplication.dbWebService.Service(); DataSet ds = Database.OracleDB("select * from ftdept"); dataGridView1.DataSource = ds.Tables[0];

编译运行该项目,得到如下结果:

 

  六、IIS的配置

首先建立FTP站点。(这里只简略地讲重要步骤)打开Internet信息服务器,在[默认FTP站点]上点击右键,选择[属性]。弹出对话框中我们将主目录中的[读取]、[写入]、[记录访问]全部打上勾,如图所示意:   

然后在[默认网站]上点击右键,选择[新建]->[虚拟目录]。虚拟目录配置如下图所示:  

注意:本地路径必须是程序发布的地址,另外还需在[文档]中要添加程序的发布页面。

 

七、用Click Once发布

在TestApplication项目上点击右键,选择[Porperties] ->[Publish],如下图所示:  

在[Publish Location]处填写用于存放发布程序的FTP地址(如图),或文件路径如//192.168.12.30/AQMWarehouseUpdate/ ;

 在[Installation URL]处填写用于安装程序的HTTP地址(如图),或文件路径如//192.168.12.30/AQMWarehouseUpdate/

在[Application File]中选择需要发布的资源(图片、网页、dll、dsn等),当然这些资源需要先加入到项目中才能显示在该列表中。如图:

在[Prerequisites]中选择需要一起发布的插件(程序运行时所需的,将会和程序一步安装到位),如图:

 [Updates]和[Options]选项卡的内容可酌情填写。

填写上版本号,点击[Publish Now]按纽。倏而会弹出连接对话框,可根据FTP的权限设置,选择匿名连接,或输入用户名、密码。连上FTP后不久便发布成功了。如下图:  

单击[Install]便可体验到Click Once的效果了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值