• Hello,World 百态


    最简陋HelloWorld 首先,编写一个页面文件叫:hello.page,输入下面的信息,然后运行之! 

    1 Hello!name



    浏览器URL:http://localhost:/hello.page 
    运行结果如下:  
     

    160451_00NZ_1245989.jpg (23.65 KB, 下载次数: 0)

    下载附件

    2015-5-27 21:05 上传

     

      
    浏览器URL:http://localhost:/hello.page?name=abc 
    运行结果如下:  

    1 Hello:abc



    很明显,上面的HelloWorld仅仅是在展现层完成的,不管怎么样,他不是用JS直接在页面输出的。  
    增加HelloWorld处理类 


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @ServiceComponent()
    public class HelloWorldService {
        @ServiceMethod(serviceId = "helloWorldService")
        @ServiceResult(name = "sayHelloResult")
        @ServiceViewMapping(type="page",path="/helloworld.page")
        public String helloWorld(String name) {
            if (name == null) {
                return "您好,guest!";
            } else {
                return "您好," + name;
            }
        }
    }



    编写helloworld.page文件,内容如下: 

    1 $!sayHelloResult



    浏览器URL:http://localhost:8080/helloWorldService.servicepage 
    运行结果如下:  

    1 您好,guest!



    浏览器URL:http://localhost:8080/helloWorldService.servicepage?name=abc 
    运行结果如下:  

    1 您好,abc



    好的,现在已经写了Java类,并且写了展现页面,并且已经正确的执行了结果。  
    换一种访问方式,试试看? 
    浏览器URL:http://localhost:8080/helloWorldService.servicexml?name=abc 

    1 <string>您好,abc</string>



    换一种访问方式,试试看? 
    浏览器URL:http://localhost:8080/helloWorldService.servicejson?name=abc 

    1 <string>您好,abc</string>



    运行结果如下: 

    1 "您好,abc"



    限于时间关系,怎么通过webservice访问就不再展示了,实际上,通过WebService访问也是没有问题的。  
    小结:只要定义一个Service,就可以用N种方式来访问它。 
    可以渲染为一个html页面,也可以渲染为了个JSon,也可以是一段Xml,还可以是一个Excel表格,等等。 
    这个时候,我们在4台机器上运行,其中一台配置为AR,两台配置为AS,一台配置为SC。 
    AR为Web接入服务器,AS为应用服务器,SC为服务中心,这个时候用JMeter来对AR进行并发访问,你会发现两台AS都在提供服务。这证明了你的应用服务已经可以进行水平扩展了,而且是基于SOA模式的。  
    同样的去访问WebService,你会发现,也会被负载给两台AS。 
    也就是说,你只写一次,就可以以各种方式向外提供服务。 
    当然,你看到了,在你的服务处理类上定义了我们的注解,这会对你的代码形成侵入性。 
    如果一点也不想依赖我们的类和接口,那也没有问题。 
    类的写法如下: 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class HelloWorldService {
        public String helloWorld(String name) {
            if (name == null) {
                return "您好,guest!";
            } else {
                return "您好," + name;
            }
        }
    }



    另外添加如下配置: 
    hello.service.xml 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <service-components>
        <service-component type="org.tinygroup.helloproject.HelloWorldService">
            <service-method service-id="helloWorldService" method-name="helloWorld">
                <service-parameters>
                    <service-parameter name="name" type="java.lang.String"
                        required="true" is-array="false" />
                </service-parameters>
                <service-result name="sayHelloResult" required="true"
                    is-array="false" type="java.lang.String" />
            </service-method>
        </service-component>
    < /service-components>



    hello.serviceMapping.xml 

    1
    2
    3
    <service-mappings>
        <service-mapping service="helloWorldService" type="page" path="/helloworld/helloworld.page<span></span>"></service-mapping>
    < /service-mappings>




    这种方式与用注解方式达到的结果是完全一样的。 
    通过Hello的了解,您可能知道了Tiny框架的一些特点,这里小结一下: 

    • 可以没有任何侵入性,但是需要写一些xml文件
    • 如果可以接受一些注解,那么开发将更加简单
    • 开发了服务,就代表着可以做许多扩展的功能,而这些扩展的功能,不会要你做额外的工作
    • Tiny框架中的Service与Spring中的Service的函义不同,它等价于WebService中的Service,就是说:你不用管它在哪里,实际上你也不知道它是在哪台物理机器上运行的,总之它被执行了。
    • Tiny框架天生支持前后台服务器的水平扩展,而你不需要做任何针对性的开发-当然需要遵守其规约--所有的要发布成服务的参数及返回值必须是可序列化的,其它没有任何附加条件。

    如果这个HelloWorld示例学会了,表示你学会了: 

    • Tiny的界面开发
    • Tiny的服务开发

    而普通的程序员不需要学习Tiny的其它内容,当然,架构师要学的东西还是要多些的。

  • 相关阅读:
    如何加速JavaScript 代码
    以Kafka Connect作为实时数据集成平台的基础架构有什么优势?
    Java多线程开发系列之一:走进多线程
    java运行环境和运行机制
    C#先序遍历2叉树(非递归)
    Java 之 List<T> 接口的实现:ArrayList
    string.split() 解读---------->从java 和C#的角度剖析
    究竟什么是语法糖呢
    Eclipse 恢复删除的文件
    Notepad++自动刷新文本
  • 原文地址:https://www.cnblogs.com/j2eetop/p/4610503.html
Copyright © 2020-2023  润新知