在WCF中,我不能将服务写入客户端接收的流吗?
WCF支持流请求,响应或两者.我想支持一种情况,即数据生成器(流式传输请求时的客户端或流式响应时的服务器)可以在流上写入.这支持吗?
类比是来自ASP.NET请求的Response.OutputStream.在ASPNET中,任何页面都可以在输出流上调用Write,并且客户端会接收内容.我可以在WCF服务中执行类似的操作 - 在客户端接收的流上调用Write吗?
让我用WCF插图解释一下.WCF中最简单的Streaming示例是将FileStream返回给客户端的服务.这是一个流式响应.实现此目的的服务器代码如下:
[ServiceContract]
public interface IStreamService
{
[OperationContract]
Stream GetData(string fileName);
}
public class StreamService : IStreamService
{
public Stream GetData(string filename)
{
return new FileStream(filename, FileMode.Open)
}
}
Run Code Online (Sandbox Code Playgroud)
客户端代码是这样的:
StreamDemo.StreamServiceClient client =
new WcfStreamDemoClient.StreamDemo.StreamServiceClient();
Stream str = client.GetData(@"c:\path\on\server\myfile.dat");
do {
b = str.ReadByte(); //read next byte from stream
...
} while (b != -1);
Run Code Online (Sandbox Code Playgroud)
(例子来自http://blog.joachim.at/?p=33)
清楚吧?服务器将Stream返回给客户端,客户端调用Read.
客户端是否可以提供Stream,并且服务器可以在其上调用Write?
换句话说,不是拉模型 - 客户端从服务器提取数据 - 它是推模型,客户端提供"接收"流并且服务器写入其中.服务器端代码可能类似于:
[ServiceContract]
public interface IStreamWriterService
{
[OperationContract]
void SendData(Stream clientProvidedWritableStream); …Run Code Online (Sandbox Code Playgroud) 如果我在第一次触摸时抬起手指,那么它会识别下一次触摸就好了.只有当我持续第一次触摸然后尝试用不同的手指同时触摸另一个区域时.然后它将错误地将第二次触摸记录为再次从第一次触摸开始.
更新它与touchesEnded有关,直到最后的触摸结束才被调用(它不关心你是否已经有5个其他触摸结束,然后你终于放弃了最后一个...它将它们全部调用结束一旦最后的触摸结束)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch* touch = [touches anyObject];
NSString* filename = [listOfStuff objectAtIndex:[touch view].tag];
// do something with the filename now
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
ITouch* touch = [touches anyObject];
NSString* buttonPressed = [listOfStuff objectAtIndex:[touch view].tag];
// do something with this info now
}
Run Code Online (Sandbox Code Playgroud) 我从PHP调用python脚本.
python程序必须根据传递给它的参数返回一些值.
这是一个示例python程序,它将为您提供我当前正在做的事情的基本概念:
#!/usr/bin/python
import sys
#get the arguments passed
argList = sys.argv
#Not enough arguments. Exit with a value of 1.
if len(argList) < 3:
#Return with a value of 1.
sys.exit(1)
arg1 = argList[1]
arg2 = argList[2]
#Check arguments. Exit with the appropriate value.
if len(arg1) > 255:
#Exit with a value of 4.
sys.exit(4)
if len(arg2) < 2:
#Exit with a value of 8.
sys.exit(8)
#Do further coding using the arguments------
#If program works successfully, exit with …Run Code Online (Sandbox Code Playgroud) JavaScript和DOM有什么区别?DOM与Firefox有关吗?DOM只是HTML元素的源顺序吗?
有没有人知道,如果供应商提供或者有一个网站可以下载市场上现有的Android设备的AVD配置文件,那么你可以在模拟器中运行你的应用程序,基本上看看它们将如何在所述设备上运行?
我知道创建一个新设备非常容易,但如果可以为每个设备下载配置文件并运行它,那就太棒了.
我想在我的应用程序中实现一个分层系统,并考虑创建一堆透明位图,向它们添加内容然后将它们相互叠加,如何在不将每个像素设置为(0,0,0)的情况下完成,0).我使用Pure win32,而不是MFC,谢谢.
我不确定这是否可能.如果没有,请告诉我.
我有一个更新3个字段的PDO mysql.
$update = $mypdo->prepare("UPDATE tablename SET field1=:field1,
field2=:field2,
field3=:field3
WHERE key=:key");
Run Code Online (Sandbox Code Playgroud)
但我只想field3更新$update3 = true;(意味着更新field3由条件语句控制)
这可以通过单个查询完成吗?
我可以用我更新的2个查询来做field1,field2然后检查布尔值,field3如果需要在单独的查询中更新.
//run this query to update only fields 1 and 2
$update_part1 = $mypdo->prepare("UPDATE tablename SET field1=:field1,
field2=:field2
WHERE key=:key");
//if field3 should be update, run a separate query to update it separately
if ($update3){
$update_part2 = $mypdo->prepare("UPDATE tablename SET field3=:field3
WHERE key=:key");
}
Run Code Online (Sandbox Code Playgroud)
但希望有一种方法可以在1个查询中完成此操作?
在Javascript中,我们可以直接调用字符串文字的方法而不将其括在圆括号内.但不适用于其他类型,如数字或函数.这是一个语法错误,但有没有理由为什么Javascript词法分析器需要将这些其他类型括在圆括号中?
例如,如果我们使用alert方法扩展Number,String和Function并尝试在文字上调用此方法,则它是Number和Function的SyntaxError,而它适用于String.
function alertValue() {
alert(this);
}
Number.prototype.alert = alertValue;
String.prototype.alert = alertValue;
Function.prototype.alert = alertValue;
Run Code Online (Sandbox Code Playgroud)
我们可以直接在字符串对象上调用alert:
"someStringLiteral".alert() // alerts someStringLiteral
Run Code Online (Sandbox Code Playgroud)
但它是关于数字和函数的SyntaxError.
7.alert();
function() {}.alert();
Run Code Online (Sandbox Code Playgroud)
要使用这些类型,我们必须将其括在括号内:
(7).alert(); // alerts "7"
(function() {}).alert(); // alerts "function() {}"
Run Code Online (Sandbox Code Playgroud)
更新:
@Crescent的链接和@Dav和@Timothy的答案解释了为什么7.alert()失败,因为它正在寻找一个数值常量,并且为了超越它,插入额外的空格或额外的点.
7 .alert()
7..alert()
7. .alert();
Run Code Online (Sandbox Code Playgroud)
是否有类似的语法原因,为什么在调用方法之前需要将函数括在括号中?
我不熟悉解释器和词法分析器,知道它是否可以通过某种先行的方式解决,因为Ruby是一种动态语言并且可以解决这个问题.例如:-
7.times { |i| print i }
Run Code Online (Sandbox Code Playgroud)
更新2:
@ CMS的答案一直在理解为什么功能不起作用.以下陈述有效:
// comma operator forces evaluation of the function
// alerts "function() {}"
<any literal>, function() {}.alert();???????
// all examples below are forced …Run Code Online (Sandbox Code Playgroud) 我在UITextView中有一些文本.我不希望它是可选择的.我怎样才能做到这一点?
我是powershell的新手.我有一个简单的powershell脚本,只是替换文本但我发现正则表达式替换在生成输出时将我的多行数据源转换为单行文本.我希望保留换行符.这是脚本的愚蠢版本.
$source=(Get-Content textfile.txt)
$process1 = [regex]::Replace($source, "line", "line2")
$process1 | out-file -encoding ascii textfile2.txt
Run Code Online (Sandbox Code Playgroud)
您可以使用这样的简单行创建一个测试文件调用textfile.txt来测试它
line
line
Some line
More line here
Run Code Online (Sandbox Code Playgroud)
我错过了一些明显的事吗?
谢谢,法德里安
iphone ×2
javascript ×2
php ×2
.net ×1
android ×1
c ×1
c++ ×1
cocoa-touch ×1
database ×1
dom ×1
drawing ×1
ipad ×1
lexer ×1
methods ×1
multi-touch ×1
mysql ×1
objective-c ×1
pdo ×1
powershell ×1
python ×1
regex ×1
streaming ×1
syntax ×1
touchesbegan ×1
uitouch ×1
wcf ×1
winapi ×1
xhtml ×1