博文

1.  什么是webservice(2008-08-30 22:56:00)

摘要:1.  什么是webservice
从表面上看,Web service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web来调用这个应用程序。
对Web service 更精确的解释: Web services是建立可互操作的分布式应用程序的新平台。作为一个Windows程序员,你可能已经用COM或DCOM建立过基于组件的分布式应用程序。COM是一个非常好的组件技术,但是我们也很容易举出COM并不能满足要求的情况。Web service平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。
不管你的Web service是用什么工具,什么语言写出来的,只要你用SOAP协议通过HTTP来调用它,总体结构都应如下图所示。通常,你用你自己喜欢的语言(如VB 6或者VB.NET)来构建你的Web service,然后用SOAP Toolkit或者.NET的内建支持来把它暴露给Web客户。于是,任何语言,任何平台上的客户都可以阅读其WSDL文档,以调用这个Web service。客户根据WSDL描述文档,会生成一个SOAP请求消息。Web service都是放在Web服务器 (如IIS) 后面的,客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到Web服务器来。Web服务器再把这些请求转发给Web service请求处理器。对VB 6程序来说,Web service请求处理器是一个与SOAP Toolkit组件协同工作的ASP页面或ISAPI extension。而对VB.NET程序来说,Web service请求处理器则是一个.NET Framework自带的ISAPI extension。请求处理器的作用在于,解析收到的SOAP请求,调用Web service,然后再生成相应的SOAP应答。Web服务器得到SOAP应答后,会再通过HTTP应答的方式把它送回到客户端。......

阅读全文(2018) | 评论:0

C# 代码规范【4】(2008-08-30 10:23:00)

摘要:8.2.3 枚举命名指导方针 ·         用Pascal情况命名枚举值名字和类型名字 ·         枚举类型和枚举值不要前缀 ·         对于枚举用单一名字 ·         对于位领域用复数名字 8.2.4 只读和常量命名 ·         用名词,名词短语或名词的缩写命名静态领域 ·         使用Pascal 情况(参考8.1.1) 8.2.5 参数/非常量领域命名 ·         一定要用描述性名字,应该能够足够表现变量的意义和它的类型。但一个好的名字应该基于参数的意义。 ·         使用Camel情况(参考8.1.2) 8.2.6 变量命名 ·         计数变量当用在琐碎的计数循环式更适宜叫i, j, k, l, m, n。(参考10.2例如对全局计数的更智能命名等等)— ·         使用Camel情况(参考8.1.2) 8.2.7 方法命名 ·         用动词或动词短语命名方法。 ·         使用Pascal(参考8.1.2) 8.2.8 属性命名 ·   &......

阅读全文(1265) | 评论:0

C# 代码规范【3】(2008-08-30 10:21:00)

摘要:}

一个空while语句应该是以下格式:

while (condition) ;

一个do-while语句应该是如下格式:

do
{
...
} while (condition);

6.6 Switch 语句 一个switch语句应该如下格式:

switch (condition) {
case A:
...
break;
case B:
...
break;
default:
...
break;
}

6.7 Try-catch 语句 一个try-catch statement语句应该遵循以下格式:

try {
...
} catch (Exception) {}
or
try {
...
} catch (Exception e) {
...
}
or
try {
...
} catch (Exception e) {
...
} finally {
...
}

7. 空白 7.1 空行 空行提高可读性。......

阅读全文(1109) | 评论:0

C# 代码规范【2】(2008-08-30 10:20:00)

摘要:5. 声明 5.1 每行的声明数 推荐每行只有一个声明,因为它可以方便注释。

int level; // indentation level
int size; // size of table

当声明变量时,不要把多个变量或不同类型的变量放在同一行,例如:

int a, b; //What is 'a'? What does 'b' stand for?

上面的例子也显示了变量名不明显的缺陷。当命名变量时要清晰。
5.2 初始化 局部变量一旦被声明就要初始化。例如:

string name = myObject.Name;



int val = time.Hours;

注意:如果你初始化一个dialog,设计使用using语句:

using (OpenFileDialog openFileDialog = new OpenFileDialog()) {
...
}

5.3 类和接口声明 当编写C#类和接口时,应遵循以下格式化规则: ·         在方法名和圆括号“(”开始它的参数列表之间不要使用空格。 ·         在声明语句的下一行以......

阅读全文(1157) | 评论:0

C#代码规范【1】(2008-08-30 10:19:00)

摘要:1. 引言 本文是一套面向C# programmer 和C# developer 进行开发所应遵循的开发规范。 按照此规范来开发C#程序可带来以下益处: ·         代码的编写保持一致性, ·         提高代码的可读性和可维护性, ·         在团队开发一个项目的情况下,程序员之间可代码共享 ·         易于代码的回顾, 本规范是初版,只适用于一般情况的通用规范,并不能覆盖所有的情况。 2. 文件组织 2.1 C# 源文件 类名或文件名要简短,不要超过2000LOC,将代码分割开,使结构清晰。将每个类放在一个单独的文件中,使用类名来命名文件名(当然扩展名是.cs)。这种约定会使大家工作更简单。 2.2 目录设计 为每一个命名空间创建一个目录。(用MyProject/TestSuite/TestTier作为MyProject.TestSuite.TestTier的路径,而不用带点的命名空间名做路径)这样可以更容易地将命名空间映射到目录层次划分。 3. 缩进 3.1 换行 当一个表达式超过一行时,根据这些通用原则进行处理: ·         在逗号后换行。 ·         在操作符后换行。 ·         在高层换行而不要在低层处换行。 ·         折行后对齐上一行语句同一层的表达式起始位置。 方法调用换行示例:
longMethodCall(expr1, expr2,
     &n......

阅读全文(2641) | 评论:0

C# 文件的输入输出程序与控制[3](2008-08-29 13:26:00)

摘要:tvDir.SelectedNode.Nodes.Add(                     new TreeNode(formDir.txtFileName.Text,3,4));             }         }           // <summary>         // 删除当前选择的目录及其所有子目录         // </summary>         private void DeleteDirectory()         {             if( MessageBox.Show(this, "确定删除所选择目录" + tvDir.SelectedNode.FullPath + " 吗?",                 "删除目录", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation )            ......

阅读全文(1333) | 评论:0

C# 文件的输入输出程序与控制[2](2008-08-29 13:25:00)

摘要:// 把子目录和文件添加到文件列表视图中             lvFiles.BeginUpdate();             lvFiles.Clear();    // 首先清除列表视图中的所有内容             // 添加4个列表头             lvFiles.Columns.AddRange(                 new System.Windows.Forms.ColumnHeader[] {                         chName,                         chSize,                         chType,   &nb......

阅读全文(2034) | 评论:0

C# 文件的输入输出程序与控制[1](2008-08-29 13:24:00)

摘要:// <summary>         // 获取所有逻辑盘并列出硬盘所有目录         // </summary>         private void ListDrives()         {             TreeNode tn;               // 获取系统中的所有逻辑盘             string[] drives = Directory.GetLogicalDrives();               // 向树视图中添加节点             tvDir.BeginUpdate();             for(int i=0;i<drives.Length;i++)             {                 // 根......

阅读全文(1414) | 评论:0

C#关闭计算机  --危险啊--请慎重(2008-09-03 07:10:00)

摘要:using System;
using System.Runtime.InteropServices;
  
class shoutdown{
   [StructLayout(LayoutKind.Sequential, Pack=1)]
   internal struct TokPriv1Luid
   {
      public int Count;
      public long Luid;
      public int Attr;
   }    [DllImport("kernel32.dll", ExactSpelling=true)]
   internal static extern IntPtr GetCurrentProcess();    [DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true)]
   internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);    [DllImport("advapi32.dll", SetLastError=true)]
   internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);    [DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true)]
   internal static extern bool AdjustT......

阅读全文(1961) | 评论:0

几个字符提取处理分割等函数(2008-08-28 12:09:00)

摘要:--提取数字
IF OBJECT_ID('DBO.GET_NUMBER2') IS NOT NULL
DROP FUNCTION DBO.GET_NUMBER2
GO
CREATE FUNCTION DBO.GET_NUMBER2(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^0-9]%',@S) > 0
BEGIN
set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')
END
RETURN @S
END
GO
--测试
PRINT DBO.GET_NUMBER('呵呵ABC123ABC')
GO
--123
--------------------------------------------------------------------
--提取英文
IF OBJECT_ID('DBO.GET_STR') IS NOT NULL
DROP FUNCTION DBO.GET_STR
GO
CREATE FUNCTION DBO.GET_STR(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^a-z]%',@S) > 0
BEGIN
set @s=stuff(@s,patindex('%[^a-z]%',@s),1,'')
END
RETURN @S
END
GO
--测试
PRINT DBO.GET_STR('呵呵ABC123ABC')
GO
--------------------------------------------------------------------
--提取中文
IF OBJECT_ID('DBO.CHINA_STR') IS NOT NULL
DROP FUNCTION DBO.CHINA_STR
GO
CREATE FUNCTION DBO.CHINA_ST......

阅读全文(2197) | 评论:1