.Text支持用metaBlogAPI或者WebService做客户端。不过前者只有英文版软件可用(如wBloggar),而且似乎不大灵光,后者则太过简单,连Category都不支持。所以打算自己做一个简单的、第一版只支持新增Post的客户端。大体结构如下——

                            DATABASE
                               |
              .TEXT STORED PROCEDURE
    (我的意思是.Text提供的SQL Server过程)
                               |
                            WebService
                               |
                              Client

在看.Text原来的Stored Procedure时,想起来作者没有提供详细的文档,只能自己研究了。通过查阅源码和数据库结构,大体了解了两个关键存储过程和表中参数的用法。下面简单列一下,备考。

首先,每个Post的CategoryId是放在blog_links表中。这个让我比较迷惑。作者把Post的category当作和“链接”一样的东西,混杂不清。

所以,在添加Post的时候,要执行两个过程:blog_InsertEntry和blog_InsertLink,第二个过程需要第一个过程返回的PostId值。来看看着两个过程的参数意思——

Create Proc blog_InsertEntry
(
@Active bit, //是否publish出来
@Title nvarchar(255), //标题
@TitleUrl nvarchar(255), //标题URL。这个我不大明白,从来没用过。
@Text ntext, //内容
@SourceUrl nvarchar(200), //来源URL
@PostType int, //BlogPost-1, Story-2, Comment-3, PingTrack-4,Undeclared-5,这里用1就好
@Author nvarchar(50), //作者
@Email nvarchar(50), //邮件地址
@SourceName nvarchar(200), //来源
@Description nvarchar(500), //描述,基本没什么用
@BlogID int, //不用解释了吧
@DateAdded datetime, //日期,用当前日期可也
@IsXHTML bit, //1-支持HTML, 0-不支持,对于Post应该支持,Comment则不支持
@ParentID int, //Post为-1, Comment是PostId
@ID int output) //返回ID
……

Create Proc blog_InsertLink
(
@Title nvarchar(150), //标题,对于Post,用Null
@Url nvarchar(255), //URL,对于Post,用Null
@Rss nvarchar(255), //RSS,对于Post,用Null
@Active bit, //活动,1
@NewWindow bit, //新窗口,0
@CategoryID int, //这个关键,不过无需解释了
@PostID int, //同上
@BlogID int, //同上
@LinkID int output //返回ID
)……

这样一来就清楚啦。稍候把发文流程思路整理一下再放上来。