基于Nodejs和Mongodb的web框架并集成Apache Solr和RabbitMQ—SOWF


1、前序

如果你想在最短的时间内感受到nodejs框架给服务器端编程带来的创新和便捷,或者你想在最短的时间内开发出一个属于自己的网站,或者你初出茅庐、对编程知之甚少,又或者你只是一个前端程序员,无法开发出自己心中设想的后端程序,那么也许这篇文章会给你带来不小的帮助,因为SOWF框架将带来以上所有的好处,并且还有更多你想象不到的功能。

2、介绍

SOWF框架,英文全称为Service-Oriented Web Framework,意为基于服务的网站框架。用该框架编写的网络应用,将前端的不同请求编写为一个一个的事件,即服务,每一个请求都是一个服务,甚至一个页面的请求都可以当成是一个服务。目前,流行的基于nodejs的框架使用最广泛的是express框架,该框架封装许多nodejs原生的api,提供了傻瓜式的配置设置,路由也变得简单而有条理,因此获得广大nodejs框架热爱者的喜爱,本框架也是基于express而开发的。

但是,使用express还是会有很多麻烦。首先必须要熟悉express提供的api,然后才能更好的使用这个框架;express固然对路由进行了封装,但是这种封装是轻量的,也就是编程人员仍然要话费很大力气去配置路由,如果有很多人来编写这个网络应用,将会导致配置路由的文件变得混乱,不利于编程人员协同工作,大大降低了工作效率;另外,对于mongodb的访问,express没有提供方便快捷api,使用mongo提供的api将会十分麻烦,而且有很多限制。

综上所述,SOWF是一个轻便简单的nodejs服务器框架,它能够让你在短时间内编写出你心中已经描绘出的美好网站,同时会给你提供无穷无尽的新功能。一切只为节省你宝贝的时间。

3、详细使用

3.1、创建目录

            3.1.1、创建页面文件目录

                        支持Html(html,html5),支持jade

            3.1.2、创建服务目录

                        存放编写的各种web服务,为最核心的目录

            3.1.3、创建静态文件目录

                        用于保存图片,脚本(javascript),样式文件(css)

            3.1.4、也可以创建其他自定义目录

3.2、服务器配置

            3.2.1、基础配置

                        a)服务器名称

                        b)服务器端口

                        c)页面文件目录,即3.1.1所创建的目录

                        d)服务文件目录,即3.1.2所创建的目录

                        e)静态文件目录,即3.1.3所创建的目录

                        f)其他相关配置

            3.2.2、高级配置

                        a)是否开启集群

                        b)集群服务器个数

                        c)是否使用持久化的session

                        d)持久化session的数据库配置

e)上传文件临时路径

                        f)其他相关配置

            3.2.3、数据库配置

                        a)用户名和密码

                        b)数据库服务器地址和端口

                        c)数据库名称

            3.2.4、关于服务器配置的实例代码 

//javascript
var sowf = require('./index');
	var server = sowf();
	var config = server.GetConfig();
	config.set('Port',7777);
	config.set('Cluster',false);
	config.set('ClusterNumber',0);
	config.set('ViewDir','/views');
	config.set('ServiceDir','/service');
	config.set('PublicDir','/public');
	config.set('AppName','SOWFServer instance');

    3.3、添加页面文件

            3.3.1、创建html文件(或其他页面文件,如jade)

            3.3.2、引用静态文件

                        假设静态文件目录位于’/public’,并且在这个目录下创建了三个文件夹,’/public/images’、’/public/javascripts’、’/public/stylesheets’。

                        a)图片的引用

<imgsrc="/images/img.jpg"  />

b)脚本的引用

<scripttype="text/javascript" src="/javascripts/jquery.min.js"></script>

                        c)样式文件的引用     

<linkrel="stylesheet" href="/stylesheets/style.css">

            3.3.3、页面文件会自动加载,不要进行配置,例如index.html的路径为’/views/node1/node2/node3/index.html’,其中’/views’为页面文件的根目录,则该文件的访问路径为’http://server:port/node1/node2/node3/index’。

3.4、添加web服务

            3.4.1、创建javascirpt文件

            3.4.2、编写服务的路径,例如某个service有一个method方法提供页面访问,则代码如下:           

service.route.method  = {
                         url : '/service/method',
                         type : 'get',
                        function : 'method'
};

其中url表示该方法的访问路径,可以随意配置,type表示该方法的属性(get或者post),function表示该方法的执行体

3.4.3、编写方法的执行体

3.4.4、web服务会通过配置某个service文件中定义的访问路径,自动加载该web服务,并且能通过配置的url,正确高效的访问到该web服务,并且可以自由的配置Rest风格的URL。

3.5、创建数据库Model(相当于关系数据库中Table)

            3.5.1、获取数据库实例              

  vardatabase = server.Database();

            3.5.2、创建Model,例如     

database.CreateModel('Test1',{id:Number,Name:String});

            3.5.3、具体使用详情请参见mongoose的使用方法                     

3.6、使用扩展功能

            3.6.1、扩展功能1:使用Apache Solr进行全文搜索

                        使用SOWF提供的Solr Api,可以非常简单的访问到Apache Solr服务器,并能够进行快速的全文搜索。

            3.6.2、扩展功能2:使用Rabbitmq

                        Rabbitmq作为目前流行的消息服务器,应用十分广泛,对于集群以及各系统之间的交互有着十分显著的作用。使用SOWF的rabbitmq api可以和许多其他服务器进行交互。

            3.6.3、扩展功能3:使用mongoose提供的数据库api

            3.6.4、还有许多其他扩展功能

3.7、启动服务器

            3.7.1、启动                   

server.StartSOWFServer(config);

4、维护和扩展

4.1、该框架将不断完善,请持续关注
4.2、如果需要联系我,请使用评论功能。

           

                        





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值