WebServices working!

Posts   
1  /  2  /  3  /  4
 
    
dvdstelt
User
Posts: 22
Joined: 06-Dec-2005
# Posted on: 07-Jan-2006 21:47:45   

Answer wrote:

Extract zip file to your llblgen folder. You can then select the task performer from the generation menu...

Unfortunatly not... First of all, all files are in a root folder called "VS.NET2005WebServiceTemplates". When the three folders in that folder are moved to the LLBLGen Pro folder, you get a nasty XML error, because there's an illegal character inside the template config file.

Then I got this error :

Task WebServiceHelperGenerator Could not find template 'WebServiceHelperTemplate'. It is not defined in the template set config file.

Now, I then figured out that I should also select the C# template for SQL2005 with web service support (there's a typo in there btw, it's "serice support", without a v).

Then I tried to run it over my already existing project, generated without webservice support, but got a nice "Object reference not set" error.

Then I generated all code into a new clean folder, and it worked. I'm now going to check out what has been generated. simple_smile

Answer
User
Posts: 363
Joined: 28-Jun-2004
# Posted on: 08-Jan-2006 18:40:10   

Hmm, i dont remember putting them in that folder, but okay simple_smile ..These templates are by no means a polished 3rd party addon. They are meant to serve as a quick helper until frans adds the functionality in the next version. But most likely you will probably want to do some modding/tweaking to them to fit your project etc..but they will get you started..

As as side note, you might want to check out my last post in here http://www.llblgen.com/tinyforum/Messages.aspx?ThreadID=4973

it explains some of the issues (for me anyway) that i discovered with llblgen going over the web service wire simple_smile

dvdstelt
User
Posts: 22
Joined: 06-Dec-2005
# Posted on: 16-Jan-2006 12:49:05   

Or check this thread, where discussion seems to continue:

http://www.llblgen.com/tinyforum/Messages.aspx?ThreadID=5139

Reginald
User
Posts: 24
Joined: 20-Jan-2006
# Posted on: 21-Jan-2006 13:36:32   

Otis, is it possible to get my hands on this 3rd party add-on? I'm not yet a customer and dont have access to the 3rd party add-on's. Or can someone email it to me (reginald dot henderson at gmail dot com)?

Also, when is the 2.0 version going to be released?

-Reginald

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39615
Joined: 17-Aug-2003
# Posted on: 23-Jan-2006 11:15:02   

Reginald wrote:

Otis, is it possible to get my hands on this 3rd party add-on? I'm not yet a customer and dont have access to the 3rd party add-on's. Or can someone email it to me (reginald dot henderson at gmail dot com)?

These particular templates don't have a readme etc. now, they're very rough. I'm not going to mail them to a potential customer, sorry. It's not that I don't want you to have them, but a potential customer doesn't know (in general) the system that good, and using these templates might cause problems which can result in a bad experience.

Also, when is the 2.0 version going to be released?

I hope to be done programming at the end of march, beta in april, so that's the rough timetable simple_smile

Frans Bouma | Lead developer LLBLGen Pro
Reginald
User
Posts: 24
Joined: 20-Jan-2006
# Posted on: 23-Jan-2006 14:32:24   

and using these templates might cause problems which can result in a bad experience.

I can respect that. I can really respect that. I think I'm going to buy in the next couple of weeks so I'll hit you up for the templates at that time. The support here is reason enough to buy the product.

And I'll have to be one of your first beta testers when you're ready. Happy coding.

-Reginald

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39615
Joined: 17-Aug-2003
# Posted on: 23-Jan-2006 21:09:38   

Reginald wrote:

and using these templates might cause problems which can result in a bad experience.

I can respect that. I can really respect that. I think I'm going to buy in the next couple of weeks so I'll hit you up for the templates at that time. The support here is reason enough to buy the product.

Cool! simple_smile Thanks! simple_smile And thank you for understanding simple_smile

Frans Bouma | Lead developer LLBLGen Pro
Otis avatar
Otis
LLBLGen Pro Team
Posts: 39615
Joined: 17-Aug-2003
# Posted on: 25-Jan-2006 12:21:34   

I've updated the archive with a readme and have removed the '&' from the xml so it will properly load simple_smile

Frans Bouma | Lead developer LLBLGen Pro
abdev
User
Posts: 1
Joined: 07-Feb-2006
# Posted on: 07-Feb-2006 21:56:24   

Ok sorry if I am dense here, but I am trying to get all this to work. Since WebServices will be only way to do this with Vista, I wanted to get this done now.

Ok I downloaded the item from the 3rd party section I regenerated the code.

I built a SchemaImporter (I am assuming that I have to have a name entry for every entity type name I have (correct?)

Build this into a library, sign it and get it into the GAC? What would the name space be equal to for the serialization (the namespace I entered on the generated code piece)? Also the compileUnity.ReferencedAssemblies.Add - I am guessing this needs a full path to the assembly.

Thanks for any help here............

The readme is nice until getting to the client side work. simple_smile

dvdstelt
User
Posts: 22
Joined: 06-Dec-2005
# Posted on: 13-Feb-2006 11:22:18   

I'm still confused here.

My proxy returns a "webservice.entitycollection" object, whereas I want it to be a "mynamespace.helperclasses.entitycollection" object. I cannot simply cast it to a helperclasses.entitycollection.

When in I put "mynamespace.helperclasses.entitycollection" into my templates, it does work. Problem then is, that I can only work with THAT EXACT namespace in all my projects. When going to the next project, or a POC project or something, the schemaimporter doesn't work anymore.

Kinda sucks.

Any suggestions? Am I seeing something wrong here?

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39615
Joined: 17-Aug-2003
# Posted on: 13-Feb-2006 12:28:55   

you could opt for returning an IEntityCollection2 object (haven't tried, probably does't work with the webservice 'system')

It indeed is kind of hardcoding whatever you want to use and ALSO have to modify the machine.config to get it to work... and indeed, it's not great to say the least. MS will never learn, I'm afraid.

Frans Bouma | Lead developer LLBLGen Pro
dvdstelt
User
Posts: 22
Joined: 06-Dec-2005
# Posted on: 13-Feb-2006 13:12:34   

I got it to work anyhow... For some reason, I thought it could not have more than one SchemaImporter per machine.config. Silly me. flushed

Anyway, it can also be done by HelperClasses.EntityCollection. I'm still working with the full namespace currently though, but now with the SchemaImporter Extensions. Like I explained in the doc I send you.

sburtonctr
User
Posts: 9
Joined: 16-Feb-2006
# Posted on: 17-Feb-2006 23:35:00   

I have been following the discussion on Web Services and have been able to create a web service that returns the EntityCollection. The problem in my evaluation of the product is that the consumer of the Web service is SSIS and we do not reference the LLBL business tier, “nor do I think it is possible in SSIS”, objects to consume the Web Service like you would in a winform application or a WebSite. You make the Web Reference and it generates the proxy, but it seems that you must have a reference to the LLBL objects that contain the class being passed. Has anyone used SSIS to consume LLBL web services or is there something else I must do to get this part to work.

-- This is a sample of my web service.

[WebMethod] public EntityCollection GetAllCommunities( ) {

DataAccessAdapter communityAdapter = new DataAccessAdapter( ); EntityCollection c = new EntityCollection(new CommunityEntityFactory()); communityAdapter.FetchEntityCollection( c, null );

  return c;

}

I have not really had a lot of time with the product, but do you have any suggestions on how I should proceed with this. So far I tried hiding the IXmlSerializable methods to customize the XML message generated in the Entity and Collection classes so SSIS would not have to know about the LLBL objects and the default serialization xml structure. However, I still have a problem with comsuming the Web service with the schema problem defined in early postings. It works with Winforms and Website access to Web services but not with SSIS. I think this is because the proxy seems to reference the BBLB business objects.

Any suggestions:

Thanks

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39615
Joined: 17-Aug-2003
# Posted on: 18-Feb-2006 09:48:09   

What exactly does SSIS WANT to receive? This is a bit unclear to me. I haven't worked with SSIS and webservices, so I'm no expert on this, but if you can specify what SSIS wants to receive as data, I can perhaps point you to the direction how to convert an entity collection to that format (as it already produces Xml through the WriteXml() methods)

Frans Bouma | Lead developer LLBLGen Pro
dan
User
Posts: 17
Joined: 23-Feb-2006
# Posted on: 23-Feb-2006 18:56:55   

Hello,

Thank You for addon

I've followed all the steps in readme file, at moment my webservice methods return System.Xml.XmlElement though declared as:

    [WebMethod]
    public KasutajaEntity getUser()

As I understand if followed all the steps in readme correctly my web method should return Entity objects, not XmlElemnt, is it correct?

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39615
Joined: 17-Aug-2003
# Posted on: 25-Feb-2006 12:45:36   

dan wrote:

Hello,

Thank You for addon

I've followed all the steps in readme file, at moment my webservice methods return System.Xml.XmlElement though declared as:

    [WebMethod]
    public KasutajaEntity getUser()

As I understand if followed all the steps in readme correctly my web method should return Entity objects, not XmlElemnt, is it correct?

How do you test this? The webmethod under the hood of course returns an xml element, as that's what's happening under the hood, but in YOUR code consuming the service, you use the generated stub class which should return an entity. Could you paste some of your code? Thanks. Also could you examine the generated stub class and see what code is generated there?

Frans Bouma | Lead developer LLBLGen Pro
dan
User
Posts: 17
Joined: 23-Feb-2006
# Posted on: 25-Feb-2006 16:29:32   

Hello

Thank you for reply

The problem was in my machine config, now I can move entities around webservice The generated Reference.cs had to be edit though

move this line -> using ShopNet.Business.EntityClasses;

above -> namespace ShopNet.TestingClient.ShopNet.Ws {

and rename

public ShopNet.Business.EntityClasses.KasutajaEntity getUser() {

to

public KasutajaEntity getUser() {

and now its working, but is there any way to do it without editing Reference.cs?

Thank You

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39615
Joined: 17-Aug-2003
# Posted on: 28-Feb-2006 11:13:20   

This is something in the converter classes but I don't think you should have to alter the generated stub class. The using statement is ok there, as well as the namespace references, or did it fail to compile?

Frans Bouma | Lead developer LLBLGen Pro
PatrickHofman avatar
Posts: 14
Joined: 22-Aug-2005
# Posted on: 06-Mar-2006 15:33:32   

It is only working with Adapter, or is there also a template for SelfServicing. If not, why isn't it possible?

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39615
Joined: 17-Aug-2003
# Posted on: 06-Mar-2006 16:50:51   

PatrickHofman wrote:

It is only working with Adapter, or is there also a template for SelfServicing. If not, why isn't it possible?

SelfServicing isn't useful in a distributed scenario, as it supports lazyloading, which is triggered for example if you access a field mapped on a relation. This then causes the code to load the data, however this call is on the client and the data is on hte server, and the db is therefore thus not found. Adapter has a disconnected model, so the persistence logic is only available on the server.

Frans Bouma | Lead developer LLBLGen Pro
PatrickHofman avatar
Posts: 14
Joined: 22-Aug-2005
# Posted on: 06-Mar-2006 17:03:06   

Good point...

yk
User
Posts: 10
Joined: 07-Mar-2006
# Posted on: 08-Mar-2006 05:19:23   

Otis wrote:

There's a problem.

Hierarchical entities returned from a webmethod, with polymorphism.

Say I have the webmethod: [WebMethod()] public CustomerEntity GetCustomer(string customerID) { ... }

now, what if I return a FemaleCustomerEntity (subtype of CustomerEntity) ? -> the client creates a CustomerEntity, because that's what the method's return type is, which means that there are just the customer fields, while the xml contains the FemaleCustomerEntity fields.

I don't have a clue how to solve this though, apparently, MS didn't think through this well enough, as is often the case when it comes to something related to Xml disappointed

I think what you are describing is beyond the realm of web services. What cannot be described by the WSDL (in this case inheritance) is simply out of scope. You can have two methods -- GetCustomer and GetFemaleCustomer if you need to return both types.

Think about it - the consuming application cannot possibly know that you might return a female customer, and you cannot assume the consuming application will even be written in a language that supports inheritance (or objects -- e.g. ASP).

mkamoski avatar
mkamoski
User
Posts: 116
Joined: 06-Dec-2005
# Posted on: 24-May-2006 15:20:55   

Otis, Answer, AnyoneElseWhoKnows--

Please help.

I have two quick questions regarding the templates that include web service support.

As background, note that...

--I downloaded the templates from http://www.LLBLGen.com , >Customer's Area, >3rd Party.

--I have read this current thread.

--I have read the "readme.doc" included with the template download.

While some of my questions were addressed in the threads and documentation, I need to explicity double-check a couple of things.

My questions are...

(1) Is it true that the machine.config changes are only required on the development workstation and will not be required in a deployed production setting?

(2) Is it true that the GAC changes are only required on the development workstation and will not be required in a deployed production setting?

Please advise.

Thank you.

--Mark Kamoski

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39615
Joined: 17-Aug-2003
# Posted on: 24-May-2006 16:00:33   

mkamoski wrote:

Otis, Answer, AnyoneElseWhoKnows--

Please help.

I have two quick questions regarding the templates that include web service support.

As background, note that...

--I downloaded the templates from http://www.LLBLGen.com , >Customer's Area, >3rd Party.

--I have read this current thread.

--I have read the "readme.doc" included with the template download.

While some of my questions were addressed in the threads and documentation, I need to explicity double-check a couple of things.

My questions are...

(1) Is it true that the machine.config changes are only required on the development workstation and will not be required in a deployed production setting?

True. They're only required for the discovery service that builds the classes used during development for the CLIENT. So the changes are required for the machine on which you want to run wsdl.exe (or vs.net and add a webreference).

(2) Is it true that the GAC changes are only required on the development workstation and will not be required in a deployed production setting?

Yes, same as 1)

Frans Bouma | Lead developer LLBLGen Pro
mkamoski avatar
mkamoski
User
Posts: 116
Joined: 06-Dec-2005
# Posted on: 25-May-2006 15:11:07   

All--

FWIW, note the following from MSDN...

Web Services IXmlSerializable Technology Sample

This sample shows how to use IXmlSerializable to control the serialization of custom types in ASP.NET Web Services.

http://msdn2.microsoft.com/en-US/library/h2byscsb.aspx

...so, that is worth checking out, if someone is interested.

I am guessing; but, I think that this is the same sort of thing that the LLBLGen Templates With Web Service Support do in order to solve this issue.

But, I just thought I should mention it here, for completeness.

HTH.

Thank you.

--Mark Kamoski

1  /  2  /  3  /  4