Hello,World 百态

本文介绍了使用Tiny框架进行服务开发的过程,包括创建简单的HelloWorld示例,展示如何通过多种方式访问服务,以及如何实现前后台服务器的水平扩展。重点讨论了Tiny框架的特点,如无侵入性开发、多种访问方式支持、服务的灵活部署等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最简陋HelloWorld

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

?
1
Hello:$!name

浏览器URL:http://localhost:/hello.page

运行结果如下:


浏览器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的其它内容,当然,架构师要学的东西还是要多些的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值