优秀的编程知识分享平台

网站首页 > 技术文章 正文

用C++写出HTML,使用web服务,可以免费搭建个人博客

nanyue 2024-10-21 06:21:09 技术文章 7 ℃

web服务是.net中让人激动的部分,几乎所有你能叫出名字的服务都有一些执行服务器端代码的机制:正巧每种语言都一个类库,因此在HTTP中生成一个GET请求变得很简单,解析出XML也有了些捷径。

这种方案给你提供了一种跨平台,跨语言,跨厂商乃至一切的方法,只要它们都在INTERNET上或是以其他的方式相连,我们就可以在某个程序的代码中调用另外一个完全不同的机器上的代码。



这就是隐藏在WEB服务背后的基本观念。使用类似于WEB服务描述语言(说 wizdle会更酷一些)开发有一定的标准,它们涵盖了这些技术细节。

如果你用Visual Studio.NET创建一个WEB服务,它将满足这些标准。如果你只是需要WEB服务,而不管它是如何创建的,通过Visual Studio.NET,你会发现借用他人的代码是如此简单。

编写一个WEB服务

为了编写一个WEB服务,你至少要用一种方法写一个类。这个类必须有WebService属性,方法也要有WebMethod属性。WEB方法能够接受和返回任何可用的类型,包括你定义的对象实例。它们能做任何事情:维护数据库数据的内外一致性,做任何形式的运算,甚至调用另外一个WEB方法来完成任务。

在Visual Studio.NET中创建一个新工程。在Visual C++工程模板中,选择可管理的WEB服务。修改后是:

<@ WebService Class=Calculator.CalculatorService %>

我获得了一个叫做HelloWorld()的方法,把它改成Add()很简单——我仅仅更改了.cpp文件和.h文件的名称,改变了签名以便它能够接受浮点数,然后加了些代码以返回和。



类声明的结束部分:

using <System.Web.Services.dll>
using namespace System;
using namespace System::Web;
using namespace System::Web::Services;
namespace Calculator
{
public __gc
class CalculatorService : public WebService
{
public:
[System::Web::Services::WebMethod]
double Add(double x, double y);
};
}

实现的部分:

#include "stdafx.h"
#include "Calculator.h"
#include "Global.asax.h"
namespace Calculator
{
double CalculatorService::Add(double x, double y)
{
return x + y;
}
}

第一个 CGI 程序


#include <iostream>using namespace std;
int main (){   
  cout << "Content-type:text/html\r\n\r\n";
  cout << "<html>\n";
  cout << "<head>\n";
  cout << "<title>Hello World - 第一个 CGI 程序</title>\n";
  cout << "</head>\n";
  cout << "<body>\n";
  cout << "<h2>Hello World! 这是我的第一个 CGI 程序</h2>\n";
  cout << "</body>\n";
  cout << "</html>\n";
  return 0;}

使用WEB服务



写一个WEB服务相当简单:你只需要一个类属性,一个方法属性和calculator.asmx文件,而这三个都由Visual Studio生成。

最简单的方法是键入URL到Calculator.asmx然后按回车。你会看到和以前运行WEB服务工程时同样的文件。点击添加参数结束这个过程。



参数一旦添加,调用WEB服务就像调用任何C++类一样。添加参数建立一个头文件,这个文件在任何你想使用WEB服务时都可以包括进去。

#include "stdafx.h"
#using <mscorlib.dll>
#include <tchar.h>
#include "WebService.h"
using namespace System;
// This is the entry point for this application
int _tmain(void)
{
CalculatorService * Calc = new CalculatorService;
System::Console::WriteLine("1 plus 1 is ",
__box(Calc->Add(1,1)));
return 0;
}

Tags:

最近发表
标签列表