0 关注者 · 44 帖子

Caché 服务器页面 (CSP) 是一种架构和工具集,用于通过 InterSystems 数据平台构建交互式 Web  应用程序。

文章 shaosheng shengshao · 九月 14, 2022 2m read

研究Healthshare2018在已经安装完成使用的情况下,部署IIS,并代理平台。之前看到可以通过单独的CSP Gateway安装包进行处理这种问题,该文主要是获取不到该安装包的时候可以如何实现IIS的处理。

第一步:首先按照网上教程部署IIS服务。安装完成之后会在C盘创建一个名叫intepub的包。

第二步:在inetpub包下面直接插入CSPGateway 。这个包是在其他先安装IIS下,后安装Healthshare的CSP网关服务的时候在inetpub下面自动插入的包,直接找一个复制过来。

第三步:打开IIS,创建一个叫csp的网站,按照下图配置。

 第四步:在点击模块进行CSPms模块的添加。
 

接下来是配置好的CSPms的模块。

注意:我们从图中看到的CSPms模块是本机继承的模块,我们在右边添加本机模块的时候并不能找到C:\inetpub\CSPGateway\CSPms.dll这个模块,导致加不进去。那我们就直接在配置文件上面改。找到C:\Windows\System32\inetsrv\config该文件路径下的applicationHost.config文件,为了稳妥起见,我们先备份一下该文件。
找到<globalModules>节点,在下面加入<add name="CSPms" image="C:\Inetpub\CSPGateway\CSPms.

1
0 586
文章 Yuxiang Niu · 十月 22, 2022 4m read

Cache锁的异常直接影响数据库进程运行,堆积的锁如果处理不及时会造成Cache性能异常,导致数据库访问受限或严重卡顿。本文主要以实例分析介绍Cache中常见锁的作用及其对应的处理方式,包括:系统锁、数据锁、Session锁、仪器锁、程序文件锁。其中数据锁异常需要及时处理。

查询Cache锁有两种方式:

1>可在System Management Protal[Home]>[Locks]中查看;

2>可在terminal端使用Do ^LOCKTAB命令下查看,如下图所示,此方式适用于锁表量达到10000条以上,Protal页面HTTP响应超时无法显示锁表时使用。

0
0 468
文章 姚 鑫 · 十月 19, 2022 7m read

CORS请求Request携带Cookie失败占用License解决方案

起因

  1. 因为是前后端分离的项目,前端使用的vue2,后端iris。需要获取cooike的,每次请求时携带,防止每次请求都占用一个。

  2. 登录认证,保持会话期间全局变量,超时退出。

现象

下图是如果不携带cookie每次请求都会新建一个并且占用一个license

image

解决过程

所以基于上述情况,需要每次获取响应的cookie,保存下来,下次请求再携带保存下来的。

如图Set-Cookie内容:

  • CSPSESSIONID - 为SessionID
  • - 服务器,负载均衡时会用到,如果不对应,则会报错。

后端方法为%CSP.Response的:

Method WriteHTTPHeaderCookies()
{
	#Dim c,cookie,port,cookiepath
	s ^yx("yx","UseSessionCookie") = %session.UseSessionCookie
	s ^yx("yx","CSPSessionCookie") = %session.CSPSessionCookie
	s ^yx("yx","SecureSessionCookie") = %session.SecureSessionCookie
	If $isobject($get(%session)),%session.UseSessionCookie,i%OutputSessionToken,%session.CSPSessionCookie'="" {
		Set cookie="CSPSESSIONID",cookiepath=i%CookiePath
		If $extract(cookiepath,*)'="/" Set cookiepath=cookiepath_"/"
		If $data(%request.CgiEnvs("SERVER_PORT"),port) Set cookie=cookie_"-SP-"_port
		Set cookie=cookie_"-UP-"_$translate($extract(cookiepath,2,*),"/","-")
		Set cookie=cookie_"="_$select(i%OutputSessionToken=2:"",1:%session.CSPSessionCookie)_"; path="_$zcvt($zcvt(cookiepath,"O","UTF8"),"O","URL")_"; "_$select(%session.SecureSessionCookie:" secure;",1:"")
		if i%UseHttpOnly {
			Set cookie=cookie_" httpOnly;"
		}
		Write "Set-Cookie: "_cookie,!
		$$$SysLogTag(2,"CSPResponse","[WriteHTTPHeaderCookies] Session cookie: "_cookie,"", %request.RequestId)
		s ^yx("Set-Cookie:") = cookie
		
		Set %session.CookiePath=$get(cookiepath)
	}

	Set c=""
	For {
		Set c=$order(i%Cookies(c)) Quit:c=""
		Set name=i%Cookies(c,"n")
		Write "Set-Cookie: ",name,"=",i%Cookies(c,"v"),";"
		Write:i%Cookies(c,"e")'="" " expires=",i%Cookies(c,"e"),";"
		Write:i%Cookies(c,"p")'="" " path=",i%Cookies(c,"p"),";"
		Write:i%Cookies(c,"d")'="" " domain=",i%Cookies(c,"d"),";"
		Write:i%Cookies(c,"s") " secure;"
		Write:i%Cookies(c,"h") " httpOnly;"
		Write !
	}
}
0
0 483
文章 姚 鑫 · 九月 29, 2022 3m read

第一章 Caché 服务器页面简介 - 什么是CSP

Caché Server Pages (CSP) 既是用于构建交互式 CSP 应用程序的架构又是工具集。 CSP 技术允许构建和部署高性能、高度可扩展的 应用程序。 允许动态生成网页,通常使用来自 数据库的数据。 “动态”意味着每次从最近更改的数据源请求同一页面时,它可能会提供不同的内容。

用途广泛。它可以

  • 显示每分钟都在变化的库存数据。
  • 支持拥有数千名活跃用户的网络社区。
  • 根据存储在 Caché 数据库中的用户信息个性化页面。
  • 根据不同用户的要求和安全权限,根据用户数据为不同用户定制页面。
  • 提供 HTMLXML、图像或其他二进制或文本数据。
  • 提供快速性能,因为它与高性能 数据库紧密耦合。

非常适合数据库应用程序。除了提供对内置 数据库的快速访问之外,它还提供了许多基于 Web 的数据库应用程序必不可少的功能,包括

  • 会话管理
  • 页面认证
  • 能够从网页中执行交互式数据库操作。

支持两种风格的 开发。

  • 为了使用类开发应用程序,CSP 提供了一个对象框架。
  • 为了使用 文件开发应用程序,CSP 提供了一种基于 的标记语言,允许在网页中包含对象和服务器端脚本。可以在一个应用程序中结合这两种技术以获得最大的灵活性。

CSP 和 Zen

是一个应用程序框架,用于快速创建包含在 和 中的数据丰富的

0
0 472
文章 姚 鑫 · 九月 30, 2022 2m read

第二章 Caché 服务器页面简介 - 你应该知道

你应该知道什么

要高效使用 CSP,应该熟悉以下内容:

  • Caché objects and ObjectScript

  • HTML

  • JavaScript

CSP Samples

Caché 附带一组示例CSP 页面。要查看这些:

  1. 打开

  2. 要查看 示例,请确保计算机上的 Web 服务器正在运行。

  3. 启动浏览器并转到 CSP 示例菜单(使用位于以下位置的私有 Web 服务器:http://localhost:57772/csp/samples/menu.csp或位于以下位置的外部 Web` 服务器:http://localhost /csp/samples/menu.csp 。

  4. 如果安装的 具有正常或锁的安全功能,则可能会显示登录页面。如果是这样,请登录。

  5. 显示示例 页面的列表以及每个页面的简短描述。单击感兴趣的任何内容。

文档

可以在此处找到有关 的文档:

  • 使用 描述了如何创建 页面
  • 使用 ZEN 描述了如何使用 ZEN,这是一个在 之上工作的包,用于使用预构建的页面对象进行更快速的 Web 应用程序开发。 文档包括使用 组件、开发 应用程序和使用 报告。
  • ,对所有 标签的引用
  • CSP 示例菜单,显示了许多 页面示例。
  • 服务器页面快速入门教程让入门。
0
0 228
文章 姚 鑫 · 十月 12, 2022 3m read

第十四章 CSP 中的 HTTP 请求 - CSP.Page 类

CSP 服务器上,所有 HTTP 请求都通过调用由类中的 %CSP.Page 定义的方法来处理。类中的 从不直接处理请求本身;它只是定义了处理 请求所需的接口。实际的事件处理的 的子类完成(手动创建或作为处理 源文件的结果)。

%CSP.Page 的子类永远不会被实例化;也就是说,不会在对象中创建 %CSP.Page%CSP.Page 定义的方法都是类方法,不需要对象即可调用。正如我们将看到的,这些方法所需的任何状态信息都由 服务器管理的其他对象(例如 和对象中的 )提供。

Page 方法

在 服务器确定类中的哪个 %CSP.Page 应该处理请求后,它会设置适当的处理上下文,然后调用该类的 Page 方法。设置处理上下文包括重定向标准输出设备 (),以便将所有输出(使用 命令)发送回 客户端并创建任何所需对象的实例(例如 、 和 对象)或局部变量。

方法处理对 请求的完整响应。它通过按顺序调用回调方法 、 和 来做到这一点。这些被称为回调方法,因为子类可以覆盖它们以提供自定义行为。

方法负责写出 响应的标头。这包括内容类型和 等信息。默认行为是将内容类型设置为 。在需要更直接地控制响应标头的情况下,通常只需要覆盖 方法。

方法执行响应 请求的大部分工作。

0
0 211
文章 姚 鑫 · 十月 5, 2022 3m read

第七章 CSP 架构 - URL 的 Web 服务器配置

URLWeb 服务器配置

提供了一个默认的 /csp 虚拟目录来运行 应用程序。如果正在运行多个 Caché 实例,它还提供了一个默认虚拟目录 以供使用。如果正在运行多个 实例并使用虚拟目录 访问 应用程序,而之前没有 /,它将访问最后安装的 版本。如果计划允许使用以 http://localhost/csp 或 http//localhost/cacheinstance/csp 开头的应用程序路径调用所有 应用程序,则无需在 Web 服务器中进行任何更改配置。

如果要创建一个应用程序路径不是以 或 开头的 CSP 应用程序,则需要在 服务器配置文件条目中进行更改,别名 。

下表显示了需要更改的配置文件。

网络服务器 配置文件
ApacheHP 安全网络服务器 UNIX®: Windows: \conf\httpd.conf
如“在 服务器上配置新 ”中所述定义虚拟目录。

下表显示了使用 服务器和 实例的组合访问 页面的示例:

URL web server Instance
http://localhost/cache20071/csp/samples/menu.csp public
0
0 188
文章 姚 鑫 · 十月 6, 2022 4m read

第八章 CSP 架构 - CSP 网关配置

CSP 网关配置

CSP 网关是安装在 Web 服务器上并由其加载的 DLL 或共享库。 网关检测对扩展名为 或 的文件的任何请求,并将它们发送到定义的 服务器进行处理。

CSP 网关管理器

可以使用 网关管理器( 网关管理页面)或直接编辑其配置文件 csp.ini 来配置 网关。

网关管理器是一个小型 应用程序,可以在浏览器中使用它。您可以通过导航到系统管理 > 配置 > CSP 网关管理来访问 网关管理器。默认情况下,它会访问专用 服务器的 网关管理器。

要访问生产 服务器的 网关管理器,请根据需要通过替换 或 localhost:<port_no> 来更改 。

有关配置 网关的信息,请导航至系统管理 > 配置 > CSP 网关管理,然后单击帮助。有关更多详细信息,请参阅 网关配置指南。

注意:CSP Web 网关管理页面的本地化仅基于安装的 的内容(如果有)。如果不存在本地化文件,则 管理页面默认使用嵌入的英文文本。浏览器的语言设置对此机制没有影响。

定义服务器访问

注意:为防止运行时错误,对于通过 运行的高可用性配置, 建议使用启用了粘性会话支持的硬件负载平衡器。

可以定义此 网关可以访问的服务器列表(可能运行 CSP 应用程序的

0
0 134
文章 姚 鑫 · 十月 14, 2022 3m read

第十六章 CSP 中的 HTTP 请求 - %CSP.Request 对象

%CSP.Request 对象

CSP 服务器响应 HTTP 请求时,它将有关传入请求的信息打包到对象中的 %CSP.Request 实例中。可以使用变量 来引用此对象。

URL 属性

要查找传入 请求的 (不包括查询字符串),对象中使用 %CSP.Request 的 属性:

 Write "URL: ", %request.URL

数据属性和 参数

可能包含参数列表(也称为 查询)对象中的 通过其 属性使这些可用。

例如,假设传入的 URL 包含:

/csp/user/MyPage.csp?A=10&a=20&B=30&B=40

可以使用以下命令在服务器上检索这些参数:

 Write %request.Data("A",1)    // this is 10
 Write %request.Data("a",1)    // this is 20
 Write %request.Data("B",1)    // this is 30
 Write %request.Data("B",2)    // this is 40
0
0 176
文章 姚 鑫 · 十月 7, 2022 4m read

第九章 CSP 架构 - CSP 应用程序设置

CSP 应用程序设置

CSP 服务器接收到传入的 HTTP 请求时,它使用本地 CSP 应用程序设置来确定如何处理请求。本节介绍 如何使用 应用程序设置处理 应用程序请求。

启用对 页面的应用程序访问

以下规则管理对页面和类的访问:

  1. 默认情况下,允许用户应用程序访问以下页面:
  • 允许 /csp/sys/ 应用程序及其所有子应用程序的页面
  • 允许使用 isc/studio/templates//isc/studio/usertemplates/ 应用程序的页面
  1. 默认情况下,允许用户应用程序访问所有非 % 类
  2. 用户应用程序还可以访问以下类:
  • %CSP.Broker, , %CSP.Login, , 被允许
  • 和 是允许的,有以下附加条件
    • 不允许所有其他 %ZEN.*
    • 允许所有其他 %Z*
  • 允许所有 类

除了检查 应用程序中的设置外,还会检查允许的类。可以通过导航到管理门户上的系统管理 > 安全 > 应用程序 > Web 应用程序来查看和更改应用程序设置。因此,类引用必须通过两组测试才能被允许。

要允许访问其他类,请在 命名空间中配置 ,其中 是 、 或 。以下部分描述了这些选项

重要提示:首先应用默认规则,然后按列出的顺序应用类别来完成检查。此外,每个关键字都可以被多次调用。

0
0 190
文章 姚 鑫 · 十月 15, 2022 2m read

第十七章 CSP 中的 HTTP 请求 - %CSP.Response 对象和 OnPreHTTP 方法

%CSP.Response 对象和 OnPreHTTP 方法

可以使用对象中的 %CSP.Response 控制将哪些响应标头发送回 HTTP 客户端。 CSP 服务器自动创建此类的一个实例,并将对它的引用放在变量 中。

由于 对象控制 标头,因此通常在类中的 %CSP.Page 的 方法中设置其属性。例如,要重定向传入的 请求,请定义以下 方法:

Class MyApp.Page Extends %CSP.Page
{
// ...

ClassMethod OnPreHTTP() As %Boolean
{
    Set %response.ServerSideRedirect = "C:\CacheSys\csp\samples\redirect.csp"
    Quit 1
}
}

如果使用 CSP 类创建 CSP 页面,请使用以下代码设置标题值:

Class MyPage Extends %CSP.Page
{
ClassMethod OnPreHTTP() As %Boolean
{
    Do %response.SetCookie("name","value")
    Quit 1
}
0
0 118
文章 姚 鑫 · 十月 8, 2022 2m read

第十章 CSP 架构 - Category

Category: AllowPrefix

如果应用程序依赖于调用以同一组字符开头的多个类或包,请使用AllowPrefix选项。

重要提示:如果应用程序依赖于调用上面列出的以外的任何类,则使用它可能是不安全的。建议确定是否需要调用此类,并为部署执行风险评估,以便了解使类可用的含义。

要使给定的Web应用程序能够调用以相同字符集开头的类或程序包,请在命名空间中使用以下命令:

Set ^SYS("Security", "CSP", "AllowPrefix", "web-app-name", "prefix") = value

其中

  • Web-app-nameWeb应用程序的名称,后跟一个尾随斜杠。

要使所有Web应用程序都能使用给定的类或包,请将web-app-name指定为;在这种情况下,可以省略括起来的引号。

  • 前缀是名称的前几个字符。

  • 值为10

如果将其指定为1,则Web应用程序可以调用这些类(或包)。

如果将其指定为,则此Web应用程序无法调用这些类(或包)。

例如,要使应用程序能够调用整个包,请使用以下命令:

请注意,前缀是 ,前缀中的句点表示应用程序无法访问等包。但是,应用程序可以访问包和。

再举一个例子,要使所有应用程序都能够访问以开头的所有包,请使用以下命令:

再举一个例子,假设 应用程序应该能够访问 % 包中除类

0
0 150
文章 姚 鑫 · 十月 1, 2022 2m read

第三章 Caché 服务器页面简介 - 通过 cls 创建 csp 页面

创建第一个 CSP 页面

本节介绍如何以两种不同的方式创建 Hello, World CSP 页面:

创建基于类的 CSP 页面

通过创建 的子类并覆盖其 OnPage 方法来创建 页面。通过此方法写入主设备的任何输出都会自动发送到 浏览器并显示为网页。

  1. 打开Studio
  2. 选择 File > New Project 在本地数据库 USER 命名空间中创建一个新项目。
  3. 在向导的第一页上,输入 作为包名,并输入 作为类名
  4. 在第二页上,选择 CSP 作为类类型。
  5. 单击完成。可以在 类编辑器中看到新的 CSP 类定义:
  1. OnPage 方法中,替换注释:
 ; To do...

使用 语句:

  1. 使用 Build > Compile 保存并编译新类。
  2. 选择视图 > 网页。

会在浏览器中看到 Hello, World

这个 页面也是一个 应用程序,其工作原理如下:

  1. 浏览器向指定命名空间中的本地 Web 服务器发送对 Test.Hello.cls 的请求。

  2. 服务器将此请求传递给 网关,CSP 网关将请求传递给 服务器。在我们的例子中,浏览器、 服务器和 应用程序服务器都运行在同一台机器上。在实际部署中,这些可能位于不同的机器上。

  3. 服务器查找名为 的类并调用其

0
0 174
文章 姚 鑫 · 十月 16, 2022 4m read

第十八章 CSP Session 管理 - 与 CSP.Session 的Sessions

`` 是一种无状态协议;每个请求都不知道以前的请求。虽然这适用于为用户提供简单静态内容的网站,但它使得开发交互式动态 Web 应用程序变得困难。为了解决这个问题,CSP 提供了所谓的Session 管理。

与 的

Session 话表示在特定时间段内从特定客户端到特定应用程序的一系列请求。

CSP 自动提供会话跟踪;无需执行任何特殊操作即可启用它。 CSP 应用程序可以通过对象中的 %CSP.Session 查询和修改其会话的各个方面。 服务器通过 变量使该对象可用。

Session 会话创建

当 客户端向 CSP 应用程序发出第一个请求时,会话开始。

创建新session时, 服务器会执行以下操作:

  1. 创建一个新的会话 号。
  2. 酌情执行许可检查。
  3. 在对象(持久)中创建 的新实例。
  4. 调用当前事件类(如果存在)的 OnStartSession 方法。
  5. 创建一个 以便在会话过程中跟踪来自 客户端的后续请求。如果客户端浏览器禁用了 , 会自动使用 重写(在每个 中放置一个特殊值)来跟踪。

对于的第一个请求,对象中的 的 属性设置为 。对于所有后续请求,它设置为 :

0
0 170
文章 姚 鑫 · 十月 10, 2022 3m read

第十二章 CSP 中的 HTTP 请求 - CSP 运行时环境

CSP 的主要任务是提供动态内容以响应传入的 (超文本传输协议)请求。本节介绍 CSP 如何处理 请求的基础知识。

是一种简单的协议,其中客户端向服务器发出请求。 是一种无状态协议;客户端和服务器之间的连接只持续为服务请求所需的时间。每个 HTTP 请求都包含一个请求标头,该标头指定请求类型(例如 或 )、一个 和一个版本号。请求还可能包含附加信息。 自动确定它应该处理哪些 请求,将它们分派到运行在 服务器上的适当类,并将请求信息打包成易于使用的对象(例如对象中的 )。

CSP 运行时环境

下图显示了 和 请求的架构:

应用程序的运行时环境包括以下内容:

  • HTTP 客户端(例如 Web 浏览器)
  • HTTP 服务器( 服务器,例如 或 )
  • 网关( 服务器的 Caché 插件)
  • 服务器( 服务器在其上运行请求的 应用程序)

HTTP 请求处理

下图说明了 处理 请求时的事件流:

  1. 浏览器(或类似的 客户端)发出 请求。
  2. 服务器确定这是一个 请求并将其分派到 网关(安装在 Web 服务器上)。 2a 服务器可能会提供静态内容,具体取决于应用程序配置。
  3. 网关重新打包请求并将其发送到正确的缓存服务器。
0
0 173
文章 姚 鑫 · 十月 2, 2022 2m read

第四章 Caché 服务器页面简介 - 通过 html 创建 csp 页面

创建基于 HTML 标记的 CSP 页面

要使用 HTML 文件创建 页面,请执行以下操作:

  1. 启动 Studio 并选择 File > New > > 。
  2. 将新 文件的内容替换为以下内容:
<html>
<body>
<b>Hello, World!</b>
</body>
</html>
  1. 选择文件 > 保存。
  2. 在显示的另存为窗口中,双击默认 CSP 应用程序 csp/user
  3. 输入文件名 Hello.csp 并单击另存为以保存文件。
  4. 在 窗口中,选择查看 > 网页。

与前面的示例一样,会看到 显示在浏览器中。

CSP 应用程序可以由单个 页面或一组页面组成。 CSP 应用程序作为一个单元,使用适用于整个应用程序的设置。系统提供 作为默认的 应用程序。

还可以使用文本编辑器或 编辑器创建 文件。将此文件作为 Hello.csp 保存在本地目录 中(其中 是安装 的位置)。

页面的工作方式如下:

  1. 浏览器向本地 服务器发送 请求
  2. 服务器将此请求传递给 网关(连接到 服务器), 网关又将请求传递给 服务器。
  3. 服务器查找文件 ,并将其交给 编译器。
  4. 编译器创建一个名为 的新类,该类具有写出 文件内容的 方法。 (它实际上生成一组方法,每个方法依次从
0
0 298
文章 YuCheng Hu · 八月 1, 2024 3m read

针对 InterSystems IRIS 数据库的一些基本概念。

InterSystems IRIS 是什么

InterSystems IRIS 是基于 Caché/M 语言开发的一个数据库,这个数据库被大量使用在医疗系统中,也是北美地区医疗系统病历和文件管理中默认使用的事实标准。

Caché/M 是什么

Caché/M 是 MUMPS 程序语言 开发的数据库,Caché/M 提供了代码接口,可以直接使用 Caché/M 对数据库来进行操作。

Caché 是一个法语单词,但是又非常容易和英语使用的 Cache 搞混,所以大部分时候使用的是 Caché/M 来表达。

M 表达的意思是 Mumps 程序语言,简称 M 语言,Caché 使用 M 语言构建了不少函数。

InterSystems IRIS 不是开源数据库

因为涉及到医疗系统数据的使用,所以 InterSystems IRIS 并不是一个开源的数据库,你可以使用下面的链接:Evaluate InterSystems Products 8 来下载评估版本。

本文就是根据下载的链接来进行 Windows 安装的教程。

上面的页面在下载之前,你需要进行注册,并且提供你的信息。

双击运行

当下载完成后,可以双击运行安装程序。

我们会看到下面的安装界面:

InterSystems-IRIS-Windows-Install-01

同意许可协议后,单击下一步继续安装。

配置实例名

我们在这里使用默认的就可以,通常使用的 IRIS。

0
0 451
文章 姚 鑫 · 十月 3, 2022 2m read

第五章 CSP 架构 - 组件,信息流

CSP 组件:Web 服务器、CSP 网关、 服务器

使用三个软件组件: 服务器、CSP 网关和 服务器(在 服务器上运行):

  • CSP 组件

服务器和CSP服务器可以由一台或多台计算机实现。在开发过程中,所有三个组件(Web 服务器、 网关和 服务器)可能都位于一台 上。在大规模部署中,可能有多个 服务器和 服务器采用两层或三层配置。

这些组件( 服务器、 网关、 服务器)视为各有一个。它将 描述为好像只提供 页面,尽管 也可以提供 页面,以及其他文本格式和二进制格式,例如图像。

每个组件的作用

服务器是一个软件实用程序,它执行以下操作:

  • 接受传入的 HTTP 请求,通常来自浏览器
  • 检查权限
  • 可以提供静态内容
  • CSP 网关发送对 内容(以 或 结尾的 )的请求

CSP 网关是一个共享库、一个 文件或一个 脚本。它执行以下操作:

  • 确定将请求发送到哪个 服务器。
  • 将请求发送到正确的 服务器。
  • 维护与 服务器的连接(以避免必须不断打开新连接)。

服务器是一个运行在 服务器上的进程,专门用于处理来自 网关的请求。它执行以下操作:

  • 接收应用程序的 请求
  • 检查应用程序配置设置(在管理门户中设置并保存在 文件中)。
0
0 193
文章 Weiwei Gu · 八月 7, 2023 1m read

InterSystems 常见问题解答标题

您可以为以下 Web Gateway 错误消息/系统响应设置单独的错误页面:

  • 服务器错误
  • 服务器繁忙
  • 服务器无法使用
  • 服务器超时
  • 连接关闭

在 Web Gateway 管理界面上进行设置([Management Portal] > [System Administration] > [Configuration] > [Web Gateway Management] > [Configuration] > [Default Parameters])。

在“默认参数”(Default Parameters )菜单的“错误页面”部分中,设置要显示的 html 页面的文件名或发生错误时要重定向到的 URL。

0
0 200
文章 姚 鑫 · 十月 13, 2022 2m read

第十五章 CSP 中的 HTTP 请求 - 处理 CSP 错误

处理 CSP 错误

%CSP.Error是默认的 CSP 错误页面。将其用作创建的任何错误页面的超类。可以使用 %CSP.Error中提供的功能从错误中提取信息。

在授予许可证之前处理 错误

如果已经有一个现有会话并且用户尝试转到一个未找到的页面, 将显示标准错误页面,因为该会话已经有一个许可证。

如果 CSP 应用程序还没有许可证,并且发生以下任何错误,则 CSP 默认显示标准 Web HTTP/1.1 404 Page Not Found 错误消息。可以通过在错误页面(通常是 %CSP.Error的子类)上为应用程序设置以下参数来更改在授予许可之前遇到错误时显示的页面。

如果生成以下错误,CSP 会查看 参数的值:

Cannot grant license.

可以有以下两个值:

  • "" — 返回 HTTP/1.1 404 Page Not Found 错误(默认)

  • 静态 HTML 页面的路径 — 显示命名的静态页面,例如 /csp/samples/static.html

如果生成以下任何错误, 会查看 参数的值:

可以有以下三个值:

  • — 返回 错误(默认)
  • 1
0
0 245
文章 Weiwei Gu · 八月 14, 2023 2m read

在提交的 WRC case中(Intersystems 全球技术支持响应中心),我们经常看到客户提出有关新 Web 网关设置的问题,其中管理门户加载一半,但不显示图像。本文将解释为什么会出现此错误,以及如何修复它。本说明主要针对服务 InterSystems IRIS 实例的 Web 网关,但相同的说明也应适用于服务 Caché 实例的 CSP 网关。

问题:

您刚刚在独立的 Web 服务器上安装了 Web Gateway。当你去加载管理门户时,你发现它无法显示或加载图像,如下所示:

为什么会发生这种情况:

问题是,为了完整加载管理门户,InterSystems IRIS 必须加载许多 .js、.css 和 .png 文件(静态文件)。如果您看到像上面这样的管理门户页面,请随时打开浏览器的开发人员工具小程序,导航到“网络”选项卡,并确认未提供各种 .js、.css 和 .png 组件:

最初安装 Web Gateway 时,我们仅为以下扩展设置映射:

.csp .cls .zen .cxw

这些是客户在自己的自定义应用程序中最常使用的文件扩展名类型,以及用于为 Web Gateway 管理门户提供服务的 .cxw 扩展名。如果您想要加载其他管理门户组件,则必须注册其他文件类型以由 Web 网关提供服务。

如何解决该问题:

要使管理门户完全显示,您必须配置 Web 网关以提供其他文件类型。

0
0 191
文章 Claire Zheng · 一月 21, 2021 3m read

大家好!

我想跟大家分享一个个人项目,该项目始于工作中的一个简单需求:“能否知道我们使用了多少个Caché许可证?”

在阅读社区的其他文章时,我发现了一篇David Loveluck写的非常棒的文章:APM——使用Caché History Monitor

我根据David的这篇文章,开始使用Caché History Monitor并显示所有这些信息。

在面临“选择哪种很酷的技术”这个问题时,我决定使用简单而强大的CSP,这样我的客户可以认识到Caché不仅仅是MUMPS/终端。

在创建了页面以显示许可、数据库增长和CSP会话的历史记录后,我决定为System Dashboard和进程页面创建一个新设计。

我的Caché实例运行得良好。

但是,如果使用IRIS呢?

0
0 175
文章 姚 鑫 · 十月 19, 2022 2m read

第二十一章 CSP Session 管理 - 身份验证和加密

身份验证和加密

在发送到 HTTP 客户端的页面上放置状态信息是很常见的。当从这些页面发出后续请求时,会将状态信息发送回服务器。很多时候,重要的是将状态信息放置在网页上,以便 a) HTTP 源的查看者无法确定状态信息的值,并且 b) 服务器可以验证返回的信息是,实际上,从同一服务器和会话发送出去。通过其加密服务,CSP 提供了一种易于使用的机制来实现这一点。

Session Key

可以使用加密密钥对服务器上的数据进行加密和解密。每个 都有一个唯一的会话密钥(可通对象 Key 属性中的 访问),用于加密会话数据。这种机制是安全的,因为会话密钥永远不会发送到 客户端;它作为 的一部分保留在 服务器上,位于对象中。

可以在类中使用 的 方法手动加密服务器上的值。可以随后使用 Decrypt 方法解密此值。

加密 URL 和 CSPToken

在某些情况下(如下所述),从 文件生成的类会自动加密发送到客户端的 值(对于手动创建的类,必须在类中调用 %CSP.Page的 方法才能执行此操作)。

例如,假设 文件包含定义指向另一个页面的链接的锚标记:

<a href="page2.csp?PI=314159">Page 2</a>

如果此

0
0 191
问题 Michael Lei · 五月 1, 2022

Hi,

我无法连接到本地网络浏览器.

我想打开(http://localhost:57772/csp/sys/UtilHome.csp) 现实:

Caché Server Pages Version 2018.1.6.717.0
Server Availability Error

Server is currently unavailable

如果我调用 CSP.log 得到以下报错:

Access Denied
    Diagnostic
    Failed to connect to 'LOCAL' - Reason: 0 (Connection successfully made but server not responding) (No Retry)

请帮帮我,谢谢!

1
0 236
文章 Michael Lei · 八月 17, 2023 1m read

受到@Evgeny Shvarov 的问题@Ashok Kumar Thangavel 的回复的启发
我已经创建了一个用于把Global下载成 XML 文件的基础

如何使用:
只需调用 http://<your_server>/csp/samples2/dc.Gdown.cls ?GBL=global_name之类的页面

gbl-name 不带首字母 ^(插入符号)
输出具有默认名称 <global_name>.XML 您可以选择。

已知限制:

  • 你必须将它安装在你的源服务器上
  • 它没有经过测试/跨命名空间工作
  • 没有部分下载
  • 错误处理只是基本或缺失

个人还有提升空间。
就是这样:

 ClassExtends%CSP.Page
0
0 336
文章 姚 鑫 · 十月 20, 2022 4m read

第二十二章 CSP Session 管理 - Private Pages

CSP 提供了私有页面的概念。只能从同一 CSP 会话中的另一个页面导航到私有页面。私有页面对于想要限制对某些页面的访问的应用程序很有用。

例如,假设有一个名为 private.csp 的私有页面( 示例页面之一)。用户无法直接导航到 private.csp(例如,通过输入其 )。用户只能从另一个 页面中包含的链接导航到 。引用 页面中包含的链接不能是绝对 ,以 开头。只有相对于引用页面的路径才被私有页面方法正确加密/标记。即:下面的前两个链接将相同的令牌传递给目标私有页面 。

<A HREF='test2.csp'>Link to private page - relative path</A> <BR>
<A HREF='/csp/samples/test2.csp'>
       Link to private page - full application path</A> <BR>

此链接的散列方式不同,无法访问。

<A HREF='http://myserver/csp/samples/test2.csp'>
        Link to private page - absolute path</A>
0
0 120
公告 Michael Lei · 五月 2, 2022

本月我们正式发布VS Code ObjectScript扩展的1.8.0版本,它包含以下增强功能和错误修复。

最大的更新是支持服务器端的项目文件,因为很多人会记得Studio。如果你在客户端工作,VS Code已经有很好的项目管理功能。你可以简单地使用一个文件夹作为一个项目,或者使用多个根目录的工作空间。但是如果你在服务器端工作,你可能会喜欢一些更好的工具管理能力,这就是这个功能的意义所在。更多内容,欢迎查阅文档的新项目章节

1.8.0版本的更新日志

  • 增强功能
    • 增加对服务器端项目的支持 (#851)
    • 实现isfs文件夹的重命名和删除 (#923, #922)
    • 支持isfs和导出过滤器的 "映射 "标志,以过滤从其他数据库映射的软件包(#931)

完整的更新日志在这里

如果您已经安装了ObjectScript扩展,VS Code会自动更新。如果您是一个新用户,请从这里开始。 

0
0 364
文章 Michael Lei · 二月 18, 2024 11m read

1. IRIS RAG Demo

IRIS RAG Demo

这是 IRIS 与 RAG(检索增强生成)示例的一个简单演示。 后端是使用 IRIS 和 IoP用 Python 编写的,LLM 模型是 orca-mini 并由 ollama 服务器提供。 前端是用 Streamlit 编写的聊天机器人。

    1. IRIS RAG 演示](#1-iris-rag-demo)
    • 1.1. 什么是 RAG](#11-what-is-rag)
    • 1.2. 如何工作?
    • 1.3. 安装演示](#13-installation-the-demo)
    • 1.4. 使用方法
    • 1.5. 演示如何运行](#15-演示如何运行)
      • [1.5.1. 前端](#151-前端)
      • 1.5.2. 后台
        • [1.5.2.1. 业务服务](#1521-业务服务)
        • [1.5.2.2. 业务流程](#1522-业务流程)
        • [1.5.2.3. LLM 操作](#1523-the-llm-operation)
        • 1.5.2.4. 矢量操作](#1524-the-vector-operation)
    • 1.6. 一般性说明](#16-一般性说明)

1.1. 什么是 RAG?

RAG 是 Retrieval Augmented Generation(检索增强生成)的缩写,它带来了使用带有知识库的 LLM 模型(GPT-3.

1
0 669
问题 e e · 六月 7, 2021

为什么我用webservice上传文件比csp上传文件快?

webservice用的soap协议也得走http呀。csp直接处理http,少了xml的封装,按理来说应该更快。

经测试,1M的文件,csp慢了0.1s左右。在网关连接到1972后,有0.1s左右的停滞,不知道原因。

有什么办法能够使csp的文件上传速度比webservice快吗?

1
0 398