作者meowyih (meowyih)
看板CodeJob
标题[发案] C/C++ XML Web Service
时间Thu Aug 4 08:27:31 2011
凡是「*[30m」开始的行,都请使用 Ctrl + y 删除。
请注意:发案人须主动更改标题[]内与内文之案件状态(发案,成案,结案),
案件状态、发案人、联络方式1、有效时间、专案说明为必填项目,
如果对於发案文章格式有不清楚的地方,请参考置底文章:[发案] 发案范例
案件状态:发包中
发案人: 站内信
联络方式1: 站内信
联络方式2:
有效时间: 2011/8/20
专案说明: 说明於文末
预算:20万 ~ 50万 (视讨论的 project scope 大小而定)
接案者要求:1. 由於需要和现存的 C API 整合, 希望专案是以 C/C++ 完成,
另一个备用解决方法是用 JNI 把 C 包起来,
再套用 Apache + Cocoon 之类的 Solution,
但还是以 C/C++ 优先考量
2. 需提供源码与基本文件, 并开放未来更动的权利
接受新手承案否:否
附注:目标是建立一个简单的 "Web Service",
虽然名称是叫 Web Service,
但实际上其功能比较接近可以处理 XML 的 HTTP Server,
基本架构如下:
|
Server
======================================================
|
+-----------+ Socket/SSL
Binary File +---------+
|XML |---------
-----------------> | |
Web/AP Base Tool
|Text | |
Text |C Library|
---Init/Shutdown/Reload
+-----------+ |
.----------- | |
|Binary File| |
| +---------+
+-----------+ |
| Text +--------+
|
.-----------> | |
+-----------+ |
SQL |Database|
|XML/Text |
<-------------------------- | |
+-----------+ Socket/SSL
Data +--------+
|
|
| |
|
Web/AP Base Tool
|
Add and Delete Record
这是预期中的架构, 这个专案只包括 Server-side 的实作与建立的部份,
Client 端只是单纯的看 Spec 将定义的 XML 送到 Server 中并等待回应,
不需要用到 SOAP, 其中粉红字的部份功能可以删减,
这部份也是专案预算的 range 的讨论范围
Server 包括的功能有:
1. 对外的 XML Query function (预期会有频繁的 Queries)
2. 对内的客户管理与流量统计
3. C API 的控制介面
现存的 C API 包括 init/shutdown/add data/remove data,
需要有基本的 UI 让 Server 管理者可以重启和管理 C Library
4. Database 资料的增减与管理
5. Web Server 的安全管理
Server 的 XML Query 逻辑如下
1. Server 收到从 Socket/SSL 传来的 Query XML, 类似於
<QUERY>
<CMD="QUERYTYPE_XXX">
<CLIENTID>51231243242</CLIENTID>
<USERID>3242323524</USERID>
<DATA>...Some Base 64 Data about 100K</DATA>
</CMD>
<QUERY>
2. Server 判断 CLIENT ID 是存在且尚未过期, USERID 是否合法,
并记录下这次的连线供未来统计流量或次数之用
3. 如果是合法的 Query, Server 将 DATA 部份抽出, 还原成 Binary Data,
呼叫 C API 将 Binary Data 转成不超过 1KB 的的文字或 ID
4. 利用 3 所得到的文字或 ID, Query Server 内的 SQL Database,
取得相关文字资料
5. 将 4 从 Database 取得的资料, 用同样的 Socket/SSL 回传给 Client 端,
回传的 XML 类似於
<RESPONSE>
<STATUS="OK">
<NAME>资料1</NAME>
<ID>资料2</ID>
<COMMENT>资料3</COMMENT>
</STATUS>
</RESPONSE>
基本的概念是这样, spec 的细节部份请再跟我连络
其他如 Database 表单的复杂度或 C API 与 DB 的 Web/AP base UI 的难度,
是需要讨论预算和时间後再共同决定
有兴趣的请写信给我吧 ^_^
外部流程如下:
(以下内容鼓励结案後填写,可以询问接案人愿不愿意暴光接案身份)
结案意见:
接案人:
评价(0-10):
说明:
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.57.131.72
※ 编辑: meowyih 来自: 61.57.131.72 (08/04 09:57)