Hello,World 百态
2015-06-30 15:05
316 查看
最简陋HelloWorld 首先,编写一个页面文件叫:hello.page,输入下面的信息,然后运行之!
浏览器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
运行结果如下:
很明显,上面的HelloWorld仅仅是在展现层完成的,不管怎么样,他不是用JS直接在页面输出的。
增加HelloWorld处理类
编写helloworld.page文件,内容如下:
浏览器URL:http://localhost:8080/helloWorldService.servicepage
运行结果如下:
浏览器URL:http://localhost:8080/helloWorldService.servicepage?name=abc
运行结果如下:
好的,现在已经写了Java类,并且写了展现页面,并且已经正确的执行了结果。
换一种访问方式,试试看?
浏览器URL:http://localhost:8080/helloWorldService.servicexml?name=abc
换一种访问方式,试试看?
浏览器URL:http://localhost:8080/helloWorldService.servicejson?name=abc
运行结果如下:
限于时间关系,怎么通过webservice访问就不再展示了,实际上,通过WebService访问也是没有问题的。
小结:只要定义一个Service,就可以用N种方式来访问它。
可以渲染为一个html页面,也可以渲染为了个JSon,也可以是一段Xml,还可以是一个Excel表格,等等。
这个时候,我们在4台机器上运行,其中一台配置为AR,两台配置为AS,一台配置为SC。
AR为Web接入服务器,AS为应用服务器,SC为服务中心,这个时候用JMeter来对AR进行并发访问,你会发现两台AS都在提供服务。这证明了你的应用服务已经可以进行水平扩展了,而且是基于SOA模式的。
同样的去访问WebService,你会发现,也会被负载给两台AS。
也就是说,你只写一次,就可以以各种方式向外提供服务。
当然,你看到了,在你的服务处理类上定义了我们的注解,这会对你的代码形成侵入性。
如果一点也不想依赖我们的类和接口,那也没有问题。
类的写法如下:
另外添加如下配置:
hello.service.xml
hello.serviceMapping.xml
这种方式与用注解方式达到的结果是完全一样的。
通过Hello的了解,您可能知道了Tiny框架的一些特点,这里小结一下:
可以没有任何侵入性,但是需要写一些xml文件
如果可以接受一些注解,那么开发将更加简单
开发了服务,就代表着可以做许多扩展的功能,而这些扩展的功能,不会要你做额外的工作
Tiny框架中的Service与Spring中的Service的函义不同,它等价于WebService中的Service,就是说:你不用管它在哪里,实际上你也不知道它是在哪台物理机器上运行的,总之它被执行了。
Tiny框架天生支持前后台服务器的水平扩展,而你不需要做任何针对性的开发-当然需要遵守其规约--所有的要发布成服务的参数及返回值必须是可序列化的,其它没有任何附加条件。
如果这个HelloWorld示例学会了,表示你学会了:
Tiny的界面开发
Tiny的服务开发
而普通的程序员不需要学习Tiny的其它内容,当然,架构师要学的东西还是要多些的。
1 | Hello !name |
运行结果如下:
160451_00NZ_1245989.jpg (23.65 KB, 下载次数: 0)
下载附件
2015-5-27 21:05 上传
浏览器URL:http://localhost:/hello.page?name=abc
运行结果如下:
1 | Hello:abc |
增加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; } } } |
1 | $!sayHelloResult |
运行结果如下:
1 | 您好,guest! |
运行结果如下:
1 | 您好,abc |
换一种访问方式,试试看?
浏览器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" |
小结:只要定义一个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> |
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的其它内容,当然,架构师要学的东西还是要多些的。
相关文章推荐
- Button拖动效果
- Oracle里面的using作用(用于动态sql绑定参数)
- 利用COPYDATASTRUCT传递命令行参数给驻留内存的进程(SendMessage应用)
- Linux中使用SecureCRT上传、下载文件命令sz与rz用法实例
- 通讯录搜索功能
- Android和Linux kernel版本对应表
- mysql 锁查看
- Direct3D几何流水线
- android 开发中,经常遇到http://dl-ssl.google.com/ 无法访问的问题解决
- UI开发的终极解决方案
- 黑马程序员 File类、Properties类、IO包中的其他类
- Android记住密码自动登录
- Direct3D 的进化史
- 二进制有关问题
- 构建网络爬虫?so easy
- 泛函编程(32)-泛函IO:IO Monad
- mysql5.7二进制包安装
- 如何解决Ubuntu发热严重地问题
- Android中手机声音调节步骤
- 关于在Eclipse中启动Tomcat报java.lang.OutOfMemoryError: PermGen space的解决方法