从 Managed Extensions for C++ 中使用 .NET My Services
2007-03-30 21:32:26 来源:WEB开发网核心提示: 再次用右键单击 results.discomap 文件,在快捷菜单中,从 Managed Extensions for C++ 中使用 .NET My Services(4),单击 Properties(属性),然后将 Tool(工具)选项的值更改为 Custom Build Tool(自
再次用右键单击 results.discomap 文件。在快捷菜单中,单击 Properties(属性),然后将 Tool(工具)选项的值更改为 Custom Build Tool(自定义生成工具)。
从 .NET My Services SDK 解决方案文件夹中将 HsSoapExtension.dll 复制到项目的源文件夹中。
在 csc.rsp 文件(位于 %SystemRoot%Microsoft.NETFrameworkv1.0.xxxx)中,添加以下文本:/reference:HsSoapExtension.dll
在 Build(生成)菜单上,单击 Build Solution(生成解决方案)。
这将生成用于 XML Web Service 的 C# 代理类 results.cs,并且该类将被置于 results.dll 中。
注意:对于 Managed Extensions 应用程序,所有代理类都在 C# 中生成,不管它们的目标是 .NET My Services 还是其他 Web Service。要使用 .NET FavoriteWebSites 服务,请在 MyServicesClient.cpp 文件中添加以下代码行:#using <HsSoapExtension.dll>
#using <references.dll>
现在,您已经完成调用 MyService 所需的所有设置工作。下面的示例客户端代码显示了如何将 Web 站点添加到您的 .NET FavoriteWebSites 中,以及如何查询和删除 Web 站点。
示例客户端代码
int _tmain(void)
{
Microsoft::Hs::ServiceLocator::ServiceLocator* serviceLocator =
new Microsoft::Hs::ServiceLocator::ServiceLocator
("http://localhost/myServices", "c:\logfile.txt", true);
try
{
//
// 使用服务定位器查找并初始化 .NET
// FavoriteWebSites 服务/代理
//
// 需要:如果您要查询其他用户,请指定
// 用户名而不是调用 User.GetCurrentUser()。
// 注意:在 ASP.NET 应用中,User.GetCurrentUser
// 将不起作用。
//
myFavoriteWebSites* myFav = dynamic_cast<myFavoriteWebSites*>
(serviceLocator->GetService(System::Type::
GetType("myFavoriteWebSites"),
User::GetCurrentUser()));
//
// 创建新的收藏 Web 站点
//
favoriteWebSiteType* newWebsite = new favoriteWebSiteType();
localizableString* title = new localizableString();
title->lang = S"en";
title->Value = S"Hello.NET";
newWebsite->title = new localizableString*[1];
newWebsite->title[0] =title;
newWebsite->url = S"http://www.microsoft.com";
catType* cat = new catType();
cat->ref = S"system";
newWebsite->cat = new catType*[1];
newWebsite->cat[0] = cat;
//
// 创建 insertRequest 并调用 insert。
//
insertRequestType* insertRequest = new insertRequestType();
// 插入到服务的根中。
insertRequest->select=S"/";
insertRequest->Items = new Object*[1];
insertRequest->Items[0] = newWebsite;
insertResponseType* response = myFav->insert(insertRequest);
//
// 检查以确保操作成功。
//
if(response->selectedNodeCount != 1 || response->status !=
responseStatus::success)
{
throw new Exception(S"将新的 favoriteWebSite 插入到 myFavoriteWebSites 中时出错。");
}
//
// 在插入之后查询新的收藏 Web 站点。
//
queryRequestType* queryRequest = new queryRequestType();
xpQueryType* xpQuery = new xpQueryType();
// 注意:“m:”前缀将在当前服务的
// SoapExtension 中自动被声明。
xpQuery->
select=S"/m:myFavoriteWebSites/m:favoriteWebSite
[./m:title='Hello.NET' and ./m:url='http://www.microsoft.com']";
// 将 xpQuery 添加到 xpQuery 数组中。
queryRequest->xpQuery = new xpQueryType*[1];
queryRequest->xpQuery[0] = xpQuery;
queryResponseType* queryResponse = myFav->query(queryRequest);
//
// 从响应中获取返回的 favoriteWebSite。
//
favoriteWebSiteType* returnedWebSite =
dynamic_cast<favoriteWebSiteType*>
(queryResponse->xpQueryResponse[0]->Items[0]);
//
// 检查以确保操作成功。
//
if(String::Compare (returnedWebSite->title[0]->Value,
S"Hello.NET") != 0 ||
String::Compare (queryResponse->xpQueryResponse[0]->status ,
S"success")!= 0)
{
throw new Exception(S"从 myFavoriteWebSites 中检索新的 favoriteWebSite 时出错");
}
//
// 在消息框中显示 Web 站点。
//
MessageBox::Show(String::Concat
(S"下面的 favoriteWebSite 是从 myFavoriteWebSites 返回的:", returnedWebSite->title[0]->Value));
//
// 替换 cat/@ref 属性值
//
topLevelAttributeType* redAttribute = new topLevelAttributeType();
redAttribute->name = S"ref";
redAttribute->value = S"newvalue";
replaceRequestType* replaceRequest = new replaceRequestType();
replaceRequest->select=S"/m:myFavoriteWebSites/m:favoriteWebSite
/m:cat/@ref[.='system']";
replaceRequest->attribute = new topLevelAttributeType*[1];
replaceRequest->attribute[0] = redAttribute;
//
// 删除 Web 站点
//
deleteRequestType* deleteRequest = new deleteRequestType();
deleteRequest->
select = S"/m:myFavoriteWebSites/m:favoriteWebSite
[./m:title='Hello.NET' and ./m:url='http://www.microsoft.com']";
deleteResponseType* delResponse = myFav->
__identifier(delete)(deleteRequest);
//
// 检查以确保至少在一个元素上执行了操作
// 并且响应显示操作成功
//
if(delResponse->selectedNodeCount == 0 || delResponse->status !=
responseStatus::success)
{
throw new Exception(S"从 myFavoriteWebSites 中删除新的 favoriteWebSite 时出错");
}
MessageBox::Show(S"已成功地从 myFavoriteWebSites 中删除 favoriteWebSite");
}
catch(SoapException* se)
{
//
// 将 SoapException 写入控制台。
//
Console::Write(S"出现 SoapException
异常:
");
Console::WriteLine(se->ToString());
Console::Write(S
从 .NET My Services 返回扩展的 SoapFault 信息:
");
Console::Write(se->Detail->InnerXml);
}
catch(Exception* ex)
{
//
// 将异常写入控制台。
//
Console::WriteLine(ex->ToString());
}
Console::WriteLine(S"按 Enter 键退出。" );
Console::ReadLine();
return 0;
}
Tags:Managed Extensions for
编辑录入:爽爽 [复制链接] [打 印][]
- ››FOREACH 宏之GCC实现
- ››ForeFront让企业VPN连接高枕无忧
- ››Forefront TMG日志记录功能
- ››Forefront Security For Exchange文件传送限制测试...
- ››Forefront Security For Exchange关键字测试
- ››Forefront Security For Exchange的反病毒测试
- ››Forefront Security For Exchange部署指南
- ››Forrester:惠普数据中心自动化解决方案最佳
- ››Forte for Java简介与基础安装
- ››for 语句
- ››Forte For Java开发指南
- ››for...in 语句
更多精彩
赞助商链接