我正在使用最新的Phone 7 RTM工具(今天下载,2010年10月7日).
我想在这里做一件简单的事情:
当用户在地图控件上点击一次时,我想在那里放一个图钉.另外,我想保持地图控件的常规内置行为(点击两次以缩放).
(如果不能保持这两种行为,那么可能需要长时间按下地图才能放置图钉).
在尝试解决这个问题时,我遇到了有关Phone7控件地图所做更改的文档:http: //msdn.microsoft.com/en-us/library/ff955762.aspx
然后我看到了新类MapInputEventArgs,它有一个ViewportPoint成员.
在查看常规SilverLight地图控件上的代码示例时,我看到如下所示:
private void OnMouseClick(object sender, MapMouseEventArgs e)
{
Point clickLocation = e.ViewportPoint;
Location location = x_Map.ViewportPointToLocation(clickLocation);
Pushpin pushpin = new Pushpin();
m_PushpinLayer.AddChild(pushpin, new Location(latitude, longitude));
}
Run Code Online (Sandbox Code Playgroud)
但在Phone7的情况下,我找不到合适的事件处理程序,我找不到谁在地图控件中使用MapInputEventArgs.在谷歌搜索它只获得1个结果!
那么,"点击一次"的适当事件在哪里,以及如何在此事件被触发后获得ViewportPoint?
提前致谢.
我有一个N-Tier应用程序,其构建如下:
在IIS7的服务器端坐着一个ASP.Net应用程序,它公开WCF服务上的方法.这些方法使用EF4与DB通信.用Silverlight 4.0编写的客户端正在调用WCF服务上的方法.
WCF服务公开此方法:
[OperationContract]
void DeleteItem(int i_ItemId);
Run Code Online (Sandbox Code Playgroud)
我不熟悉WCF服务,但我认为接下来的观察结果是正确的(如果我错了,请纠正我):
1)如果我按原样保留此方法/服务,任何知道我的服务位于http://www.mysite.com/myservice.svc的人都可以打开VisualStudio,打开"添加服务参考"并开始拨打电话到DeleteItem().
2)如果我尝试通过删除MEX端点来解决上述问题,仍然可以使用一些手动编码来调用服务.
因此,我试图解决这两个问题,开始学习WCF中的一些内置安全功能.快速浏览后,我想我可以使用以下绑定配置,以便拨打服务时需要用户名和密码:
<wsHttpBinding>
<binding name="RequestUserName" >
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
Run Code Online (Sandbox Code Playgroud)
试图采用这种解决方案,我首先想到的是:当用户登录客户端时,客户端使用用户的名称和密码作为WCF调用的凭据.在服务器端,这些凭据将根据数据库进行验证.
现在的问题是,用户已知这些凭证(用户名和密码),因此他可以使用它们以我已经提到的方式调用DeleteItem().
从这里我想出了两个解决方案:
1)使用userName和password作为凭证,我将在客户端使用硬编码密钥.在XAP中加扰Dll可能会阻止某人获取此密钥.
2)当用户登录客户端时,服务器会发送某种临时令牌(GUID或其他内容),客户端可以使用该临时令牌在此通信会话期间对其进行身份验证(比方说,直到用户关闭客户端) .
我的问题是:
第一个解决方案提供的安全级别以及为了破解它而需要努力的程度是多少?
如果第一个解决方案非常容易破解,那么在WCF中是否有内置的方法来管理我在第二个解决方案中提到的令牌系统?
欢迎其他可以达到范围的解决方案.
我有XML文件存储在BLOB存储中,我试图找出更新它们的最有效方法(和/或添加一些元素).在WebRole中,我想出了这个:
using (MemoryStream ms = new MemoryStream())
{
var blob = container.GetBlobReference("file.xml");
blob.DownloadToStream(msOriginal);
XDocument xDoc= XDocument.Load(ms);
// Do some updates/inserts using LINQ to XML.
blob.Delete();//Details about this later on.
using(MemoryStream msNew = new MemoryStream())
{
xDoc.Save(msNew);
msNew.Seek(0,SeekOrigin.Begin);
blob.UploadFromStream(msNew);
}
}
Run Code Online (Sandbox Code Playgroud)
考虑到效率,我正在考虑这些参数:
有些事要提到:
我的xml文件大约是150-200 KB.
我知道XDocument将整个文件加载到内存中,并且在流中工作(XmlWriter和XmlReader)可以解决这个问题.但我认为这将需要使用BlobStream,这可能导致交易效率降低(我认为).
关于blob.Delete(),没有它,blob存储中上传的xml似乎在它的末尾缺少一些结束标记.我认为这是由与旧数据的冲突引起的.我在这里可能完全错了,但使用删除解决了它(虽然花费了另外一笔交易).
我提供的代码是一个很好的实践,或者考虑到我提到的参数可能存在更有效的方法吗?
我在React Native应用程序中使用Realm.io数据库.我有一个简单的写命令:
Realm.write(() => {
Realm.create('Dog', { name: 'Bob'}, true);
});
//Few lines below, make a query for the Bob the dog.
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因写入操作花费的时间超过几毫秒,我怎样才能确保当我查询Bob的狗时,我会得到更新的对象?
有没有办法让write操作返回一个promise或者simillar,所以我可以确保只在写操作成功后执行代码?
我有一个简单的反应表单,以及我的MobX商店中的两个observable:
@observable personalInfo = {
email: '',
gender: 1,
birthDate: null,
location: ''
};
@observable personalInfoInEdit = null;
Run Code Online (Sandbox Code Playgroud)
当加载个人信息的形式时(在ctor中)我在我的商店调用一种方法:
reset_PersonalInfoInEdit() {
this.personalInfoInEdit = observable(this.personalInfo);
}
Run Code Online (Sandbox Code Playgroud)
它的用量只是重置"编辑中"对象,用原始数据中的数据填充它.如果用户按"保存更改",则"编辑"对象将被复制到原始对象.
用另一个observable调用observable()是否有效?对此有任何副作用?(似乎工作)
如果没有,是否有设计模式可以优雅地处理"编辑"对象的这种情况.
我正在尝试使用新的Graph API做一个非常基本的事情.
我已经知道如何找到我的朋友:" https://graph.facebook.com/me/friends?access_token=4333ed34d ......"
但如果我的朋友的身份证号码是123456,那么我想得到他的朋友:" https://graph.facebook.com/123456/friends?access_token=4333ed34d ......"
但我得到一个例外:
"远程服务器返回错误:(500)内部服务器错误."
为什么我不能这样做?从API中提问是一项非常简单的任务.
我想做一件简单的事 - 拿到我所有的专辑.问题是专辑名称是非英语(他们是希伯来语).
检索相册的代码:
string query = "https://graph.facebook.com/me/albums?access_token=...";
string result = webClient.DownloadString(query);
Run Code Online (Sandbox Code Playgroud)
这是其中一个返回的专辑的样子:
{
"id": "410329886431",
"from": {
"name": "Noam Levinson",
"id": "500786431"
},
"name": "\u05ea\u05e2\u05e8\u05d5\u05db\u05ea \u05d2\u05de\u05e8 \u05e9\u05e0\u05d4 \u05d0",
"location": "\u05e9\u05e0\u05e7\u05e8",
"link": "http://www.facebook.com/album.php?aid=193564&id=500786431",
"count": 27,
"type": "normal",
"created_time": "2010-07-18T06:20:27+0000",
"updated_time": "2010-07-18T09:29:34+0000"
},
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,问题出在"name"属性中.我没有希伯来字母,而是获得那些代码(这些代码不是垃圾,它们是一致的 - 每个代码可能代表一个希伯来字母).问题是,如何将这些代码转换为非英语语言(在我的例子中,希伯来语).或者问题是我如何使用webClient对象检索相册.也许改变webclient.Encoding不知何故?
我该怎么做才能解决这个问题?
提前致谢.
我对Java中的这两个接口有疑问.设置扩展集合,但不添加任何内容.它们完全一样.我在这里错过了什么吗?
这段代码工作正常:
Parallel.ForEach(photos, item =>
{
WebClient webClient = new WebClient();
webClient.DownloadFile(item.src_big, "C:\\pic" + item.ID + ".jpg");
});
Run Code Online (Sandbox Code Playgroud)
虽然此代码抛出"WebClient请求期间发生异常".:
foreach (Photo p in photos)
{
Task.Factory.StartNew(() =>
{
WebClient webClient = new WebClient();
webClient.DownloadFile(p.src_big, "C:\\pic" + p.ID + ".jpg");
});
}
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
1)在第一个代码中,我使用多个WebClient对象进行下载.第二个代码也是如此,为什么我会得到异常呢?
2)我正在尝试这两个版本来确定什么是下载照片的最快方式,在我的情况下从Facebook.我想知道是否有另一种方法更快,也许WebRequest.Create()?
我正在使用Azure通知中心向Android/iPhone设备发送推送通知.
我的总体流程是:
1.每次用户打开移动应用程序时,都会向PNS(APNS/GCM)发出呼叫并获取更新的设备令牌.
2.然后将设备令牌发送到服务器.
3.服务器执行以下代码来注册令牌:
RegistrationDescription reg;
if (deviceType == DeviceType.Iphone)
{
reg = new AppleRegistrationDescription(deviceToken, new string[] { userId.ToString() });
}
else
{
reg = new GcmRegistrationDescription(deviceToken, new string[] { userId.ToString() });
}
reg = await hub.CreateRegistrationAsync(reg);
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但我的问题是,我是否应该出于某种原因在我的服务器中跟踪这些设备令牌?例如,将它们保存在一个表中供以后使用或我可能面临的其他场景,或者它打算使用这种方式(不将它们保存在表中).
push-notification apple-push-notifications google-cloud-messaging azure-notificationhub
c# ×3
facebook ×2
azure ×1
bing-maps ×1
collections ×1
encoding ×1
hebrew ×1
interface ×1
java ×1
mobx ×1
non-english ×1
promise ×1
pushpin ×1
react-native ×1
reactjs ×1
realm ×1
set ×1
wcf-binding ×1
wcf-security ×1
webclient ×1
xml ×1