做为一个程序员可能在学习技术,了解行业新动态,解决问题时经常需要英文的内容;而像我这样的英文小白就只能借助翻译工具才能理解个大概;不禁经常感慨,英文对学习计算机相关知识太重要了!最近发现ibm的云平台blumemix,并且提供语言翻译的服务,感觉不错,就拿来研究学习一下;这里就分享一下我的研究学习过程,如何使用asp.net5调用rest api打造自己的在线翻译工具,并演示如何把它发布到云平台上,让每个人都可以通过网络访问使用它。

应用效果展示

 

构建一个类似的应用程序的前提条件

一个 bluemix 帐户,您还没有? 点击这里注册,已经有,点击这里登录;

对 html(超文本标记语言)的基本了解;

对css (层叠样式表)的基本了解;

对javascript(一种直译式脚本语言)的基本了解;

对asp.net5 的基本了解;

对restful api的基本了解;

我提供了所有必要代码,但对这些技术的基本了解有助于您理解有关的细节。

步骤 1. 创建您的asp.net5应用程序

1、在bluemix用户界面中,转至“仪表板”。 2、单击创建应用程序。 3、单击web,然后按照指导经验来选择入门模板,指定名称以及选择编码方式。
输入应用程序名称
应用程序名称是唯一的,接下来要通过它做为二级域名来访问你的应用!
点击完成之后,需要等待一会儿,然后可以看到下图的界面
这时就可以访问你刚刚创建的应用了。如下图:

步骤 2. 添加语言翻译服务

可以通过单击bluemix用户界面中应用程序“概述”上的添加服务或 api,将服务添加到应用程序中。也可以使用 cf 命令行界面。请参阅。 在服务列表中选择语言翻译(language translation) 您可以指定服务的名称,也可以使用默认的;

获取服务信息

进入自己的应用程序》概述页面,找到已经添加的服务,点击“显示凭证”,可以查看服务的具体信息:

在中访问服务url如下图:

步骤 3. 准备开发环境

有关开发环境搭建的细节,请参考下面的文章:

 

  1. //通过ajax调用后台翻译程序 functiondoexectrans(){
  2. vartxt=$(“#inputtext”).val(); if(txt==””){
  3. alert(“请输入要翻译的文本!”); return;
  4. }  
  5. $(“#progressdiv”).show(); $.ajax({
  6. type:”get”, url: “/api/values/” + encodeuricomponent(txt),
  7. datatype:”json”,  
  8. success:function(data){ $(“#progressdiv”).hide();
  9. console.log(data); if(data.error){
  10. alert(data.error); }else{
  11. $(“#outputtext”).text(data.text); }
  12. }, error:function(data){
  13. console.log(data);ssss alert(“errormsg:”+data);
  14. $(“#progressdiv”).hide(); }
  15. }); }

    后台主要代码:valuescontroller.cs,与翻译服务web service交互

    创建方法请参考:《asp.net5》web api controller class学习

    using system;
    using system.collections.generic;
    using system.linq;
    using system.threading.tasks;
    using system.net;
    using microsoft.aspnet.mvc;
    using system.text;
    
    // for more information on enabling web api for empty projects, visit http://go.microsoft.com/fwlink/?linkid=397860
    
    namespace dotnethelloworld.controllers
    {
        [route("api/[controller]")]
        public class valuescontroller : controller
        {
            // get: api/values
            [httpget]
            public ienumerable get()
            {
                return new string[] { "value1", "value2" };
            }
    
            // get api/values/txt
            [httpget("{txt}")]
            public async task get(string txt)
            {
                string retstring = txt;
                try
                {
                    //构造url,source为要翻译文本的语言,target指定要翻译为什么语言
                    string uri = "https://gateway.watsonplatform.net/language-translation/api/v2/translate?";
                    uri += "source=en&target=es&text=" + txt;
                    system.net.http.httpclient httpclient = new system.net.http.httpclient();
                    //将服务凭证转换为base64编码格式
                    byte[] auth = encoding.utf8.getbytes("用户名:密码"); //对应上面获取服务信息的语言翻译服务凭证中的用户名和密码
                    string auth64 = convert.tobase64string(auth);
                    //创建并指定服务凭证,认证方案为basic
                    httpclient.defaultrequestheaders.authorization = new system.net.http.headers.authenticationheadervalue("basic", auth64);
                    
                    retstring = await httpclient.getstringasync(uri);
                    return "{\"text\":\"" + retstring + "\"}";
                }
                catch (exception ex)
                {
                    return ex.message;
                    //throw ex;
                }
            }
    
            // post api/values
            [httppost]
            public void post([frombody]string value)
            {
            }
    
            // put api/values/5
            [httpput("{id}")]
            public void put(int id, [frombody]string value)
            {
            }
    
            // delete api/values/5
            [httpdelete("{id}")]
            public void delete(int id)
            {
            }
        }
    }
    

    你可能会注意到代码中有两个关键字:async和await,.net中引入了async和await关键字(vb为async和await)来简化异步调用的编程模式,这使异步调用变得更加简单。

    步骤 5.本地运行访问

    运行

    1、保存修改过的文件

    2、按下f5键,或使用debug菜单

    访问

    启动调试后会自动打开浏览器窗口:

     

    步骤 6.上传应用程序

    登录到bluemix?后,可以使用cf push命令来上传应用程序。

    开始之前,您必须:
    1、安装 cloud foundry 命令行界面。

    请根据自己使用的操作下载对应的版本;我使用的是windows 7 64位操作系统, 下载binaries版本的不需要安装,
    直接解压到windows目录就可以了
    依次点击仪表板》jstrans(您创建的应用程序名称)》开始编码,可以查看属于自己的命令;如下图:
    2、连接到bluemix。 打开命令提示符窗口:开始》运行,输入“cmd”,回车 执行:cf api https://api.ng.bluemix.net,如下图: 3、登录到bluemix。
    注意,这里要换成对应你自己账户的命令!

    
    

     

    cf login -u ivu4e@qq.com -o ivu4e@qq.com -s ivu4e

    4、发出cf push命令时,cf命令行界面将提供使用 buildpack 来构建并运行应用程序的bluemix环境的工作目录。

    1. 从应用程序目录中,输入带有应用程序名称的cf push命令。在bluemix环境中,应用程序名称必须是唯一的。 后面的”-m 512m”是修改应用程序内存配额的,可以不带这个参数,如下图: 注意:执行cf push前将命令行当前目录切换到您刚刚创建的应用目录,例如我刚刚创建的
      c:\nodejs\net5trans\,cf push 后面的jstrans要替换为您在bluemix上创建的应用名称。 提示:使用cf push命令时,cf命令行界面会将当前目录中的所有文件和目录复制到bluemix。确保应用程序目录中只包含必需的文件。

      cf push命令上传应用程序并将其部署到bluemix。有关cf push的更多信息,请参阅。有关 buildpack 的信息,请参阅使用社区 buildpack。

      如果更改了应用程序,可以通过再次输入cf push命令来上传这些更改。cf命令行界面会使用您先前的选项以及您对提示的响应来通过新的代码段更新应用程序的任何运行中实例。

      提示:您还可以从bluemix devops services上传或部署应用程序。请参阅在 node.js 中使用 web ide 开发bluemix应用程序。

      步骤 7.做个小小的测试

      通过仪表板进入您刚刚创建的应用页面,点击左侧的开始编码,右侧顶部会显示:您的应用程序正在运行。

      点击后面的链接访问刚刚发布的应用。

      结束语

      通过ibm的bluemix云平台,我们可以轻松的将自己的应用共享到网络上;

      创建web应用之后会自动获得一个用来访问应用的二级域名;

      通过应用程序概述中的应用程序运行状况,可以方便的查看和管理应用运行状态;

      这里通过一个小例子展示如何将自己的应用发布到ibm的bluemix云平台上,

      如何与ibm云平台上提供的语言翻译服务交互。

      如果您有更好的应用或想法,试试通过ibm的bluemix云平台共享出来吧。