Daily Archives: September 6, 2005

Post Beta2 changes for Query Notifications

In my What’s new in ADO.NET 2.0 talk, I have one slide and three quick demos on Query Notifications. For DevConnections, I am doing a whole talk on the topic. I was a little worried about filling up an entire session on the topic, but I have learned so much about Query Notifications, caching and SQL Server Service Broker, that I could go on and on about it.

For anyone who has started working with this fantastic new result of collaboration between ADO.NET and SQL Server developers at Microsoft, there are some post-Beta2 changes you should be aware of.

Most importantly, it will, indeed, be possible to use query notifications (easily) when running as a non-admin. Phew!

Also, the plumbing has changed. Through Beta2, notifications come back through either TCPIP or HTTP. This was creating the permission issues above. Now It will be necessary when using SqlDependency or SQLCacheDependency, to do an application wide SqlDependency.Start, which will open up a SQL Connection for the notifications to come through.

Currently there are some settings that need to be tweaked which we haven’t figured out yet so I wouldn’t bother trying to use this post Beta2 anyway. After many many (many) hours of experimenting, I am determined that there is some setting in SQL Server that we are missing. (And I don’t mean enabling service broker on the database). The experimenting pays off with a deeper understanding of how things work.

As soon as I find out the magic combo of settings, I will be sure as ___ 😉 to post them here!

Update: My old friend CompatibilityLevel had come back to bite me in the rear end – and hard. I was using the pubs database. Steve Smith was having the same problem and using the Northwind database. I was using a new install and therefore not inheriting my pubs db where I had changed the setting for pubs to 90. I thought the issue was gone, but it wasn’t.

So, though this deserves it’s own blog post – remember you can check and set the compatibility level. You need 90 for working with Notification Query. I wonder if Service Broker has the same requirement.

sp_dbcmptlevel yourdatabasename

will tell you what the level is.

sp_dbcmptlevel yourdatabasename,90

will set it to 90.

Thanks to Sushil Chordia and Leonid Tsybert at Microsoft for their help with this!!

 

Don’t Forget: www.acehaid.org

Vermont IT Job – .NET Programmer – Telecommute, but must live in Burlington, VT

Software Engineer – Telecommute/Virtual Team

CONIX Systems Inc. designs, develops and maintains software that creates new workflow options and improves operational efficiency and customer service for major banks and service providers.

Description

This position as a Software Engineer is a virtual team (home-based) telecommute position responsible for building and deploying large scale .NET infrastructures and systems.  CONIX supports its’ Software Engineers with a complete home office/development environment including furniture, computers, printers, phones and internet connectivity.  All engineers within CONIX telecommute from home-based offices with VPN access to corporate servers and mainframes.

Responsibilities

Design, document and code solutions for Windows and web-based environments using Microsoft Visual C++ and the Microsoft .NET Framework (C#).
Interface with QA to facilitate performance of unit, integration, system and regression testing.
Develop Visual Studio .NET, InstallShield and database installation packages and scripts.
Perform and support customer installations. 
 
Required

5+ years of full-time hands-on experience across multiple technical disciplines (e.g., client/server or web-based application development, network management, database administration, deployment, operations), in the design and implementation of large scale, complex, distributed applications.
Expert in C++, MFC, C# and ASP.NET with a strong background in Windows Systems and IT.
Clear understanding of Object Oriented Design and Programming.
Experience with Visual SourceSafe.
Thorough, hands-on understanding of the Windows server platforms including Server 2003, SQL Server, .NET Framework, XML, Exchange and IIS.
Experience packaging complex multi-server/service-based application and database installations using MSI and InstallShield.
Customer-facing deployment and support experience.
Bachelor’s degree in Computer Science or related field.
High speed internet access (cable or DSL, no satellite).
Travel up to 20%.
Reside in the Burlington, VT area. 
 

Preferred

Digital image movement, analysis and/or processing
Project management experience/certification
High performance multithreaded, Windows service-based architecture experience with .NET
MCSA, MCSE, MCAD or MCSD. 

Contact Human Resources at jobs@conix.com



Don’t Forget: www.acehaid.org

Company time used for Katrina volunteer work and KatrinaDataProject update

I just got an awesome email from a member of Vermont.NET saying that he has been given permission by his boss to devote his company time to working on volunteer efforts for Katrina. This in addition to his personal time towards the same.

He is hoping to help out on the KatrinaDataProject – which is attempting to aggregate what is quickly becoming too many places to post and search for information on Katrina survivors.

If you have emailed the KatrinaDataProject folks for volunteering (that’s john at katrinadataproject dot com), John says he has had 50 reponses so far (hooray) and is putting together an email list to respond to everyone more efficiently.



Don’t Forget: www.acehaid.org

Why non-HTTP web services are so much cooler (for non-plumbers) with WSE 3.0

In WSE 2.0 we had the ability to run web services over TCPIP and other transports. Did you use it? I didn’t. Too confusing. Loved the demos at TechEd & PDC, though. The Messaging API has in it SoapSender and SoapReceiver, but it is disconnected from all of the security I was doing with WSE – or maybe I just couldn’t ever figure it out. I think it even required a lot more angle bracket programming, too,  though I don’t recall now.

With WSE 3.0, Microsoft has made transport independent Web Services much more accessible. You can now write web services the way most of us luddites are used to, with the VS IDE (or even graduate to contract first web services) – – add in all of your WSE goodness – i.e. policies for security, etc.

With a HTTP hosted web service, you write the web service and build it in VS2005, deploy it if necessary (I’m still working in a development environment), then write your client, and ( in the simple world), add a web reference which creates a proxy, then make calls to the proxy.

With the example of a console application hosted web service, you write the web service and write a console app that fires up the web service in a URI with a tcp scheme.

The key code for the console app is

1) Create a URI that will be the endpoint
dim myTCPServiceURI as URI= new URI(“soap.tcp://mytcphost/mynicewebservice”)

2) Add the endpoint and the class for your web service to the Microsoft.Web.Services3.Messaging SoapReceivers
SoapReceivers.Add(new EndPointReference(myTCPServiceURI), GetType(myService))

Then you can fire up this console app and it will sit and wait for messages on that URI, just the way IIS does, but in the case it’s coming through TCP. You can also specifiy a port eg: soap.tcp:90. The web service processing just happens right there.

On the client side, the code is not too much different than calling an HTTP Web Service.

For those who only know how to get at web services through web references, remember that this is an existing HTTP Web Service, right? So you can get a proxy to that the way you know, by pointing to the original HTTP Web Service. Otherwise, you can use the wsewsdl3 tool (included with the SDK) that will create a  proxy class directly from WSDL. The proxy is just to make it easier to code against the web service and has nothing to do with where the endpoint is. We will still access it through TCP when we run our client app.

1) Create a proxy  web reference (let’s say that becomes localhost)
2) Instantiate the proxy
Dim myWS as localhost.MyServiceWSE=new localhost.MyServiceWSE()

3) Change the URL to point to the uri that is waiting on the TCP Wire (above)
myWS.URL=”soap.tcp://mytcphost/mynicewebservice”

4) Define the operation that will be called (eg Web Method)
myWS.RequestSoapContext.Addressing.Action=new Action(“GetSomeData”)

5) Create a ReplyTo endpoint (as per the WS-Addressing specs)
myWS.RequestSoapContext.Addressing.ReplyTo=new ReplyTo(new URI “soap.tcp://receiver”)

6) SetPolicy if that is required
myWS.SetPolicy(“mypolicy”)

7) Make your call!

Like I always say, if I can do it, so can you! More importantly, it’s taken a while for me to finally comprehend it. Which says to me, that Microsoft has gotten it to the proper place for non-plumbers.

Don’t Forget: www.acehaid.org

Wells College first year as co-ed, the early days as reported by the NY Times

This is a really tough tough issue. I would not be the person I am today if it hadn’t been for going to an all woman’s college where I truly had the freedom to just be myself and over the course of those four years, discover my adult self. Wells College insisted that it was either go co-ed to attract more students, or eventually shut down.

School is in session. Here is an article from the NY Times on the first weeks.

Don’t Forget: www.acehaid.org

Can’t take the Katrina dog stories

Why is it that with thousands of people dead and immeasurable suffering, it’s the dog stories that I can’t stomach, I won’t watch, I can’t read. Damn you CNN for putting it front and center on the home page.

I have seen images of floating bloated human bodies. But they become “bodies” – somehow there’s a disconnect. We know there are still people undiscovered in their homes hoping and waiting – no food, no water, run out of their meds. But it’s hearing about people euthanizing their dogs and that the larger dogs are fighting the gas (I have big dogs), seeing the dogs on the rooftops being left behind (not by choice, not by anybody’s real choice), hearing them suddenly being referred to as stray dogs and something to fear, knowing that eventually the answer to “wild roaming packs of dogs” will be to shoot them. This I can’t bear. Why? Why is that more powerful?



Don’t Forget: www.acehaid.org